繁体   English   中英

在“ For”循环中的PHP“ Do”循环

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM