0

我在 MySQL db 中有两个表,vendormenu.

vendor table
vendor_id(Primary)   vendor_name

menu table
menu_id(Primary)     menu_details    cost     vendor_id(Foreign)

我需要创建一个组合框,它vendor_name动态地从 MySQL 数据库中获取实例。从组合框中选择时,vendor_name应从 MySQL 数据库显示菜单表(HTML 和表应处于可编辑模式)。我是 MySQL 和 PHP 的新手。所以请帮我处理这个标准。

下面是我正在处理的代码:

<html><body>
<select name="vendor" id="vendor">
<option value="Choose">Choose</option>
<?php $conn = mysql_connect('localhost','root','');
if (!$con) { die('Could not connect: ' . Mysql_error()); }
mysql_select_db('project',$conn);
$query = "select vendor_id,vendor_name from vendor";
$result = mysql_query($query,$conn);
while($fetch= mysql_fetch_array($query)){
echo "<option>".$row[1]."</option>";
}?>
</select>
</body></html>
4

1 回答 1

0

如果我对你的理解正确,那么这应该做你所追求的事情。它显示vendor表中的组合框,如果您更改选择,它会重新加载页面并显示与表中的 vendor_id 对应的菜单menu

<html>
<body>
<?php 
// connecting to the server
$conn = mysql_connect('localhost','root','') or die('Could not connect: ' . Mysql_error());
// selecting the database
mysql_select_db('project',$conn) or die("db error: ".mysql_error());
// is menu_id set?
if (isset($_GET['menu']) && intval($_GET['menu'])>0) {
    // if yes, then query the menu items
    $query = "select menu_id, menu_details, cost, vendor_id from menu where vendor_id=".intval($_GET['menu']);
    $result = mysql_query($query, $conn) or die("SQL error: ".mysql_error());
    while ($row = mysql_fetch_assoc($result)) {
        // print the menu items
        print_r($row);
    }
}
// select the vendor combobox
$query = "select vendor_id,vendor_name from vendor";
$result = mysql_query($query,$conn);

// If the vendor selection has changed then reload the page
?>
<select name="vendor" id="vendor" onchange="document.location='index.php?menu='+this.options[this.selectedIndex].value;">
<option value="Choose">Choose</option>
<?php
// loop through the results
while($fetch= mysql_fetch_assoc($query)){
    echo "<option value=\"".$row['vendor_id']."\">".$row['vendor_name']."</option>";
}
?>
</select>
</body>
</html>

假设文件名为index.php. (查看选择onchange=""文件名。如果您有不同的文件名,则需要更改它。

于 2012-11-19T07:59:44.047 回答