Проблема с выводом из БД

Тема в разделе "PHP", создана пользователем fredis69, 24 июн 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. fredis69

    fredis69 Постоялец

    Регистр.:
    25 окт 2008
    Сообщения:
    84
    Симпатии:
    2
    Здравствуйте!

    Такая проблема: Нужно вывести из БД все данные по порядку в группы, по три записи в каждую группу.

    Как это реализовать?

    Таблица в БД user с полями name и age.
    В name заносится имя человека, а в age его возраст.


    Должно получится что то вроде такого:
    PHP:

    //Первая группа
    <table>
    <
    tr>
    <
    td>
    <
    p>
    Петя 30 лет.
    <
    br>
    Надя 27 лет.
    <
    br>
    Ирина 40 лет.
    </
    p>
    </
    td>
    </
    tr>
    </
    table>

    //Вторая группа
    <table>
    <
    tr>
    <
    td>
    <
    p>
    Игорь 25 лет.
    <
    br>
    Иван 38 лет.
    <
    br>
    Николай 20 лет.
    </
    p>
    </
    td>
    </
    tr>
    </
    table>

    //и так далее пока не кончатся записи в таблице [B]user[/B]......

     
  2. ПроФ

    ПроФ Создатель

    Регистр.:
    5 июн 2009
    Сообщения:
    25
    Симпатии:
    6
    Вот так надо:

    PHP:
    $query "SELECT * FROM user;"

    $result mysql_query($query);

    while(
    $row mysql_fetch_array($result))
    {
         echo 
    "<table> <tr><td><p>".$row[name]." - ".$row[age]." лет.<br> </p> </td></tr></table>";
    }
     
  3. t0os

    t0os

    Регистр.:
    21 окт 2007
    Сообщения:
    284
    Симпатии:
    36
    PHP:
    <?php

    $result 
    mysq_query('SELECT * FROM `users`');
    $users = array();

    while ( 
    $row mysql_fetch_assoc($result) )
    {
        
    $users[] = $row;
    }

    foreach ( 
    $users as $k=>$v )
    {
        if ( 
    k%== )
        {
            echo 
    '<table><tr><td><p>' $v['name'] . ' - ' $v['age'] . 'лет.';
        }

        echo 
    $v['name'] . ' - ' $v['age'] . 'лет.<br />';

        if ( 
    $k%== )
        {
            echo 
    '</p></td></tr></table>';
        }
    }

    ?>
    как-то вроде так.
     
  4. ПроФ

    ПроФ Создатель

    Регистр.:
    5 июн 2009
    Сообщения:
    25
    Симпатии:
    6
    Для начала замечу, что k%3 == 3 заведомо ложное условие, т.е. оно никогда не выполнится, какое-бы мы k не подали ;) Ну а $k%3 == 0 выполнется для для всех k, кратных 3м. Так что логики не уловил совсем... К тому же, а зачем массив тут использовать?..
     
  5. fredis69

    fredis69 Постоялец

    Регистр.:
    25 окт 2008
    Сообщения:
    84
    Симпатии:
    2
    Ребята всё неправильно.

    Ни чего не работает та как надо.
     
  6. ПроФ

    ПроФ Создатель

    Регистр.:
    5 июн 2009
    Сообщения:
    25
    Симпатии:
    6
    Извиняюсь, недочитал то что надо сделать :ah:

    PHP:
    $query "SELECT * FROM user;"

    $result mysql_query($query);

    $i 0;

    while(
    $row mysql_fetch_array($result))
    {
        if(
    $i == 0
        {
            echo 
    "<table> <tr>";
            
    $open 1;
        }

         echo 
    "<td><p>".$row[name]." - ".$row[age]." лет.<br> </p> </td>";

      if(
    $i == 0)
      {
           echo 
    "</tr></table>";
           
    $open 0;
      }
       
      
    $i = ($i >= 2) ? $i++;
    }

    if(
    $open) echo "</tr></table>";

     
  7. Avadon

    Avadon Создатель

    Регистр.:
    21 июн 2009
    Сообщения:
    12
    Симпатии:
    1
    fredis69, попробуй так:
    PHP:
    $res=mysq_query('SELECT * FROM `users`');
    $i=0;
    while (
    $row=mysql_fetch_assoc($res)) {
        if (
    $i%3==&& $i) {
            echo 
    '</p></td></tr></table>';
        }
        
    $i++;
        if (
    $i%3==1) {
            echo 
    '<table><tr><td><p>';
        }
        echo 
    $row['name'].' - '.$row['age'].' лет.<br/>';
    }
    if (
    $i) {
        echo 
    '</p></td></tr></table>';
    }
    mysql_free_result($res);
    ПроФ, у тебя в первой итерации таблица откроется и тут же закроется, т.к. 0%3==0 и 0%2==0, потом две строки выплюнет вне таблицы и одну в таблице и опять закроет.
     
  8. fredis69

    fredis69 Постоялец

    Регистр.:
    25 окт 2008
    Сообщения:
    84
    Симпатии:
    2
    Avadon Большое спасибо всё работает отлично
     
Статус темы:
Закрыта.