PHP-使用下拉菜单从动态列表的每一行捕获多个变量

PHP-使用下拉菜单从动态列表的每一行捕获多个变量,php,mysql,Php,Mysql,我有一个植物列表,它是mysql搜索的结果。列表中将包含未定义数量的植物。此列表的每一行中都有一个不同的植物,有两个选择下拉列表,一个用于选择植物数量,另一个用于选择植物大小 因此,此工厂列表的每一行都有4个变量,我希望在单击submit按钮时捕获并更新数据库表:工厂ID、工厂名称、数量和大小 我已经大大简化了下面的代码,因为这实际上代表了大约200行代码。因此,我只包含了传达我的问题所必需的内容 下面的代码工作得很好,只给我列表最后一行的值。我意识到我在这里处理的是一组数组。我已经尝试了几个小

我有一个植物列表,它是mysql搜索的结果。列表中将包含未定义数量的植物。此列表的每一行中都有一个不同的植物,有两个选择下拉列表,一个用于选择植物数量,另一个用于选择植物大小

因此,此工厂列表的每一行都有4个变量,我希望在单击submit按钮时捕获并更新数据库表:工厂ID、工厂名称、数量和大小

我已经大大简化了下面的代码,因为这实际上代表了大约200行代码。因此,我只包含了传达我的问题所必需的内容

下面的代码工作得很好,只给我列表最后一行的值。我意识到我在这里处理的是一组数组。我已经尝试了几个小时的许多解决方案,现在只需要寻求帮助。提前感谢您的慷慨帮助。这方面我还是个新手

... mysql query that creates this plant list result

if($r) {

echo '<form action="plantlist.php" method="POST">';

   while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC))) {

     echo '<table>
              <tr>
                 <td>' . $plant_id . '</td>
                 <td>' . $plant_name . '</td>
                 <td>
                    <select name="count" value="' . $count . '"> 
                       <option value="1">1</option>
                       <option value="2">2</option>
                       <option value="3">3</option>
                       <option value="4">4</option>
                    </select>
                 </td>
                 <td>
                    <select name="size" value="' . $size .'">  
                       <option value="1">1 foot</option>
                       <option value="2">2 feet</option>
                       <option value="3">3 feet</option>
                       <option value="4">4 feet</option>
                    </select>
                 </td>
              </tr>
           </table>';

}
 echo '<input type="submit" name="Submit" value="" />
       </form>';

$row_results = array($plant_id, $plant_name, $count, $size);

}  // end while loop

$whole_list_results = array($row_results);

       foreach($whole_list_results as $result) {

            $q = "UPDATE drip_zones SET count = '$count', 
                  size = '$size' WHERE plant_id = '$plant_id' 
                  AND plant_name = '$plant_name'";

            $r = @mysqli_query ($db, $q); // run query
       }
。。。创建此植物列表结果的mysql查询
如果($r){
回声';
而($row=mysqli\u fetch\u数组($r,mysqli\u ASSOC))){
回声'
“.$plant_id”
“.$plant_name”
1.
2.
3.
4.
1英尺
2英尺
3英尺
4英尺
';
}
回声'
';
$row\u results=数组($plant\u id,$plant\u name,$count,$size);
}//在循环结束时结束
$whole_list_results=数组($row_results);
foreach($result的整个列表结果){
$q=“更新滴水分区设置计数='$count',
大小=“$size”,其中plant\u id=“$plant\u id”
和plant_name='$plant_name';
$r=@mysqli_query($db,$q);//运行查询
}

首先,似乎

$row_results = array($plant_id, $plant_name, $count, $size);
在if块中时在外部

第二,您应该将其更改为:

$row_results[] = array($plant_id, $plant_name, $count, $size);
如果:

$row_results = array();
然后,您可以使用:

foreach($row_results as $result) {
  echo $result[0];
  echo $result[1];
  ...

在最后一行,您将覆盖$row\U results变量,这就是为什么您总是得到最后一行

改为:

 $row_results = array();
 while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC))) {
以及:


然而,在这个脚本片段中,您似乎有一些选择框,它们不会做任何事情。我想这是在脚本的其他地方处理的。事实上,在它当前的状态下,这只会存储它已经拥有的东西,所以实际上你所问的没有任何意义…

谢谢你,@PBorek。我试试看。谢谢你,@user3238482。我喜欢您在更新代码中包含修订版。我将尝试一下,正如PBorek指出的,$row_results[]=array(…位。需要移动到while循环中谢谢你,@user3238482。我将此标记为正确答案。所有答案对我都有效。但你的答案进一步帮助了mysql更新代码。这非常有用。我现在很激动。这很有效,@kylehyde215。谢谢。我很感激。
 $row_results = array();
 while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC))) {
  echo '<input type="submit" name="Submit" value="" />
   </form>';

  $row_results[] = array('plant_id' => $plant_id, 
                         'plant_name' => $plant_name, 
                         'count' => $count, 
                         'size' => $size);
   foreach($row_results as $result) {

        $q = "UPDATE drip_zones SET count = '". $result['count'] ."', 
              size = '". $result['size']. "' WHERE plant_id = '" .$result['plant_id'] ."' 
              AND plant_name = '" .$result['plant_name'] ."'";

        $r = @mysqli_query ($db, $q); // run query
   }