从MySQL中检索下拉列表中的值,其中一个数据与多个数据相关(PHP和MySQL)
我有一个表,其中一个食品id与多个供应商id相关。因此,我需要生成一个结果,下拉菜单可以列出与食品ID相关的供应商ID。 例如,食品id 1与供应商id 1、4和3相关。我需要将所有与食品id 1相关的供应商id放入下拉列表中。其余部分可以按顺序显示,就像食物id 2一样 |FOOD ID | SUPPLIER ID (DROP DOWN LIST) | OPTIONS I want in the drop down ---------------------------------------------------------------------------- |1 | 1 |v| 1, 4 and 3 |2 | 5 |v| 5 我已经尝试了一个多星期了,每次尝试都失败了。请帮帮我,伙计们。我需要与第二个图像相同的输出。该网站不允许我发布图片。很抱歉,伙计们从MySQL中检索下拉列表中的值,其中一个数据与多个数据相关(PHP和MySQL),php,html,mysql,Php,Html,Mysql,我有一个表,其中一个食品id与多个供应商id相关。因此,我需要生成一个结果,下拉菜单可以列出与食品ID相关的供应商ID。 例如,食品id 1与供应商id 1、4和3相关。我需要将所有与食品id 1相关的供应商id放入下拉列表中。其余部分可以按顺序显示,就像食物id 2一样 |FOOD ID | SUPPLIER ID (DROP DOWN LIST) | OPTIONS I want in the drop down -------------------------------------
<?php
require_once('connect.php');
$selectfood= mysql_query("
SELECT foodstock.stock_id, foodstock.foodid, food.food_id, food.food_name, foodstock.quantity, assignfoodtosup.supplierid
FROM foodstock
JOIN food
ON foodstock.foodid=food.food_id
JOIN assignfoodtosup
ON food.food_id=assignfoodtosup.foodid
WHERE foodstock.quantity<10
");
$selectsupplier= mysql_query("
SELECT foodstock.stock_id, foodstock.foodid, food.food_id, food.food_name, foodstock.quantity, assignfoodtosup.supplierid
FROM foodstock
JOIN food
ON foodstock.foodid=food.food_id
JOIN assignfoodtosup
ON food.food_id=assignfoodtosup.foodid
WHERE foodstock.quantity<10
");
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Make Order</title>
</head>
<body>
<form action="#" method="post">
<table border=1>
<tr>
<th id="tdsn">S.No.</th>
<th id="tdfoodid">Food ID</th>
<th id="tdfoodname">Food Name</th>
<th id="tdstockqty">Stock Qty.</th>
<th id="tdorderqty">Order Qty.</th>
<th id="tdsupplierid">Supplier ID</th>
<th id="tdsuppliername">Supplier Name</th>
<th id="tdmorder">Make Order</th>
</tr>
<?php
$count=0;
$suppliercount=0;
$stock_array[]=array();
$result_array[]=array();
while($row = mysql_fetch_array($selectsupplier)){
$suppliercount++;
$result_array[$suppliercount]=$row['supplierid'];
}
while($rowstock = mysql_fetch_array($selectfood)){
$stock_array[] = $rowstock;
$count++;
?>
<tr>
<td><?php echo $count; ?></td>
<td><?php echo $stock_array[$count]['foodid']; ?></td>
<td><?php echo $stock_array[$count]['food_name']; ?></td>
<td><?php echo $stock_array[$count]['quantity']; ?></td>
<td><input type="text" id="orderqty" name="orderqty" style="width:50px"></td>
<td>
<select id="supplierid" name="supplierid">
<option value="<?php echo $result_array[$count]; ?>"><?php echo $result_array[$count]; ?> </option>
</select>
</td>
<td>
</td>
<td><input type="checkbox" id="makeorder" name="makeorder" value="$count"></td>
</tr>
<?php
}
?>
</table>
<input type="submit" id="submit" name="submit" value="Submit">
<br>
</form>
</body>
</html>
伙计们,我有四张桌子
1) suppliers: suppliersID, suppliername.......
2) food: foodid, foodname.......
3) assignfoodtosup:assignfoodtosupid, supplierid, foodid
4) foodstock:foodid, foodname, quantity
问题是,我必须做一张桌子,在那里我必须展示那些数量少于10的食物。我还必须向那些出售这些食品的供应商展示。因为这是我必须实现我所要求的代码的地方,所以就是这里。我可以帮助您理解逻辑;我相信你可以从网上得到语法 数据库表: 1食品id、名称 2供应商标识、食品标识、名称 PHP查询 结果将是一个数组。您需要将此数组循环到下拉代码中 注:存储在供应商表中的食品标识;将在为食物表输入数据时插入。因此,您需要确保表单处理代码已经完成了该规定。它基本上起着连接两者的作用。一个公共参数
希望这有帮助 @stdahal我想建议你一些其他的方法来完成这件事,因为你的逻辑似乎并不完美
<?php
require_once('connect.php');
$selectfood= mysql_query("select foodstock.id,foodstock.food_name,foodstock.quantity,foodstock.foodid from foodstock");
$selectsuppliers = mysql_query("select assignfoodtosup.foodid,assignfoodtosup.supplierid from suppliers join assignfoodtosup on supplierid=suppliersID");
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Make Order</title>
</head>
<body>
<form action="#" method="post">
<table border=1>
<tr>
<th id="tdsn">S.No.</th>
<th id="tdfoodid">Food ID</th>
<th id="tdfoodname">Food Name</th>
<th id="tdstockqty">Stock Qty.</th>
<th id="tdorderqty">Order Qty.</th>
<th id="tdsupplierid">Supplier ID</th>
<th id="tdsuppliername">Supplier Name</th>
<th id="tdmorder">Make Order</th>
</tr>
<?php
$count=0;
$suppliercount=0;
$stock_array[]=array();
$result_array[]=array();
while($row = mysql_fetch_array($selectsuppliers)){
$result_array[$row["foodid"]][] = $row["supplierid"];
}
while($rowstock = mysql_fetch_array($selectfood)){
$count++;
?>
<tr>
<td><?php echo $count; ?></td>
<td><?php echo $rowstock['foodid']; ?></td>
<td><?php echo $rowstock['food_name']; ?></td>
<td><?php echo $rowstock['quantity']; ?></td>
<td><input type="text" id="orderqty" name="orderqty" style="width:50px"></td>
<td>
<select id="supplierid" name="supplierid">
<?php foreach ($result_array[$rowstock['foodid']] as $key => $value) {
?>
<option value="<?php echo $value; ?>"><?php echo $value; ?> </option>
<?php }?>
</select>
</td>
<td>
</td>
<td><input type="checkbox" id="makeorder" name="makeorder" value="$count"></td>
</tr>
<?php
}
?>
</table>
<input type="submit" id="submit" name="submit" value="Submit">
<br>
</form>
</body>
</html>
我希望它能更好地帮助您。只需对代码进行一些更改。我认为最大的问题是,当您编写选择选项时,您没有在名为$result\u数组的供应商数组上循环。在这里,我将一个foreach循环包装到了,以写出每个供应商id选择 另外,我猜在有多个供应商的地方,你会列出重复的食物。因此,我在食品查询中删除了assignfoodtosup JOIN,这样每个供应商的食品就不会重复。并从供应商查询中取出不必要的字段和不必要的食物表联接。该查询可以进一步缩短,因为我猜您不需要将此查询限制为小于10的食物库存量 我还改变了您准备和访问供应商阵列的方式。首先,[]是不必要的。其次,使用foodid链接食品及其供应商,而不是一个计数器,更不容易出错
<?php
require_once('connect.php');
$selectfood= mysql_query("
SELECT foodstock.stock_id, foodstock.foodid, food.food_id, food.food_name, foodstock.quantity
FROM foodstock
JOIN food
ON foodstock.foodid=food.food_id
WHERE foodstock.quantity<10
");
$selectsupplier= mysql_query("
SELECT foodstock.stock_id, foodstock.foodid, assignfoodtosup.supplierid
FROM foodstock
JOIN assignfoodtosup
ON foodstock.foodid=assignfoodtosup.foodid
WHERE foodstock.quantity<10
");
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Make Order</title>
</head>
<body>
<form action="#" method="post">
<table border=1>
<tr>
<th id="tdsn">S.No.</th>
<th id="tdfoodid">Food ID</th>
<th id="tdfoodname">Food Name</th>
<th id="tdstockqty">Stock Qty.</th>
<th id="tdorderqty">Order Qty.</th>
<th id="tdsupplierid">Supplier ID</th>
<th id="tdsuppliername">Supplier Name</th>
<th id="tdmorder">Make Order</th>
</tr>
<?php
$count=0;
$food_suppliers=array();
while($row = mysql_fetch_array($selectsupplier)){
// using the supplierid for both the key and the value to ensure there are no duplicates
$food_suppliers[$row['foodid']][$row['supplierid']]=$row['supplierid'];
}
while($row = mysql_fetch_array($selectfood)){
?>
<tr>
<td><?php echo $count; ?></td>
<td><?php echo $row['foodid']; ?></td>
<td><?php echo $row['food_name']; ?></td>
<td><?php echo $row['quantity']; ?></td>
<td><input type="text" id="orderqty" name="orderqty" style="width:50px"></td>
<td>
<select id="supplierid" name="supplierid">
<?php foreach ( $food_suppliers[$row['foodid']] as $supplierid ) { ?>
<option value="<?php echo $supplierid; ?>"><?php echo $supplierid; ?></option>
<?php } ?>
</select>
</td>
<td>
</td>
<td><input type="checkbox" id="makeorder" name="makeorder" value="$count"></td>
</tr>
<?php
}
?>
</table>
<input type="submit" id="submit" name="submit" value="Submit">
<br>
</form>
</body>
</html>
我已经做了改变。请看看我的密码有什么问题。谢谢你,先生。无意冒犯。我很清楚这个逻辑,但我不知道我在编码时哪里出错了,所以无法得到结果。我已经上传了确切的代码。请参考它,如果可以的话请支持我。再次感谢你。你应该在第一步就发布代码。。不管怎样,欢迎你……谢谢你,先生。但是代码没有起作用。你在我的代码中检查过了吗?@yugesh请看一下我更新的代码,希望这能解决你的问题,但根据你的评论,你似乎是在完成作业之前开始编码的。我在网上对此做了很多研究,但我无法找到解决办法。我从一开始就走错了方向,试图回到赛道是很困难的,因为我把所有的想法都放回了赛道。我应该重新开始,而不是一次又一次地修改代码来让代码正常工作。另外,我只是一个编程新手,缺乏很多技能。此外,我在家里学习,所以这让我更难,因为我没有任何人可以咨询。谢谢你,先生。谢谢你的时间,它成功了!谢谢你,先生。我终于明白了。我已经做了很长一段时间了,也许是因为过度的思考,我没有逻辑地思考。我没有看到那部分逻辑。我没有注意到我也没有循环下载。此外,我的编程技能并不高,因为我只是一个新手。非常感谢。谢谢大家。
<?php
require_once('connect.php');
$selectfood= mysql_query("
SELECT foodstock.stock_id, foodstock.foodid, food.food_id, food.food_name, foodstock.quantity
FROM foodstock
JOIN food
ON foodstock.foodid=food.food_id
WHERE foodstock.quantity<10
");
$selectsupplier= mysql_query("
SELECT foodstock.stock_id, foodstock.foodid, assignfoodtosup.supplierid
FROM foodstock
JOIN assignfoodtosup
ON foodstock.foodid=assignfoodtosup.foodid
WHERE foodstock.quantity<10
");
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Make Order</title>
</head>
<body>
<form action="#" method="post">
<table border=1>
<tr>
<th id="tdsn">S.No.</th>
<th id="tdfoodid">Food ID</th>
<th id="tdfoodname">Food Name</th>
<th id="tdstockqty">Stock Qty.</th>
<th id="tdorderqty">Order Qty.</th>
<th id="tdsupplierid">Supplier ID</th>
<th id="tdsuppliername">Supplier Name</th>
<th id="tdmorder">Make Order</th>
</tr>
<?php
$count=0;
$food_suppliers=array();
while($row = mysql_fetch_array($selectsupplier)){
// using the supplierid for both the key and the value to ensure there are no duplicates
$food_suppliers[$row['foodid']][$row['supplierid']]=$row['supplierid'];
}
while($row = mysql_fetch_array($selectfood)){
?>
<tr>
<td><?php echo $count; ?></td>
<td><?php echo $row['foodid']; ?></td>
<td><?php echo $row['food_name']; ?></td>
<td><?php echo $row['quantity']; ?></td>
<td><input type="text" id="orderqty" name="orderqty" style="width:50px"></td>
<td>
<select id="supplierid" name="supplierid">
<?php foreach ( $food_suppliers[$row['foodid']] as $supplierid ) { ?>
<option value="<?php echo $supplierid; ?>"><?php echo $supplierid; ?></option>
<?php } ?>
</select>
</td>
<td>
</td>
<td><input type="checkbox" id="makeorder" name="makeorder" value="$count"></td>
</tr>
<?php
}
?>
</table>
<input type="submit" id="submit" name="submit" value="Submit">
<br>
</form>
</body>
</html>