首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环第一次迭代不起作用吗?

问循环第一次迭代不起作用吗?
EN

Stack Overflow用户
提问于 2018-06-22 14:52:06
回答 2查看 622关注 0票数 1

我有一个嵌套的do while循环。选项输入中的第一个循环为空白,下拉菜单中没有选项。第一个循环之后的所有其他循环都能完美地工作。我不知道为什么第一个是空白的,任何帮助都将不胜感激。

代码语言:javascript
复制
<div class="col-md-12">
<h1 align="center"><a href="images.php">&lt;Back</a> - Current Photos  in <?
echo $row_titles['title']; ?></h1>
<?php if ($totalRows_photos > 0)
{
    do
    { ?>
  <div class="col-md-3" style="height:350px;overflow:hidden;"><img 
src="../contentimages/<?php echo $row_photos['filename']; ?>" class="img- 
responsive" style="max-height:225px;" /><br />
<? if ($row_photos['catid'] == 1)
        {
            echo "Commercial";
        }
        else
        {
            echo "Residential";
        } ?> 
  |  <a href="images.php?id=<?php echo $row_photos['id']; ? > & amp;
        action = remove">Delete</a><br />
<form name="moveit" action=" < ? phpecho $editFormAction; ?>" method="POST" 
id="moveit"><select name="folder">
  <?php
        do
        {
?>
  <option value="<?php echo $row_folders['id'] ?>"<?php if (!(strcmp($row_folders['id'], $row_photos['project_id'])))
            {
                echo "selected=\"selected\"";
            } ?>><?php echo $row_folders['title'] ?></option>
  <?php
        }
        while ($row_folders = mysql_fetch_assoc($folders));
        $rows = mysql_num_rows($folders);
        mysql_data_seek($folders, 0);
        $row_folders = mysql_fetch_assoc($folders);
?>
</select><input name="Move" type="submit" value="Move" />
<input name="hiddenField" type="hidden" id="hiddenField" value="<?php echo $row_photos['id']; ?>" />
<input type="hidden" name="MM_update" value="moveit" />
</form></div>
  <?php
    }
    while ($row_photos = mysql_fetch_assoc($photos));
}
else
{
    echo "<h3 
align=\"center\">No photos are found!</h3>";
} ?></div>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-22 14:57:14

do循环的第一次迭代从$row_folders和$row_photos返回空白值的原因是,直到第一次迭代完成(在while语句中),这些变量才被赋值。

要修复它,可以先分配变量,或者(通常情况下)只使用while循环。

首先定义变量:

代码语言:javascript
复制
$row_folders = mysql_fetch_assoc($folders);
do
{
    // Your code here
}
while ($row_folders = mysql_fetch_assoc($folders));

或者只使用while循环

代码语言:javascript
复制
while ($row_folders = mysql_fetch_assoc($folders))
{
    // Your code here
}
票数 1
EN

Stack Overflow用户

发布于 2018-06-22 15:00:29

在do循环中,条件在执行循环中的语句后进行测试。您应该将其更改为只将条件移到顶部以获取第一行时请注意,在第二次迭代中,您将得到第一行,因为在第一次迭代执行中,第一行尚未被获取。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50990587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档