За последние 24 часа нас посетил 21591 программист и 1690 роботов. Сейчас ищут 1876 программистов ...

Как расположить записи из MySQL в 2 колонки?

Тема в разделе "MySQL", создана пользователем mark2008, 23 янв 2008.

  1. mark2008

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

    С нами с:
    23 янв 2008
    Сообщения:
    16
    Симпатии:
    0
    Собственно, сабж. Поясню на абстрактном примере.

    Есть таблица test, в ней два поля: A и B. В этих полях содержатся записи следующего вида:
    A1 B1
    A2 B2
    A3 B3

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

    Требуется расположить эти записи следующим образом:

    A1 B1 A2 B2
    A3 B3 A4 B4
    A5 B5 A6 B6

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

    Т.е. в каждой строке не по 1 а по 2 записи.

    У меня сейчас стоит самый обыкновенный запрос "SELECT * FROM test" который отлично отрабатывает. Просто требуется записи расположить в 2 колонки.

    Жду помощи от кого-нибудь.
     
  2. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    это делаешь в пхп при обработке результатов.
     
  3. mark2008

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

    С нами с:
    23 янв 2008
    Сообщения:
    16
    Симпатии:
    0
    То есть это что получается?... я не там темку запостил?
    Всё равно помощь нужна :) как в php это сделать.
     
  4. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    PHP:
    1. $i=0;
    2. $out='';
    3. while ($row=mysql_fetch_assoc($q)) {
    4. $out.=$row['a'].' '.$row['b']
    5. if ($i %2) $out.=' \n';
    6. $i++;
    7. }
     
  5. mark2008

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

    С нами с:
    23 янв 2008
    Сообщения:
    16
    Симпатии:
    0
    Ага, понятно.

    Но чуть-чуть не то :)

    1. Я пробовал ставить знак "<br>" (что вроде бы аналогично \n) - не катит.

    2. Условие вывода такое: если строка чётная, отобразить её серым цветом, иначе - белым.

    Я делаю так:

    PHP:
    1.  
    2. $query = mysql_query("SELECT * FROM test");
    3. $i = 0;
    4. while ($data = mysql_fetch_array($query))
    5. {
    6.   $i++;
    7.    if ($i % 2 == 0)
    8.    {
    9.          echo "<tr><td style='background-color: silver;'>ДАННЫЕ</td></tr>";
    10.    }
    11.    else
    12.    {
    13.          echo "<tr><td>ДАННЫЕ</td></tr>";
    14.    }
    15. }
    16.  
    И вот в рамках именно таких условий надо как-то разделить их по двум колонкам :(
     
  6. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    PHP:
    1.  $i=0;
    2.   $out='';
    3.   while ($row=mysql_fetch_assoc($q)) {
    4. if ($i%4 ) $out.='<tr style=...>';
    5. else  if ($i %2) $out.=' <tr>';
    6.   $out.='<td>'.$row['a'].' '.$row['b'].'</td>';
    7. if (!($i %2)) $out.=' </tr>';
    8.   $i++;
    9.   }
    дальше сам.
     
  7. mark2008

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

    С нами с:
    23 янв 2008
    Сообщения:
    16
    Симпатии:
    0
    Это опять я :)

    Почти получилось! Вот такой код:
    PHP:
    1.  
    2.        for ($i = 0; $i < mysql_num_rows($user_query); $i++)
    3.        {
    4.          if (!mysql_data_seek($user_query, $i))
    5.            continue;
    6.  
    7.          if (!$row = mysql_fetch_object($user_query))
    8.            continue;
    9.  
    10.           echo $row->login."<br>".$row->login;
    11.        }
    12.  
    выводит следующее:
    Надеюсь, понятно, что нужен такой вывод:
    куда копать? чувствую что нужно сделать что-то очень простое, но уже мозги кипят! :(
     
  8. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    Это что и зачем?
    нет, так ты просто повторно бегаешь по выборке со сложно предсказуемыми результатами.

    ну значит так:


    PHP:
    1. $i=0;
    2. $out='';
    3. while ($row=mysql_fetch_assoc($q)) {
    4. if (!($i%4)) $out.='<tr style=...>';
    5. elseif (!($i %2)) $out.=' <tr>';
    6. $out.='<td>'.$row['a'].' '.$row['b'].'</td>';
    7. if ($i %2) $out.=' </tr>';
    8. $i++;
    9. }
    если проблема в тебе, не надо искать других причин и хитростей.