使用select选项的值为另一个select的sql where子句

时间:2017-02-25 18:40:45

标签: php html mysql

在同样的情况下,如何从第一个选项框发送值,然后在第二个选项框查询的where子句中使用该值?

即。我选择一个客户端,然后第二个选择框将只显示与该客户端相关的选项。

理想情况下,这将是一个流畅的单页

Client Selection:
<?php               //OPEN DROP DOWN BOX
include("../login/dbinfo.inc.php");
$comm=@mysql_connect(localhost,$username,$password);
$rs=@mysql_select_db($database) or die( "Unable to select database"); 
$sql=   "SELECT DISTINCT ClientCode, ClientName FROM tbl_client ORDER BY ClientCode";
$result = mysql_query($sql);
echo "<select name='ClientCode'>";
while ($row = mysql_fetch_array($result)) {
echo "<option value='" . $row['ClientCode'] ."'>" . $row['ClientName'] ."</option>;
}
echo "</select><br>";   //CLOSE DROP DOWN BOX   

?><br>

Vessel Selection:
<?php               //OPEN DROP DOWN BOX
$client = $_GET["$client"];//assign client code from first drop down to this value & use in query 'WHERE' clause

include("../login/dbinfo.inc.php");
$comm=@mysql_connect(localhost,$username,$password);
$rs=@mysql_select_db($database) or die( "Unable to select database"); 
$sql=   "SELECT VesselName  FROM tbl_import WHERE ClientCode='".$client."' ORDER BY VesselName";
$result = mysql_query($sql);
echo "<select name='VesselName'>";
while ($row = mysql_fetch_array($result)) {
echo "<option value='" . $row['VesselName'] ."'>" . $row['VesselName'] ."</option>";
}
echo "</select><br>";   //CLOSE DROP DOWN BOX                                   
?>

1 个答案:

答案 0 :(得分:4)

PHP是一种服务器端语言 - 所有查询都在浏览器收到之前执行。如果您希望根据您的第一个选择(客户端)更改菜单内容,则您需要在选择客户端后提交表单或使用javascript填充第二个菜单后第一个菜单已收到选择。

第二个注意事项 - 您正在使用mysql函数 - 这些函数已在PHP5中弃用并在PHP7中删除;至少考虑更新代码以使用mysqli函数。

第三个注意事项 - 您将用户数据直接插入到查询中,这意味着您可以打开网站进行SQL注入。您可以通过mysqli或(更好的)pdo函数使用预准备语句和绑定参数来访问您的数据库。