2017-09-24 5 views
0

HTMLフォームから2つのdatetime-localフィールドを取得してSQLデータベースに挿入しようとしていますが、挿入されません。 ユーザーstardateユーザー-終了日日時、ローカルフィールドであり、私はENDDATEとの間の差であるどちらユーザーtotalhours得ることができない - STARTDATEを。メソッドPOSTがdatetime-localフィールドで機能しない

<form role="form" action="sendFdata.php" method="POST"> 
    <div class="row"> 
    <input type="text" name="username"> 
    <input type="text" name="user-role">    
    </div> 
    <div class="row"> 
    <input type="text" name="user-pm"> 
    <select name="user-project"> 
     <option>Text1</option>  
     <option>Text2</option> 
     <option>Text3</option>       
    </select> 
    </div> 
    <div class="row"> 
    <input type="text" name="user-agroup"> 
    <input type="text" name="user-task"> 
    </div> 
    <div class="row"> 
    <input type="datetime-local" name="user-startdate"> 
    <input id="end-time" type="datetime-local" name="user-enddate"> 
    <input type="text" name="user-totalhours" placeholder="Total Hours">    
    </div> 
    <div class="rule"></div> 
    <div class="form-footer"> 
    <button type="submit" name="button-submit">Submit</button> 
    <button type="button">Reset</button> 
    </div> 
</form> 

PHP:?

<?php 
$link = mysqli_connect("localhost","admin","") or die("failed to connect to 
server !!"); 
mysqli_select_db($link,"test"); 

$username=$_POST['username']; 
$userRole=$_POST['user-role']; 
$userPM=$_POST['user-pm']; 
$userProject=$_POST['user-project']; 
$useraGroup=$_POST['user-agroup']; 
$userTask=$_POST['user-task']; 
$userStartDate=$POST['user-startdate']; 
$userEndDate=$POST['user-enddate']; 
$userTotalHours=$POST['user-totalhours']; 

$insqDbtb="INSERT INTO `test`.`persons` 
(`UserName`, `Role`, `PM`, `Product`, `ActivityGroup`, `Task`, `StartDate`, 
`EndDate`, `TotalHours`) VALUES ('$username', '$userRole', '$userPM', 
'$userProject', '$useraGroup', '$userTask', '$userStartDate', '$userEndDate', 
'$userTotalHours')"; 
mysqli_query($link,$insqDbtb) or die(mysqli_error($link)); 

>

答えて

0

まず日時ローカルタイプのための正しいHTML属性ではありません、あなたは、日付や時刻を使用する必要があります。

があり、それを参照してください。あなたはプリペアドステートメントを使用していないので、https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input

は、その後、あなたのMySQL文は、セキュリティ上のリスクがあります。あなたはそれを調べなければならない。

最後に、要求をデータベースに送信する前にデバッグする必要があります。

+0

'datetime-local'は、HTML5の入力用の型です。あなたのリンクでさえ... –

+0

ああ、私は日時については知っていましたが、datetime TILについてはわかりませんでした。あなたは$ POSTで正しい答えがあると思います。 – hyptos

0

要素タイプ "datetime-local"の属性は、読み込みおよび入力するデータを作成しません。特にFirefoxまたはIE12(およびそれ以前のバージョン)で見た場合。ページのユーザーが日付と時刻を入力する必要がある入力です。

入力を正しく使用していると仮定します。データベースのどの列のデータ型ですか?それは格納されなければならない制限された入力であるため、 '0000-00-00 00:00:00'を処理できなければなりません。

1

あなたは$POST['user-startdate']です。ここでは$_POST['user-startdate']です。

しかし、それ以外には、definitlyはSQLクエリを作成する準備文を使用する必要があります。 How can I prevent SQL injection in PHP?

関連する問題