2014-03-05 41 views
0
$pgroup = $Sys->db->query("SELECT dj_photo_group.photo_group, dj_photo.name FROM dj_photo_group, dj_photo WHERE dj_photo_group.photo_group = dj_photo.img_group ORDER BY dj_photo.img_group DESC"); 

while($photo = $pgroup->fetch_object()) { 

    echo '<div class="photo_head">' . ucfirst($photo->photo_group) . '</div>'; 
    echo '<div class="photo_sub">'; 

    while($photo->name) { 
     echo '<img src="photogallery/' . $photo->photo_group . '/' . $photo->name . '" />'; 
    } 

    echo '</div>'; 
} 

这是一遍又一遍地显示相同的图像。我有3组:婚礼,5点和杂项,每个有2个图像。它仅以无限次数显示1张图像的婚礼。这1张图片为什么显示无数次?

我在做什么错,我该如何解决?

+1

因为'$光电> name'始终是真实的,所以你永远不会出第二个while循环,这就是所谓的无限循环 – CodeBird

回答

-2

尝试这个..这个解决方案将提供您所需的布局....

$pgroup1 = $Sys->db->query("SELECT dj_photo_group FROM photo_group GROUP BY dj_photo_group"); 

while ($photo1 = $pgroup1->fetch_object()) 
{ 

echo '<div class="photo_head">' . ucfirst($photo1->dj_photo_group) . '</div>'; 
echo '<div class="photo_sub">'; 
$pgroup2 = $Sys->db->query("SELECT name FROM dj_photo WHERE img_group = '$photo1->dj_photo_group'"); 

while ($photo2 = $pgroup2->fetch_object()) 
{ 
    echo '<img src="photogallery/' . $photo1->dj_photo_group . '/' . $photo2->name . '" />'; 
} 

echo '</div>'; 
} 
+0

downvote没有任何理由?我是第一个给出这个解决方案的人...... –

+0

感谢所有的答复。如果仍然给我同样的结果。婚礼 - > 2张图片,5分 - > 2张图片和其他 - > 2张图片。它将每个图像放在一个单独的div中。婚礼,5点和杂项有2个图像,每个我得到6个div与1个图像在每个我应该有3个div(婚礼,5点和misc)与2个图像显示在每个3格。希望我解释得更好一点。这正在把我推上墙壁XD。谢谢大家。 – user3377300

+0

一些如何获得1组(婚礼)然后循环通过该组中的图像名称,然后一旦完成,我需要去下一个组(5分),并显示在该div中的2个图像等。 – user3377300

0

$photo->name总是正确的。所以,如果你在一个while循环使用它,你基本上说:

while(true){ 
    // do this 
} 

记住,while循环将继续,只要指定的条件为真打算。

您应该真的使用if来代替。

if($photo->name){ 
    // do this 
} 
0

while($photo->name)将重复,直到$photo->name是假的。因为在循环中没有任何东西会改变它,它总是会是真的,所以循环会一直持续下去。

像Nishant说的,你想用if声明替换它。

0

while($ photo-> name)正在进入无限循环,因为条件始终为真。您应该结束条件,这个while循环或以其他方式,你可以去,如果条件还

if($photo->name) 
相关问题