2013-08-16 89 views
2

我有一個表格將數據上傳到多個MySQL表格,其中一部分需要四個相同的部分將視頻位置數據上傳到一個表格。所有四個視頻部分不會總是被填寫,有時它們可​​能全部留空,然後任何數字最多四個數據。下面是顯示一個視頻上傳位置的形式的一部分,這需要出現四次的形式:從一個表格插入多條記錄

<tr> 
    <td>Video 1:</td> 
    <td></td> 
</tr> 
    <tr> 
     <td>Location</td> 
     <td><input type="text" name="location"></td> 
    </tr> 
    <tr> 
     <td>Park Video</td> 
     <td><input type="checkbox" name="park_id_video" 
        value="<?=$park_id?>">Park Video</td> 
    </tr> 
    <tr> 
     <td>Ride</td> 
     <td> 
      <select name="ride_id_video"> 
      <option value="">Select Ride</option> 
      <?php echo $options ?> 
      </select> 
     </td> 
</tr> 

下面顯示我使用,將使用這個典型的插入查詢。我從來不需要插入多個這樣的記錄,但我不確定如何做,因此可以在一個查詢中上傳所有四組數據。而且,如果四組數據中的任何一組都是空白,則不會插入空白記錄。

$news_id = $pdo->lastInsertId() ; 
    $location = $_POST['headline']; 
    $park_id_video = $_POST['park_id_video']; 
    $ride_id_video = $_POST['ride_id_video']; 

    $query4 = $pdo->prepare('INSERT INTO tpf_videos 
            (location, park_id, ride_id, news_id) 
          VALUES (?, ?, ?, ?)'); 
    $query4->execute(array($location, $park_id, $ride_id, $news_id)); 

從我看過它需要一個數組,但我不知道如何做到這一點。有人可以幫我修改表單和查詢,使其工作?

謝謝。

+0

只是嘗試。它工作嗎? – michi

+0

如果僅僅是爲了表單的片段,上面的方法就可以工作,但是我還有其他三個相同的片段也需要通過相同的查詢上傳,我不知道如何將它們分開並最好地傳遞數據。 – user2574794

回答

3

只需重命名你的表單字段喜歡filed_name[],然後使用一個循環,你都能夠執行多個插入。

for ($i = 0; $i < count($_POST['location']); $i++){ 
    //Do your insert code. 
} 
+0

感謝您的回覆。我得到一個錯誤,說'解析錯誤:語法錯誤,意外的'{',期待')''任何想法? – user2574794

+1

只是爲了檢查表單名稱應該是這樣的'name =「url []」'或'name =「url」[]' – user2574794

+1

表單的元素名稱應該是name =「someName []」NOT name =「someName 「[]。 – SaidbakR

1

HTML實例

<tr> 
    <td>Video 1:</td><td>&nbsp</td> 
</tr> 
<tr> 
    <td>Location</td><td><input type="text" name="videos[1][location]"></td> 
</tr> 
<tr> 
    <td>Park Video</td><td><input type="checkbox" name="videos[1][park_id_video]" value="<?=$park_id?>">Park Video</td> 
</tr> 
<tr> 
    <td>Ride</td> 
    <td> 
     <select name="videos[1][ride_id_video]"> 
      <option value="">Select Ride</option> 
      <?php echo $options ?> 
     </select> 
    </td> 
</tr> 

<tr> 
    <td>Video 2:</td><td>&nbsp</td> 
</tr> 
<tr> 
    <td>Location</td><td><input type="text" name="videos[2][location]"></td> 
</tr> 
<tr> 
    <td>Park Video</td><td><input type="checkbox" name="videos[2][park_id_video]" value="<?=$park_id?>">Park Video</td> 
</tr> 
<tr> 
    <td>Ride</td> 
    <td> 
     <select name="videos[2][ride_id_video]"> 
      <option value="">Select Ride</option> 
      <?php echo $options ?> 
     </select> 
    </td> 
</tr> 

後端PHP的一個插件。

$news_id = $pdo->lastInsertId() ; 
$videos = $_POST['videos']; 
$inserts = array(); 
$args = array(); 
foreach ($videos as $video) { 
    $vid_args = array(
     $video['location'], 
     $video['park_id_video'], 
     $video['ride_id_video'], 
     $news_id 
    ); 

    $inserts[] = "(?,?,?,?)"; 
    $args = array_merge($args, $vid_args); 
} 

$sth = $pdo->prepare('INSERT INTO tpf_videos (location, park_id, ride_id, news_id) VALUES ' . implode(',', $inserts)); 
$sth->execute($args); 

這裏可能有語法錯誤或兩個。我沒有通過PHP運行它。但我相信這是你想要完成的。

1
<tr> 
<td>Video 1:</td> 
<td></td> 
</tr> 
<tr> 
    <td>Location</td> 
    <td><input type="text" name="location[1]"></td> 
</tr> 
<tr> 
    <td>Park Video</td> 
    <td><input type="checkbox" name="park_id_video[1]" 
       value="<?=$park_id?>">Park Video</td> 
</tr> 
<tr> 
    <td>Ride</td> 
    <td> 
     <select name="ride_id_video[1]"> 
     <option value="">Select Ride</option> 
     <?php echo $options ?> 
     </select> 
    </td> 
</tr> 

for ($i = 0; $i < count($_POST['location']); $i++{ 
    //Do your insert code. 

}