1

我正在尝试使用下拉列表创建一个页面,我希望用户添加他想要的电影院名称并通过 mysql 查询将其发送到数据库。

现在,这就是我从数据库中获取下拉列表的方法(这部分正在工作)

<select name="cinema_id" id="cinemaid">
    <?php
    require('../classes/cinema_class.php');
    $cinemas = cinema::get_cinemas_name(); 
$cinema_id = $cinema['cinema_id'];
$cinema_name = $cinema['cinema_name'];

    foreach($cinemas as $cinema)
    {
        $selected = '';
        if( $cinema['cinema_id'] == $_GET['cinema_id'])
        {
            $selected = 'select="selected"';
        }

        echo "<option {$selected} >
            {$cinema['cinema_name']}
            </option>";
    }
    ?>
</select>

这是要更新的mysql查询

<?php
$theaterid=$_POST['theaterid'];
$theatername=$_POST['theatername'];
$cinemaid=$_POST['cinemaid'];
if(empty($theatername)){  
echo  "Theater Name is a must";
}
else{
$update_movie=mysql_query("UPDATE `memoire`.`theater` 
            SET `theater_name`= '$theatername',`cinema_id`= '$cinemaid' //the $theatername is working, i think the $cinemaid is wrong
            WHERE `theater_id`='$theaterid'");
if($update_movie)
{ echo "Add Succesfull";}
else
{ echo "error in registration".mysql_error(); }
}?>

我认为问题是如何调用下拉列表中的值并将其发送到更新

对了,页面打印:error in registrationCannot add or update a child row: a foreign key constraint failed ( memoire. theater, CONSTRAINT theater_ibfk_1FOREIGN KEY ( cinema_id) REFERENCES cinema( cinema_id) ON DELETE CASCADE ON UPDATE CASCADE)

4

4 回答 4

0

我认为cinema_id 是当前的cinema_name。更改此行:

echo "<option {$selected} >

echo "<option {$selected} value='{$cinema[cinema_id]}' >
于 2013-04-20T16:25:42.513 回答
0

我想现在我可以问一个更好的问题。在我的数据库中,我需要添加cinema_id。下拉列表给了我cinema_name ...所以我需要用户选择cinema_name 但我需要将它的cinema_id 添加到更新查询中

谢谢你

于 2013-04-20T16:44:42.380 回答
0

这个问题与您上面的代码片段无关,而是您如何在数据库中设置外键。您能否发布您在上面引用的表的结构以及电影院表,指出您如何设置参考键?

于 2013-04-20T16:51:06.023 回答
0

在第一个片段中,在您的 内部,您需要有一个 value 属性。

echo "<option value='{$cinema['cinema_id']}' {$selected} >
            {$cinema['cinema_name']}
            </option>";

这至少会将正确的数据发布到服务器。在第二个片段中,您引用的是 html 选择的 id,而不是名称。你应该使用这个名字。

$cinemaid=$_POST['cinema_id']; // notice the underscore

一旦发布,这应该会在服务器上为您提供正确的值。

附带说明一下,您的脚本对SQL 注入跨站点脚本开放。你可能想看看那些。

于 2013-04-20T16:27:22.503 回答