Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从MySQL中检索下拉列表中的值,其中一个数据与多个数据相关(PHP和MySQL)_Php_Html_Mysql - Fatal编程技术网

从MySQL中检索下拉列表中的值,其中一个数据与多个数据相关(PHP和MySQL)

从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 -------------------------------------

我有一个表,其中一个食品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 我已经尝试了一个多星期了,每次尝试都失败了。请帮帮我,伙计们。我需要与第二个图像相同的输出。该网站不允许我发布图片。很抱歉,伙计们

<?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>