2013-08-16 59 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. 

}