我有一个植物列表,它是mysql搜索的结果。该列表中有未定义的植物数量。该列表的每一行都有一个不同的植物,有两个选择下拉列表,一个用于选择植物数量,一个用来选择植物大小。
因此,该工厂列表的每一行都有4个变量,当单击提交按钮时,我想捕获并更新数据库表:工厂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
}
在最后一行覆盖$row_results变量,这就是为什么总是得到最后一行。
更改为:
$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
}
然而,您似乎有一些选择框,它们在这个脚本片段中不会做任何事情。我想这是在剧本的其他地方处理的。事实上,在它目前的状态下,这只会存储它已经拥有的东西,所以实际上你所要求的没有任何意义。。。
首先,
$row_results = array($plant_id, $plant_name, $count, $size);
在外部while(在if块中)。
其次,您应该将其更改为:
$row_results[] = array($plant_id, $plant_name, $count, $size);
并且可能在之前定义它,如果:
$row_results = array();
然后,您可以使用:
foreach($row_results as $result) {
echo $result[0];
echo $result[1];
...
$whole_list_results = array();
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC))) {
// ...
$row_results = array($plant_id, $plant_name, $count, $size);
$whole_list_results[] = $row_results;
} // end while loop