我有一个 PHP 表单,它显示 MySQL 表中的数据。每行显然都有不同的数据,我想要做的是有一个下拉列表,显示与每行中的数据条目相关的数据。
例如,假设我有两个表。 Fruit 和 Fruit_Colors,如下:
因此,如果我的 PHP 表单显示如下,名为“fruits”的 MySQL 数据将显示“Fruit”列中的数据。然后,根据“Fruit”字段中的 PHP 表单输出值,从 Fruit_Colors 表中获取颜色。所以每行的下拉列表都会不同。
我的 PHP 表单语法是:
<table id="hor-minimalist-a">
<tr>
<th>ID</th>
<th>Fruit</th>
<th>Color</th>
</tr>
<? while($row = $fruits->fetch(PDO::FETCH_ASSOC)) { ?>
<tr>
<td><? echo $row['id']; ?></td>
<td><? echo $row['fruit']; ?></td>
<td><SELECT NAME="fruitcolor" id="fruitcolor">
<OPTION VALUE=0 >
*// what goes here???*
</option>
</SELECT>
</td>
</tr>
<? } ?>
</table>
任何关于如何完成此任务的建议将不胜感激。请记住,该表最多可以有 50 行,因此需要一种动态方式将“fruit”值传递到下拉列表。
我知道下拉列表总体的语法是:
function fruitcolor_dropdown($db)
{
$result = $db->query("select color from Fruit_Color where Fruit=*'outputted value'*");
return $result;
}
$colors= fruitcolor_dropdown($db);
while($row = $colors->fetch(PDO::FETCH_ASSOC)) {
$color=$row["color"];
$optionsfruitcolors.="<OPTION VALUE=\"$color\">".$color;
}
一如既往地感谢您的建议。感谢和问候。
最佳答案
当您可以在单个查询中执行两次连接和触发查询时,这将是个坏主意 - 你可以看到demo
$query = "select f.*,group_concat(color SEPARATOR '|') as fcolor from fruit F Left join fruit_color fc using (fruit) group by fc.fruit";
上面是您的查询,您将像下面这样循环它:
<? while($row = $fruits->fetch(PDO::FETCH_ASSOC)) { ?>
<tr>
<td><? echo $row['id']; ?></td>
<td><? echo $row['fruit']; ?></td>
<td><SELECT NAME="fruitcolor" id="fruitcolor">
<OPTION VALUE=0 >
<?php
$array = explode("|", $fcolor);
$count = count($array);
for($loop=0;$loop<$count;$loop) {
echo "<option>".$array[$loop]."</option>";
}
?>
</option>
</SELECT>
</td>
</tr>
<? } ?>
关于php mysql 下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14139405/