PHP Loop внутри цикла после x do x - PullRequest
1 голос
/ 08 марта 2012

Поиск на SO для быстрого решения этой проблемы.Я пытаюсь создать разрыв цикла после 5 элементов, например.PHP не моя самая сильная тема, и разработчик не оставил комментариев.

Код должен выводить этот блок и цикл.Таким образом, есть цикл для первого LI, а затем цикл для 5 элементов внутри него.Я не могу понять.

<li class="royalSlide">
<a href=""><img src="" /></a>
<a href=""><img src="" /></a>
<a href=""><img src="" /></a>
<a href=""><img src="" /></a>
<a href=""><img src="" /></a>
</li>

Код, который я редактировал, я добавил целое число.

$i=5;
while($row = mysql_fetch_array($result))
{       
    $pid=$row["stock_products_code"];
    $dir = "assets/sale/".$pid."/";$dh = opendir($dir);
    echo '<li class="royalSlide">'; 
    while (($file = readdir($dh)) !== false)
        {       
        $vpxd=$file;
            if($vpxd=="." || $vpxd=="..")
            {

            }else{
                $vpxd=str_replace(".jpg","", $vpxd);
                echo '<a href="/product-sale.php?prodref='.$vpxd.'" target="_top"><img src="/assets/sale/'.$pid.'/'.$file.'" border="0"  /></a>';
                $i++;
            }       
        }
    echo '</li>';   
closedir($dh);
}

Ответы [ 3 ]

1 голос
/ 08 марта 2012

Вы ищете оператор break ?

while($row = mysql_fetch_array($result))
{    
  $i = 0;

  $pid = $row["stock_products_code"];
  $dir = "assets/sale/$pid/";
  $dh = opendir($dir);

  echo '<li class="royalSlide">'; 

  while (($file = readdir($dh)) !== false)
  {       
    $vpxd = $file;

    if($vpxd != "." && $vpxd != ".." )
    {
      $vpxd=str_replace(".jpg","", $vpxd);
      echo '<a href="/product-sale.php?prodref=$vpxd" target="_top"><img src="/assets/sale/$pid/$file" border="0" /></a>';
      $i++;
    }

    if ($i == 5) 
    {
      break; // leave the inner while loop
    }

  }

  echo '</li>';   

  closedir($dh);
}
0 голосов
/ 08 марта 2012

Если я правильно понял, вы хотите иметь несколько <ul> с максимум 5 <li> каждый?

$i = 0;
while(...) {
   if (($i % 5) == 0) {
      echo '<ul>';
   }
   .... stuff ...
   if ((($i + 1) % 5) == 0) {
      echo '</ul>';
   }
   $i++;
}

Первый if () откроет новый список в любое время, когда вы 'мы достигли кратности 5 на счетчике $ i.Так что для i = 0 вы получите UL.Затем он просто выводит отдельные элементы <li> и увеличивает $ i, пока не достигнет 4. В этот момент вы вывели 5 элементов li и теперь выведите </ul>, чтобы закрыть список.

0 голосов
/ 08 марта 2012

Избавьтесь от этого:

$i = 5;

Установите $i на ноль перед каждым внутренним циклом:

while($row = mysql_fetch_array($result))
{  
    $i = 0;

И затем отмените внутренний цикл, если $i достигнет 5:

echo '<a href="/product-sale.php?prodref='.$vpxd. ...
if (++$i == 5) {
    break;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...