我希望用一个数据库中的名称列表填充一个下拉字段,当从该下拉列表中选择一个选项时,它将在行中发布所有值,属于所选择的选项。
这可能很难描述/理解,所以为了帮助说明,这是我的表格行:
然后我继续填充下拉列表,并将其值与发布的所选选项相关联
//////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>
在上面的代码中,这适用于一个值,例如卡路里,但我需要更多的值。
例如,如果选择健康鸡蛋和薯条,则该值将发布218,因为此循环仅关联卡路里和名称。
我尝试了各种各样的事情,比如这篇帖子:How to get multiple values from a single <select> variable in HTML/PHP?
但是foreach错误。
我怎么能像我做的那样,但是从一个选定的选项中存储多个值?
谢谢
答案 0 :(得分:0)
嗯,我想我理解你的问题,但我认为你想要使用的方式不可用,也许我建议你把id放在&lt;中的选项值中。选择&GT;然后使用php,您可以从数据库中获取所有数据。 对我来说这是最好的方式,但如果你想像你展示的那样做,你可以创建一个字符串,例如:
<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。
如果您需要更多帮助,请告诉我。问候,祝你有愉快的一天。