我希望用数据库中的名称列表填充下拉字段,当从该下拉列表中选择一个选项时,它将在该行中发布属于该所选选项的所有值。
这可能很难描述/理解,所以为了帮助说明,这是我的表格行:
然后我继续填充下拉列表,并将其值关联到发布的任何选定选项
//////db_conx is db connection //////main_meal is table name
<form action="#" method="post">
<?php
$dropdown = $db_conx->query("SELECT * FROM main_meal") or die ("somethings broken");
while($array[] = $dropdown->fetch_object());
//echo '<option value ="'.$record['Mname'].'">'.$record['Mname'].'"</option>';
array_pop($array);
?>
<select name="changeCal">
<?php foreach($array as $option) :?>
<!--//get chosen value in drop down, and get its calories-->
<option value="<?php echo $option->calories;?>"><?php echo $option->Mname; ?></option>
<?php endforeach; ?>
</select>
这对上述代码中的一个值(例如卡路里)非常有效,但我需要更多值。
例如,如果选择 Healthy egg and chips,则该值将显示为 218,因为此时循环仅关联卡路里和名称。
我尝试了很多事情,比如这篇文章:How to get multiple values from a single <select> variable in HTML/PHP?
但是foreach错误。
我怎样才能做一些与我所做的类似的事情,但存储来自一个选定选项的多个值?
谢谢
最佳答案
嗯,我想我明白你的问题,但我认为你想使用的方式是不可用的,也许我建议你将id放在
<option value="id:5_calories:258_protein:11g">Healthy eggs & Chips</option>
你的 php 应该是这样的:
echo '<option value="id:'.$option->id.'_calories:'.$option->calories.'_protein:'.$option->protein.'">'.$option->Mname.'</option>';
您可以使用您想要放置的其他值来增大字符串。 在后端发送选择时,您可以使用以下命令捕获数据:
$myArray = explode("_", $_POST["changeCal"]);
然后你会得到一个数组,其值如下:
$myArray[0]; // id:5
$myArray[1]; // calories:258
$myArray[2]; // protein:11g
然后如果你需要卡路里,你可以像这样爆炸:
$calories = explode(":",$myArray[1]);
你将拥有:
$calories[0]; //calories
$calories[1]; //258 <= Here are the calories.
也许如果你想那样做,这可能是最简单的方法,但我建议发送 ID。
如果您需要更多帮助,请告诉我。此致,祝你有美好的一天。
关于php - 在一个选项中从数据库发布多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23433629/