我正在尝试使用下拉列表创建一个页面,我希望用户添加他想要的电影名称并通过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(); }
}?>
我认为问题是如何调用下拉列表中的值并将其发送到更新
顺便说一下,页面打印:
registration中的错误无法添加或更新子行:外键约束失败(memoire
。theater
,CONSTRAINT theater_ibfk_1
FOREIGN KEY(cinema_id
)REFERENCES cinema
( cinema_id
)ON UPETE CASCADE ON UPDATE CASCADE)
答案 0 :(得分:0)
我认为cinema_id是当前的cinema_name。改变这一行:
echo "<option {$selected} >
到
echo "<option {$selected} value='{$cinema[cinema_id]}' >
答案 1 :(得分:0)
在第一个代码段中,您需要拥有一个值属性。
echo "<option value='{$cinema['cinema_id']}' {$selected} >
{$cinema['cinema_name']}
</option>";
这至少会将正确的数据发布到服务器。在第二个片段中,您引用的是html select的id,而不是名称。你应该使用这个名字。
$cinemaid=$_POST['cinema_id']; // notice the underscore
这应该会在发布后在服务器上为您提供正确的值。
作为旁注,您的脚本向SQL Injection和Cross-Site Scripting开放。你可能想看看那些。
答案 2 :(得分:0)
我想我现在可以问一个更好的问题了。 在我的数据库中,我需要添加cinema_id。 下拉列表给我cinema_name ...所以我需要用户选择cinema_name但是我需要将它的cinema_id添加到更新查询
谢谢
答案 3 :(得分:0)
此问题与您上面的代码段无关,而是您在数据库中设置外键的方式。你可以发布你上面引用的表的结构以及电影表,指出你如何设置你的参考键吗?