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));

从我读过的内容来看,它需要一个数组,但我不知道该怎么做。有人可以帮我修改表单和查询以使其工作吗?

谢谢。

4

3 回答 3

3

只需将表单的字段重命名为喜欢filed_name[],然后使用循环即可执行多次插入。

for ($i = 0; $i < count($_POST['location']); $i++){
    //Do your insert code. 
}
于 2013-08-16T00:26:05.677 回答
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 运行它。但我相信这是你想要完成的。

于 2013-08-16T00:48:29.150 回答
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.

}
于 2013-08-16T00:50:13.723 回答