Создание новой строки таблицы - PHP цикла while - PullRequest
0 голосов
/ 18 октября 2011

Я пытаюсь это делать всякий раз, когда мой цикл while достигает 4 результатов (4,8,12,16 и т. Д.), Он создает новую строку таблицы.

Это должно быть так:

[table row]
[data] [data] [data] [data]
[/table row]

[table row]
[data] [data] [data] [data]
[/table row]

и так далее ...

В настоящее время у меня есть это:

  <?php 
$cat=mysql_query("SELECT * FROM kb_categories"); 
        $i = 0;
        while($catData=mysql_fetch_assoc($cat)):
        $i ++; 
        //Select the numbers of articles inside each category.
        $number=mysql_num_rows(mysql_query("SELECT * FROM kb_articles WHERE cat_id='".$catData['id']."'"));

        ?>

    <td><img src="/themes/dream/images/icons/folder.gif"><span><?php echo $catData['name']; ?></span> (<?php echo $number; ?>)</td>
    <?php endwhile; ?> 

Сейчас оно просто генерирует это:

[table row]
[data] [data] [data] [data] [data] [data] etc.
[/table row]

IЯ просто не уверен, как использовать $i в этом примере.Кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 18 октября 2011

Два решения, которые я могу придумать. Либо проверьте, когда я равен для, а затем вставьте строку и сбросьте его обратно в 0. Или посмотрите, делится ли оно точно на 4, а затем вставьте строку. (Что, вероятно, лучше, потому что тогда я буду равен количеству данных.)

<?php 
$cat=mysql_query("SELECT * FROM kb_categories"); 
$i = 0;
while($catData=mysql_fetch_assoc($cat)) :
    $i ++; 
    //Select the numbers of articles inside each category.
    $number=mysql_num_rows(mysql_query("SELECT * FROM kb_articles WHERE cat_id='".$catData['id']."'"));

    if($i==3) {
        // Insert row here, probably something like this:
        echo "</tr><tr>";
        $i = 0;
    }

?>

<td><img src="/themes/dream/images/icons/folder.gif"><span><?php echo $catData['name']; ?></span> (<?php echo $number; ?>)</td>
<?php endwhile; ?> 

Или второй метод:

<?php 
$cat=mysql_query("SELECT * FROM kb_categories"); 
$i = 0;
while($catData=mysql_fetch_assoc($cat)) :
    $i ++; 
    //Select the numbers of articles inside each category.
    $number=mysql_num_rows(mysql_query("SELECT * FROM kb_articles WHERE cat_id='".$catData['id']."'"));

    if( (($i+1) % 4) == 0) {
        // Insert row here, probably something like this:
        echo "</tr><tr>";
    }

?>
<td><img src="/themes/dream/images/icons/folder.gif"><span><?php echo $catData['name']; ?></span> (<?php echo $number; ?>)</td>
<?php endwhile; ?> 
0 голосов
/ 18 октября 2011
  • Сначала получите данные в массив

  • Далее, используйте array_chunk (), чтобы разбить его на несколько вложенных массивов

  • Наконец, в шаблоне используйте 2 вложенных цикла foreach для вывода

  • И, ради всего святого, научитесь отступать ваш код

  • Кроме того, вы НЕ должны считать строки с помощью mysql_num_rows ().
    Используйте SELECT count(*) вместо этого.

  • И не должно быть вложенных запросов вообще - вы должны сделать это одним запросом, используя JOIN. Если вы не знаете, что это такое - задайте еще один вопрос здесь.
...