我的代码正在运行一个循环,其中添加了文本区域,用户可以在其中输入查询,它所在的div中还包含一个下拉列表,其中包含可用于运行这些查询的服务器列表。起初,它仅能正常工作第一次迭代,并且在下一个下拉列表中完全不显示列表,但是当我弄乱代码并将查询粘贴到循环内时,所有下拉列表均已填充,但第一个textarea的服务器ID停止正确发布,而是发送了数据库中当前的值。换句话说,它不会正确更新。
<?php
if(mysqli_num_rows($result_query) > 0){
while($rowq = mysqli_fetch_assoc($result_query)){
$sql_servers = "SELECT id, name, address FROM servers ORDER BY id ASC";
$result_servers = mysqli_query($link, $sql_servers);
?>
<table>
<form name="formStep" method="post" action="">
<br>
<tr>
<textarea class="form-control scrollabletextbox" id="query<?php echo $rowq['step']?>" name="query<?php echo $rowq['step']?>"><?php echo $rowq['query'];?></textarea>
</tr>
<tr>
<td width="25%" style="vertical-align:middle;"><select id="server" name="server" class="form-control input-md">
<?php
if (mysqli_num_rows($result_servers) > 0) {
while($rows = mysqli_fetch_assoc($result_servers)){ ?>
<option value="<?php echo $rows["id"];?>" <?php if($rows['id']==$row_query2['id_server']) echo 'selected=\"selected\"' ?> ><?php echo $rows["name"];?></option>
<?php
}
}?>
</select>
</td>
<td style="padding:10px;"><input type="submit" name="submit" formaction="save.php?i=4&id=<?php echo $id; ?>&s=<?php echo $rowq['step'];?>" class="btn btn-block btn-primary" value="<?php echo $lableSave; ?>"></td>
</tr>
<?php
}
}?>
</form>
</table>
如果我在save.php中回显服务器变量,它将不会为下拉列表中的新选定值进行更新,但将适用于该循环的所有后续迭代。
任何解决此问题或上一个方法的方法,在我开始尝试修改代码直到它起作用之前,将不胜感激。