За последние 24 часа нас посетили 17780 программистов и 1280 роботов. Сейчас ищут 1433 программиста ...

из MySQL в 3 тега <TD></TD>

Тема в разделе "Вопросы от блондинок", создана пользователем Nikola, 25 ноя 2006.

  1. Nikola

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

    С нами с:
    25 ноя 2006
    Сообщения:
    2
    Симпатии:
    0
    Как сделать вывод информации из MySQL в три колонки HTML таблицы

    К примеру:


    Код (Text):
    1. <TABLE><TR><TD>$name</TD><TD>$name</TD><TD>$name</TD></TR></TABLE>
    2.  
    3. <TABLE><TR><TD>$name</TD><TD>$name</TD><TD>$name</TD></TR></TABLE>
    4.  
    5. <TABLE><TR><TD>$name</TD><TD>$name</TD><TD>$name</TD></TR></TABLE>
    6. ...
    Переменная $name выводится из MYSQL таблицы.

    Выглядеть должно вот так:

    1 2 3
    4 5 6
    7

    В поиск не посылать, уже запарился искать!
     
  2. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    сначала вопрос: ты можешь, допустим, твои 7 чисел выстроить так, как тебе нужно (в 3 колонки)? без всяких баз данных.

    PS: код оформляй с помощью соответствующих тэгов.
     
  3. Davil

    Davil Guest

    Nikola зачем там 3 таблицы? В одной нельзя сделать?
     
  4. Nikola

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

    С нами с:
    25 ноя 2006
    Сообщения:
    2
    Симпатии:
    0
    Вы что блондинки что-ли???

    Конечно нельзя зделать в 1 колонке потому что, задача стоит сделать в 3х рядах.

    1 2 3
    4 5 6
    7

    Я показал как пример, на месте цифр должен быть текст и их не семь а больше!
     
  5. Anonymous

    Anonymous Guest

    Не один поисковик не найдет как думать головой...
     
  6. Николка. Ты путаешь колонки и таблицы.
    И блондинка здесь только одна. Догадаешься - кто? ;-)
     
  7. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Nikola, сам головой думай. здесь готовые решения никто генерировать не будет.
     
  8. draak

    draak Guest

    просто реализуй счетчик типа 123 123 123 123 123 123
    И считай такты: «Раз! - Подпрыгнул, Два! - Подпрыгнул, Три! - Закончили!»

    PHP:
    1. <?php
    2.  
    3. $counter=0;
    4. $frommsql = array('a', 'b', 'c', 'd', 'e', 'f', 'g');
    5.  
    6. echo('<table border="1">');
    7. foreach ($frommsql as $value)
    8.   {
    9.     if ($counter==3) {$counter=1;} else {$counter++;}
    10.     if ($counter==1) echo('<tr>');
    11.     echo("<td>".$value."</td>");
    12.     if ($counter==3) echo('</tr>');
    13.   }
    14. echo('</table>');
    15.  
    16. ?>
    Можешь его еще colspan-овой проверкой снабдить =)
     
  9. vasa_c

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

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    ммм... товарищь прыгун, а закрыть последнюю строку вместе с незаконченными столбцами?
     
  10. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    draak
    Прежде чем советовать подумай, а знаешь ли ты что говоришь ?

    Nikola
    РЕШЕНИЕ №1: (самое простое)
    Берёшь данные, запихиваешь их из MySQL в двух-мерный массив (почти так как draak их выводит, только нормально, без извращений) а потом выводишь построчно с помощью foreach() и implode()

    Добавлено спустя штаны: (с) Vladson

    А вообще Nikola тебе сегодня наверное повезло, вот тебе готовое решение...
    PHP:
    1. <?php
    2. // Сами данные
    3. $array = array(1, 2, 3, 4, 5, 6, 7, 8);
    4.  
    5. // Количество ячеек
    6. $cols = 3;
    7.  
    8. // Количество строчек
    9. $rows = ceil(count($array)/$cols);
    10.  
    11. // Подгоовка данных
    12. $temp = array();
    13. for ($i=0; $i<$rows; $i++) {
    14.     // Заполнение простых ячеек
    15.     $temp[$i] = array_slice($array, ($i*$cols), $cols);
    16.     // Заполнение пустых ячеек (если есть)
    17.     $extra = $cols - count($temp[$i]);
    18.     for($j=0; $j<$extra; $j++) $temp[$i][] = '-';
    19. }
    20.  
    21. // Вывод на экран
    22. echo '<table border>';
    23. foreach ($temp as $row) {
    24.     echo '<tr><td>' . implode('</td><td>', $row) . '</td></tr>';
    25. }
    26. echo '</table>';
    27.  
    28. // Конец :)
    29. ?>
    (мне просто нечно подобное как раз сегодня понадобится, по этому и написал)
     
  11. avm

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

    С нами с:
    21 сен 2006
    Сообщения:
    597
    Симпатии:
    0
    Адрес:
    Москва
    Есть такая замечательная функция в php >= 4.2.0 -- array_chunk

    решение с ней могло бы выглядеть так:
    PHP:
    1.  
    2. <?php
    3. $array = array('a', 'b', 'c', 'd', 'e', 'f', 'g');
    4.  
    5. $rows = array_chunk($array,3);
    6.  
    7. print "<table>";
    8. foreach($rows as $row) {
    9.     print " <tr>";
    10.     foreach($row as $cell) print "<td>{$cell}</td>";
    11.     print "</tr>\n";
    12. }
    13. print "</table>\n";
    14. ?>
    15.  
    Если для несуществующих ячеек последней строки нет потребности делать красотищу, то их можно и не выводить вообще ;) ...
     
  12. есть такой замечательный оператор в пхп, начиная с самой первой версии - for
    при его использовании ни array_chunk не нужен, ни массив (данные могут читаться из потока), ни наведение красоты.
     
  13. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Грубое нарушение.

    Шило на мыло :)
     
  14. avm

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

    С нами с:
    21 сен 2006
    Сообщения:
    597
    Симпатии:
    0
    Адрес:
    Москва
    Чебурген, следуя такой логике, есть не менее прикольный оператор - if и нормальный запас трудолюбия... :lol:
     
  15. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Если есть запас трудолюбия то достаточно Notepad или другой текстовой редактор :D (даже РНР не нужен)
     
  16. avm
    А подумать?
     
  17. avm

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

    С нами с:
    21 сен 2006
    Сообщения:
    597
    Симпатии:
    0
    Адрес:
    Москва
    грубое нарушение ЧЕГО?

    Вот html код сгенерированный на основании моего примера. DTD Strict!
    Код (Text):
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html>
    3. <head>
    4.     <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    5.     <title>x</title>
    6. </head>
    7.  
    8. <body>
    9.  
    10. <table>
    11.  <tr><td>a</td><td>b</td><td>c</td></tr>
    12.  <tr><td>d</td><td>e</td><td>f</td></tr>
    13.  <tr><td>g</td></tr>
    14. </table>
    15.  
    16. </body>
    17. </html>
    Вот http://validator.w3.org/

    И какой будет результат? Так чего же "грубое нарушение", а? Правильно - ничего, кроме предубеждений...

    Чебурген, а у вас сложилось впечатление что я говорю не думая?...
     
  18. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    1 - Предупреждения это не ошибки, но и не просто так (как и нотисы РНР)
    2 - При неудачном стечении обстоятельств вся вёрстка поедет.
     
  19. "слепые" ячейки
     
  20. avm

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

    С нами с:
    21 сен 2006
    Сообщения:
    597
    Симпатии:
    0
    Адрес:
    Москва
    единственное что идет на ум - это невозможность для несуществующих ячеек нарисовать корректные бордеры и фон... но о красотище я же сразу сказал!
     
  21. Anonymous

    Anonymous Guest

    Поимейте совесть!
    Я, вместо того что бы рядом со своей будущей женой спать спокойно, сижу тут ночью, и чищу ваш флуд. Мне и обычных балбесов на форуме за глаза, а еще тут вы, как дети деретесь...
     
  22. avm

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

    С нами с:
    21 сен 2006
    Сообщения:
    597
    Симпатии:
    0
    Адрес:
    Москва
    Хоть и подчистили тему, но все-таки немного вернусь
    напомню, что речь о выборке из mysql, и ни о каком потоке речи быть не может. А вот массив - уже есть.

    Уверен, что написать два вложенных for это далеко не эффективнее чем одну строку с array_chunk. Кроме того циклы php обрабатывает медленнее, чем встроенные скомпиленные функции.
     
  23. Поэтому хотелось бы разъяснений, поподробнее.
    "такой" - это какой?
    Что в этой логике неудачного? Конкретно.
    И какая связь с трудолюбием и оператором if
     
  24. avm

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

    С нами с:
    21 сен 2006
    Сообщения:
    597
    Симпатии:
    0
    Адрес:
    Москва
    Чебурген, блин, да пошутил я!
     
  25. Хех. До меня дошло, что именно ты не понял. А жаль. пришлось такую уничтожительную тираду стереть.

    циклы for служат не для замены твоей array_chunk (которая здесь не пришей кобыле хвост).
    вот уж мне делать нечего, как писать комментарий с советом заменять встроенные функции кодом. (это ж каким дураком надо меня считать, чтобы так подумать...)

    for служат заменой foreach
    и коду сразу перестают требоваться
    - array-chunk, который рубит массив
    - сам массив
    - дополнительный код для украшения, поскольку ячеек выводится ровно столько, сколько нужно.