在一个选项中从数据库发布多个值

时间:2014-05-02 17:19:18

标签: php jquery mysql

我希望用一个数据库中的名称列表填充一个下拉字段,当从该下拉列表中选择一个选项时,它将在行中发布所有值,属于所选择的选项。

这可能很难描述/理解,所以为了帮助说明,这是我的表格行:

db structure

然后我继续填充下拉列表,并将其值与发布的所选选项相关联

//////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错误。

我怎么能像我做的那样,但是从一个选定的选项中存储多个值?

谢谢

1 个答案:

答案 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。

如果您需要更多帮助,请告诉我。问候,祝你有愉快的一天。