За последние 24 часа нас посетили 20076 программистов и 1667 роботов. Сейчас ищут 1923 программиста ...

вывод из БД по группам

Тема в разделе "PHP и базы данных", создана пользователем iluha, 26 авг 2010.

  1. iluha

    iluha Активный пользователь

    С нами с:
    14 янв 2010
    Сообщения:
    34
    Симпатии:
    0
    здравсте всем. такой вопрос. я делаю выборку из таблицы в БД и вывожу всё в столбик, все значения. а как вывести к примеру по 5 значений в строку1, потом следующие 5 значений в строку2 и т.д.

    пример кода как я делаю:

    $result=mysql_query("SELECT * FROM podcat LIMIT 0,5");
    $myrow=mysql_fetch_array($result);

    do {printf ("<p>%s</p>",$myrow["title"]);} while($myrow=mysql_fetch_array($result));


    спасибо заранее.
     
  2. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    использовать счетчик для отсчета каждых пяти записей
     
  3. iluha

    iluha Активный пользователь

    С нами с:
    14 янв 2010
    Сообщения:
    34
    Симпатии:
    0
    ок, согласен, а как в цикле счетчика вывести не весь диапазон а части по 3 значения каждая?

    for ($i = 0; $i <= 10; $i++) {echo $i;}
     
  4. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    определись что нужно. например вывести в строку по пять записей - считать $i, когда она доходит до 5 - обнулять и переходить на новую строку через <br> (или новую строку таблицы выводить, неважно)
    то есть если в базе 100 записей у тебя будет 20 строчек по 5 значений. Зачем тогда LIMIT 0,5 в запросе?
     
  5. iluha

    iluha Активный пользователь

    С нами с:
    14 янв 2010
    Сообщения:
    34
    Симпатии:
    0
    я вообще-то не про LIMIT, просто пробую так выводить, но коряво получается, поэтому и спрашиваю как. задача - вывести 100 записей к примеру по 10 записей в несколько строк.
     
  6. iluha

    iluha Активный пользователь

    С нами с:
    14 янв 2010
    Сообщения:
    34
    Симпатии:
    0
    вот что вышло, но это бесконечный вывод первых 4 значении:

    for ($i = 0; $i <= 10; $i++) {if ($i>4) {$i=0; echo "<br>";} echo $i;}
     
  7. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    PHP:
    1. <?php
    2. $a = array();
    3. $temp_ar = mysql_query("SELECT * FROM `table1`");
    4. $num = mysql_num_rows($temp_ar);
    5. while ($temp = mysql_fetch_assoc($temp_ar))
    6. {
    7. $a[] = $temp;
    8. }
    9.  
    10.  
    11.  
    12. for($i = 0; $i < $num; $i++)
    13. {
    14. echo $a[$i]['id'];
    15. if($i > 1 && $i%5 == 0) echo '<br>';
    16. }
    не лучший вариант но работает.
    можно и с одним циклом вместо двух, щас на ум не приходит как не по-индусски сделать
     
  8. iluha

    iluha Активный пользователь

    С нами с:
    14 янв 2010
    Сообщения:
    34
    Симпатии:
    0
    спасибо, для начала то, что нужно.
     
  9. iluha

    iluha Активный пользователь

    С нами с:
    14 янв 2010
    Сообщения:
    34
    Симпатии:
    0
    а что это $i%5, шо оно делает?
     
  10. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    остаток от деления
     
  11. iluha

    iluha Активный пользователь

    С нами с:
    14 янв 2010
    Сообщения:
    34
    Симпатии:
    0
    как теперь решить проблему с "0", так как в первую строку выводит на одно (нулевое) значение больше?
     
  12. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    for($i = 1; $i <= $num; $i++)
     
  13. iluha

    iluha Активный пользователь

    С нами с:
    14 янв 2010
    Сообщения:
    34
    Симпатии:
    0
    пробовал я так. и по другому и вместо других нулей 1-цы подставлял. не катит. все дело в том, что когда я перебор делаю в ассоциат.массив там автоматом нулевой ключ появляется.

    while ($temp = mysql_fetch_assoc($temp_ar))
    {
    $a[] = $temp;
    }

    и в $temp и в $a есть уже нулевой ключ.

    как можно этот ключ в 1 превратить, чтоб было так:
    $arr[1] = one;
    $arr[] = two;

    и т.д.
     
  14. iluha

    iluha Активный пользователь

    С нами с:
    14 янв 2010
    Сообщения:
    34
    Симпатии:
    0
    всё, уломалось. всем спасибо. аж камень с плеч.
     
  15. iluha

    iluha Активный пользователь

    С нами с:
    14 янв 2010
    Сообщения:
    34
    Симпатии:
    0
    не, наврал. все красиво, только значение по нулевому ключу просто не выводится.
     
  16. iluha

    iluha Активный пользователь

    С нами с:
    14 янв 2010
    Сообщения:
    34
    Симпатии:
    0
    если стоит $a[] = $temp; - значит первый ключ нулевой. как с ним бороться!? :)
     
  17. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    if($i > 1 && $i%5 == 0) echo '<br>';
    я ж написал
     
  18. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    ...

    PHP:
    1. for($i = 1; $i <= $num; $i++)
    2. {
    3.     echo $a[$i-1]['id'];
    ...

    А вообще лучше сразу выводить.

    PHP:
    1. <?php
    2. $result = mysql_query( 'SELECT * FROM `table1`');
    3.  
    4. $i = 0;
    5. while( $row = mysql_fetch_assoc( $result))
    6. {
    7.     echo $row['id'];
    8.     if( ++$i % 5 == 0) echo '<br />';
    9. }
    10. ?>