2015-11-02 96 views
1

這是我的動態表格行的html代碼。這通過單擊添加新按鈕來複製表格字段。問題是我無法將所有填充的數據插入到數據庫中。如果你能幫助我,那會很好。非常感謝。如何將動態表格行數據一次性插入到數據庫中

<!-- Time&Task --> 

        <div class="box-body"> 
        <div class="form-group"> 
         <label class="col-sm-2 control-label"></label> 
         <div class="col-sm-10"> 

         <br> 
     <table class="table table-striped" id="maintable" width="50%" cellpadding="0" cellspacing="0" class="pdzn_tbl1" border="0px"> 
     <tr> 
       <th>Time Start:</th> 
       <th>Time End:</th> 
       <th>Task:</th> 
       <th>Comment:</th> 
     </tr> 

     <tr class="rows"> 
      <td style="padding:5px;"> 
       <input type="time" name="item[0][timestart]" /> 
      </td> 
      <td style="padding:5px;"> 
       <input type="time" name="item[0][timeend]" /> 
      </td> 
      <td style="padding:5px;"> 
       <input type="text" name="item[0][tasks]" /> 
      </td> 
      <td style="padding:5px;"> 
       <input type="text" name="item[0][comment]" /> 
      </td> 
     </tr> 

    </table> 
    <div id="add_new">ADD NEW</div> 


    <?php 
if (isset($_POST['item']) && is_array($_POST['item'])) { 
    $items = $_POST['item']; 
    $i = 0; 
    foreach($items as $key => $value) { 
     echo 'Item '.$i++.': '.$value['timestart'].' '.$value['timeend'].' '.$value['tasks'].' '.value['comment'].'<br />'; 
    } 
} 
?> 

         </div> 
        </div> 
        </div><!-- /.box-body --> 

這是我插入SQL查詢。這是問題。我不知道如何循環插入數據庫。謝謝。 :d

<?php 
    if (isset($_POST['data']) && !empty($_POST['data'])) { 

    $timestart = htmlspecialchars($_POST['timestart']); 
    $timeend = htmlspecialchars($_POST['timeend']); 
    $tasks = htmlspecialchars($_POST['tasks']); 
    $comment = htmlspecialchars($_POST['comment']); 

    include('DBConnect.php'); 


     $SQL = "INSERT INTO TSTable (timestart,timeend,tasks,comment) VALUES ('$timestart','$timeend','$tasks','$comment')"; 

    if (mysqli_query($conn, $SQL)) { 

} else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
} 
    } 

!大家好,我已經找到了解決方案。這是正確的代碼。我希望它能幫助需要它的人。 html仍然是一樣的,只有sql查詢部分需要修復。


if (isset($_POST['data'])) { 

    $timestart = $_POST['timestart']; 
    $timeend = $_POST['timeend']; 
    $tasks = $_POST['tasks']; 
    $comment = $_POST['comment']; 

    include('DBConnect.php'); 

$count= count($timestart); 
for ($i=0; $i< $count; $i++){ 
    if($timestart[$i] != null || !empty($timestart[$i])){ 

     $SQL = "INSERT INTO TSTable (timestart,timeend,tasks,comment) VALUES ('$timestart[$i]','$timeend[$i]','$tasks[$i]','$comment[$i]')";  
} 
if (mysqli_query($conn, $SQL)) { 

} else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
} 
} 

    } 
+0

http://stackoverflow.com/questions/11483799/php-mysql-dynamic-prepared-statement-with-insert-update-query –

回答

0

這裏有幾件事情,會讓你的生活更容易,如果改變了。

具有相同名稱的輸入元素將按照它們出現的順序以數組形式提交。標準的程序是像這樣佈局你的html(爲簡潔起見,刪除了一些字段);

<td><td><input name=timestart><input name=timeend><input name=tasks></td></tr> 
<td><td><input name=timestart><input name=timeend><input name=tasks></td></tr> 
<td><td><input name=timestart><input name=timeend><input name=tasks></td></tr> 
... etc 

這會給你一個帖子結構,如;

Array 
(
[timestart] => Array 
    (
     [0] => timestart 1 
     [1] => timestart 2 
     [2] => timestart 3 
    ) 

[timeend] => Array 
    (
     [0] => timeend 1 
     [1] => timeend 2 
     [2] => timeend 3 
    ) 

[task] => Array 
    (
     [0] => task 1 
     [1] => task 2 
     [2] => task 3 
)); 

並插入;

$timestart = $_POST['timestart']; 
$timeend = $_POST['timeend']; 
$task = $_POST['task']; 

for($i=1 ; $i < count($timestart) ; $i++) 
{ 
    $sql = "INSERT INTO TSTable VALUES($timestart[$i],$timeend[$i],$task[$i]);" 
    ... more code goes here.. 
} 
+0

嗨。還是行不通。但感謝您的答案。 :D – Sam

+0

何時'具有相同名稱的輸入元素將按照它們出現的順序作爲數組提交。真的嗎? – chris85

+1

@ chris85這就是當有人試圖使用不起作用的代碼時會發生什麼,呃? ;-) –

相關問題