[英]PHP “Do” Loop Within a “For” Loop
我需要以表格形式在每行中包含多个房间的多个房间。 到目前为止,这是我的代码:
<?php for ($i=1; $i<=$No_of_rooms; $i++) {?>
<tr class="formspace">
<td class="formleft">Room <?php echo $i ?></td>
<td>
<select name="roomtype[<?php echo $i ?>]">
<?php do { ?>
<option value="<?php echo $row_room['roomtype'] ?>"><?php echo $row_room['room type'] ?></option>
<?php } while ($row_room = mysql_fetch_assoc($room)) ;?>
</select>
</td>
</tr>
<?php }?>
第一行显示正确,但随后的下拉列表为空。 看起来好像mysql_fetch_assoc在第一次运行后就“过期”了,并且不再起作用。 显然,我不想为每一行重复mySQL查询,那么我该怎么做呢?
提前致谢...
我建议您先将MySQL结果保存到数组中,然后反复遍历。 或者,或者一次生成选项的HTML,将其另存为字符串,然后将其打印到所有选择框中。 它们将始终相同,不是吗?
mysql指针在循环一次后将位于末尾,因此您需要重置指针,或者(一种更好的方法)是将内容设置为数组,然后再循环进行遍历时间,例如:
<?php
$allrooms = array();
while ($row = mysql_fetch_assoc($room)) {
$allrooms[] = $row;
}
for ($i=1; $i<=$No_of_rooms; $i++) {?>
<tr class="formspace">
<td class="formleft">Room <?php echo $i ?></td>
<td>
<select name="roomtype[<?php echo $i ?>]">
<?php foreach ($allrows as $row_room) { ?>
<option value="<?php echo $row_room['roomtype'] ?>"><?php echo $row_room['room type'] ?></option>
<?php } ?>
</select>
</td>
</tr>
<?php } ?>
另外,作为旁注。 自PHP 5.5起, mysql_*
函数已正式弃用,建议逐步使用mysqli或PDO。 我不确定将代码转换为此代码有多容易,但是绝对应该考虑。 有关此问题的更多信息,请参见php.net上有关选择MYSQL API的文章。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.