покажите результат mysql, используя php while loop без таблицы - PullRequest
0 голосов
/ 03 января 2012

Я перечисляю результаты mysql в 4 горизонтальных <UL> и <li> с этим кодом:

    echo"<div>";
    $c = 1; // change to $c = 0 
    $media = mysql_query("SELECT * FROM " . "$prefix" . "screen where id=\"$id\" order by id desc limit 16");
    while ($cms = mysql_fetch_assoc($media)) {

      if (!($c%4)) echo ($c!=0 ? "</ul>" : "")."<ul>";

        echo "<li><a href=\"#\"><img src=\"#\"></a></li>\n";

        $c++;
            }

        echo "</ul></div>\n";

      for ($cnt=$c;$cnt%4>0;$cnt++);

Вывод HTML из приведенного выше кода:

<UL>
    <li><a href=\"#\"><img src=\"#\"></a></li>
    <li><a href=\"#\"><img src=\"#\"></a></li>
    <li><a href=\"#\"><img src=\"#\"></a></li>
</UL>
<UL>
    <li><a href=\"#\"><img src=\"#\"></a></li>
    <li><a href=\"#\"><img src=\"#\"></a></li>
    <li><a href=\"#\"><img src=\"#\"></a></li>
    <li><a href=\"#\"><img src=\"#\"></a></li>
</UL>
<UL>
    <li><a href=\"#\"><img src=\"#\"></a></li>
    <li><a href=\"#\"><img src=\"#\"></a></li>
    <li><a href=\"#\"><img src=\"#\"></a></li>
    <li><a href=\"#\"><img src=\"#\"></a></li>
</UL>
<UL>
    <li><a href=\"#\"><img src=\"#\"></a></li>
    <li><a href=\"#\"><img src=\"#\"></a></li>
    <li><a href=\"#\"><img src=\"#\"></a></li>
    <li><a href=\"#\"><img src=\"#\"></a></li>
</UL>
<UL>
    <li><a href=\"#\"><img src=\"#\"></a></li>
</UL>

Это неверно. Каждый <ul> должен содержать 4 <li>.

Обновление : Я изменил $ c = 0 и удалил top <ul> теперь работает!

Ответы [ 2 ]

0 голосов
/ 03 января 2012

Проблема в том, что ваш $ c = 1 в топе. Так как сначала это 1, он будет распечатывать только еще 3 (1 + 1 + 1 + 1 = 4, 4% 4 = 0), а затем счетчик будет равен нулю, и теперь будет печатать 4. Это небольшое исправление должно помочь.

$c = 0;
$media = mysql_query("SELECT * FROM " . "$config_ccms_prefix" . "screen where id=\"$id\" order by id desc limit 16"); 

while ($cms = mysql_fetch_assoc($media)) { 
    if (!($c % 4))
        echo "<ul>"; 

    echo "<li><a href=\"#\"><img src=\"#\"></a></li>\n"; 

    if(!($c++ % 4))
        echo "</ul>";
} 
echo "</div>\n"; 
for ($cnt = $c; $cnt % 4 > 0; $cnt++);

(обратите внимание, что $ c устанавливается в 0 в начале, а echo и $ c ++ перемещаются в конец тела цикла)

0 голосов
/ 03 января 2012

Установите $c = 0 в начале.Циклы, как правило, начинаются с нуля, и для этого необходимо использовать modulo.

Ваш код также очень трудно читать.Может быть, рассмотреть пробелы между операторами и отступом блоков?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...