За последние 24 часа нас посетили 19320 программистов и 1605 роботов. Сейчас ищут 875 программистов ...

как вывести данные из mysql в таблицу

Тема в разделе "PHP и базы данных", создана пользователем dark-7, 10 апр 2011.

  1. dark-7

    dark-7 Активный пользователь

    С нами с:
    30 мар 2011
    Сообщения:
    15
    Симпатии:
    0
    Добрый день, подскажите как вывести данные из mysql в таблицу в три столбца такого типа:


    1 | 4 | 7
    2 | 5 | 8
    3 | 6 | 9
     
  2. titch

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

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    структуру таблицы в студию
     
  3. dark-7

    dark-7 Активный пользователь

    С нами с:
    30 мар 2011
    Сообщения:
    15
    Симпатии:
    0
    1 | 4 | 7
    2 | 5 | 8
    3 | 6 | 9
     
  4. titch

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

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    структуру, в смысле, в базе. а не наглядное представление

    должно быть что-то типа этого:
    CREATE TABLE IF NOT EXISTS `messages` (
    `message_id` int(10) unsigned NOT NULL auto_increment,
    `transmitter_id` int(10) unsigned NOT NULL,
    `reciver_id` int(10) unsigned NOT NULL,
    `time` int(10) unsigned NOT NULL,
    `recived` enum('y','n') NOT NULL default 'n',
    `subject` varchar(255) default NULL,
    `body` text NOT NULL,
    `hide` enum('y','n') NOT NULL default 'n',
    PRIMARY KEY (`message_id`),
    KEY `transmitter_id` (`transmitter_id`),
    KEY `reciver_id` (`reciver_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
     
  5. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    titch, я так понял, что цифрами он обозначил порядок записей в базе. Нужно в нарисованном порядке вывести. Как выглядит таблица, не важно.
     
  6. dark-7

    dark-7 Активный пользователь

    С нами с:
    30 мар 2011
    Сообщения:
    15
    Симпатии:
    0
    YSandro Вы обсолютно правы. Горизонтально я могу вывести а вот так как в примере нет
     
  7. titch

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

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    получить обычным запросом, напихать в массив и обойти его в другом порядке.
     
  8. dark-7

    dark-7 Активный пользователь

    С нами с:
    30 мар 2011
    Сообщения:
    15
    Симпатии:
    0
    Вот я и не могу понять как это и прошу Вашей помощи.
     
  9. Inject

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

    С нами с:
    3 апр 2011
    Сообщения:
    24
    Симпатии:
    0
    может быть ты имел ввиду вывести из таблици на страницу?)
    Или в Таблицу со станици?)))
     
  10. dark-7

    dark-7 Активный пользователь

    С нами с:
    30 мар 2011
    Сообщения:
    15
    Симпатии:
    0
    Из БД в таблицу на страницу, но именно таким образом:

    1 | 4 | 7
    2 | 5 | 8
    3 | 6 | 9
     
  11. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    ща попробую. задачка вроде как школьная, но вот сразу не припоминается ничего.
    На собеседованиях такую могут подкинуть
     
  12. dark-7

    dark-7 Активный пользователь

    С нами с:
    30 мар 2011
    Сообщения:
    15
    Симпатии:
    0
    Спасибо, буду очень благодарен.
     
  13. Inject

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

    С нами с:
    3 апр 2011
    Сообщения:
    24
    Симпатии:
    0
    брррр...
    тут делать нечего)))
    на пожалуйста))
    <?php
    $db = mysql_connect ("localhost","root","пароль");
    mysql_select_db("БАЗА, не ТАБЛИЦА, БАЗА",$db);
    mysql_query("SET NAMES utf8");//Кодировка1
    $massiv=mysql_fetch_array(mysql_query("SELECT 1колонка,2колонка,3колонка и т.д. через запятую FROM таблица",$db));
    echo'
    <table width="100">
    <tr>
    <td>'.$massiv['1-колонка в таблице'].'</td>
    <td>'.$massiv['2-колонка в таблице'].'</td>
    <td>'.$massiv['3-колонка в таблице'].'</td>
    </tr>
    <tr>
    <td>'.$massiv['4-колонка в таблице'].'</td>
    <td>'.$massiv['5-колонка в таблице'].'</td>
    <td>'.$massiv['6-колонка в таблице'].'</td>
    </tr>
    <tr>
    <td>'.$massiv['7-колонка в таблице'].'</td>
    <td>'.$massiv['8-колонка в таблице'].'</td>
    <td>'.$massiv['9-колонка в таблице'].'</td>
    </tr>
    </table>
    ';
    ?>
     
  14. dark-7

    dark-7 Активный пользователь

    С нами с:
    30 мар 2011
    Сообщения:
    15
    Симпатии:
    0
    Inject у тебя получается такого типа:
    1 2 3
    4 5 6
    7 8 9

    а надо такого:

    1 | 4 | 7
    2 | 5 | 8
    3 | 6 | 9
     
  15. dark-7

    dark-7 Активный пользователь

    С нами с:
    30 мар 2011
    Сообщения:
    15
    Симпатии:
    0
    Inject и это надо сделать в цикле
     
  16. Inject

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

    С нами с:
    3 апр 2011
    Сообщения:
    24
    Симпатии:
    0
    блин...
    Что тебе бордюры нужны ну дапиши в <table border="1"> и все
     
  17. dark-7

    dark-7 Активный пользователь

    С нами с:
    30 мар 2011
    Сообщения:
    15
    Симпатии:
    0
    Если это горизонтальная таблица проблем нет а вот как вертикально вывести данные я не понимаю
     
  18. dark-7

    dark-7 Активный пользователь

    С нами с:
    30 мар 2011
    Сообщения:
    15
    Симпатии:
    0
    Inject ты меня не понял я не про бордюры толкую а про то как выводятся значения у тебя в примере таким образом:
    1 2 3
    4 5 6
    7 8 9
    а надо таким:
    1 4 7
    2 5 8
    3 6 9
     
  19. Inject

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

    С нами с:
    3 апр 2011
    Сообщения:
    24
    Симпатии:
    0
    значит делайте рандомный вывод
    http://www.php.ru/forum/viewtopic.php?t=31403
    ленитесь посмотреть тему?!?

    Я там написал как делается рандом вывод...
     
  20. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Вот блин, долго искал функцию mod в php :)

    PHP:
    1. $qr=mysql_query("SELECT id FROM table ORDER BY id LIMIT 9");
    2. $arr=array();
    3. while($tArr=mysql_fetch_array($qr)){$arr[]=$tArr['id'];}//просто в массив собираем все записи
    4.  
    5. $arr2=array();//в этом массиве будет нужный нам порядок индексов 0,3,6,1,4,7,2,5,8
    6. for($i=0;$i<sizeof($arr);$i++){
    7.     $i2=fmod($i,3)*3;//0,3,6,0,3,6,0,3,6
    8.     $i2=$i2+(int)($i/3);//0,3,6,1,4,7,2,5,8
    9.     $arr2[]=$arr[$i2];
    10. }
    11. for($i=0;$i<sizeof($arr2);$i+=3){//вывод в браузер
    12.     echo $arr2[$i],'|',$arr2[$i+1],'|',$arr2[$i+2],'<br/>';
    13. }
    Inject, что-то ты совсем о своём..
     
  21. dark-7

    dark-7 Активный пользователь

    С нами с:
    30 мар 2011
    Сообщения:
    15
    Симпатии:
    0
    YSandro спасибо огромное за помошь, но это не то мне нужно имено тегами <td> и вертикально
     
  22. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    dark-7, последний цикл выводит так, как ты написал в первом посте.
    Ты уж сам выведи в том формате, какой нужен. В массиве $arr2 такой порядок, какой тебе нужен, осталось строками вывести.
    Как-то так, наверное.

    Код (Text):
    1. echo '<table>',"\n";
    2. for($i=0;$i<sizeof($arr2);$i+=3){//вывод в браузер
    3.   echo '<tr><td>',$arr2[$i],'</td><td>',$arr2[$i+1],'</td><td>',$arr2[$i+2],'</td></tr>',"\n";
    4. }
    5. echo '</table>',"\n";
     
  23. dark-7

    dark-7 Активный пользователь

    С нами с:
    30 мар 2011
    Сообщения:
    15
    Симпатии:
    0
    YSandro, спасибо тебе огромное!
     
  24. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    как вариант:
    PHP:
    1. <?
    2. $a = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14);
    3. $columns = 3;
    4. $counter = 0;
    5. echo "<table>\n  <tr>\n    ";
    6.  
    7.  
    8. foreach ($a as $val) {
    9.   $counter++;
    10.   echo "<td>$val</td>";
    11.   if ($counter == $columns ) {
    12.     echo "\n  </tr>\n  <tr>\n    ";
    13.     $counter = 0;
    14.   }
    15. }
    16.  
    17. echo "\n</table>";
    или
    PHP:
    1. <?
    2. $a = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14);
    3. $a = array_chunk ($a, 3);
    4. echo "<table>\n";
    5. foreach ($a as $tr) {
    6.     echo "<tr><td>".implode('</td><td>', $tr);
    7. }
    8. echo "</table>\n";
    минусы есть - сами понимаете какие. хз. по мне так пофик, браузер подправит.