За последние 24 часа нас посетили 22254 программиста и 1158 роботов. Сейчас ищут 792 программиста ...

Динамически создать таблицу

Тема в разделе "PHP для новичков", создана пользователем simple, 6 апр 2011.

  1. simple

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

    С нами с:
    17 сен 2010
    Сообщения:
    56
    Симпатии:
    0
    Всем привет, не подскажите хороший способ создания таблицы html на лету средствами php?
    Я вот вывожу тупо в echo:
    echo '<table><tr>';
    код на php
    echo '</tr></table>';

    Но говорят что выводить через echo большой html код считается не правильно, а как тогда правильно если надо динамически таблицу составить?
    Или правильней будет на JS таблицу составлять?
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    глупости говорят. =)
     
  3. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    +1

    альтернатива - юзать шаблонизаторы. но там используется зачастую тот же эхо :)
    просто многим не нравится когда сильно мешают код пхп и хтмл
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    код мешать не надо - не удобно потом раскрашивать дезигнеру.

    но в 80% случаев пофик - это раз. И в 19 оставшихся - никто все равно не будет переделывать дизайн, так что опять пофик. Но есть редкие проекты когда надо делать отдельно шаблон - допустим магазин или новости или файлопомойка: дизайн может меняться, код остается.
     
  5. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    PHP:
    1. <?php
    2.  
    3. ini_set('display_errors',1);
    4.  
    5. echo '<table border=2>';
    6.  
    7. for($j=0;$j<10;$j++)
    8. {
    9. echo '<tr>';
    10.  
    11. for($i=0;$i<10;$i++)
    12.  
    13. {
    14. echo '<td>5</td>';
    15. }
    16. echo '</tr>';
    17. }
    18.  
    19. echo '</table>';
    20.  
    21.  
    22.  
    23. ?>
     
  6. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    или так

    PHP:
    1. <?php
    2.  
    3. ini_set('display_errors',1);
    4.  
    5.  
    6. ?>
    7.  
    8.  
    9.  
    10. <table border=2>
    11.  
    12. <?
    13.  
    14. for($j=0;$j<5;$j++)
    15. {
    16. ?>
    17.  
    18. <tr>
    19.  
    20. <?
    21.  
    22. for($i=0;$i<5;$i++)
    23.  
    24. {
    25.  
    26. ?>
    27.  
    28. <td>5</td>
    29.  
    30. <?
    31.  
    32. }
    33.  
    34. ?>
    35.  
    36. </tr>
    37.  
    38. <?
    39.  
    40. }
    41.  
    42. ?>
    43.  
    44. </table>

    По мне...так выбор очевиден.
     
  7. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Блиа, не надо по своей неопытности пургу гнять и распугивать людей.
    РНР - замечательный шаблонизатор и имеет для HTML альтернативный синтаксис:

    PHP:
    1. <table style="border: 2px solid #000">
    2.  
    3. <?php for($j=0; $j < 5; $j++): ?>
    4.   <tr>
    5.     <?php for($i=0;$i<5;$i++): ?>
    6.       <td>&nbsp;</td>
    7.     <?php endfor ?>
    8.   </tr>
    9. <?php endfor ?>
    10.  
    11. </table>
     
  8. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    Apple


    а я вот хоть убей не люблю альернативный синтаксис..)) и кстати судя по форумам и темам редко кто его использует..))
     
  9. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    И теперь из-за твоей "нелюбви" к нему его никто не должен использовать?
     
  10. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Dima4321
    Я например использую его чуть более чем всегда)))) Очень удобная штука.
     
  11. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Я это делаю таким монстр-шаблоном:
    PHP:
    1. <?php if(!$data) return; ?>
    2. <table <?php if ($tabId){echo "id='$tabId'";}?> <?php if ($class){echo "class='$class'"; } ?>>
    3. <?php if ($title){ ?>
    4.     <caption><?php echo $title; ?></caption>
    5. <?php } ?>
    6.     <thead>
    7.         <tr>
    8. <?php foreach(array_keys($data[key($data)]) as $thead) {?>
    9.             <th><?php echo $thead; ?></th>
    10. <?php } ?>
    11.         </tr>
    12.     </thead>
    13. <?php if($footData) { ?>
    14.     <tfoot>
    15.         <tr>
    16. <?php foreach($footData as $tfoot) {?>
    17.             <td><?php echo $tfoot; ?></td>
    18. <?php } ?>
    19.         </tr>
    20.     </tfoot>
    21. <?php } ?>
    22.     <tbody>
    23. <?php foreach($data as $row){ ?>
    24.         <tr>
    25. <?php foreach ($row as $cellData){?>
    26.             <td><?php echo $cellData; ?></td>
    27. <?php } ?>
    28.         </tr>
    29. <?php } ?>
    30.     </tbody>
    31. </table>
    и да альтернативный синтаксис нагляднее.
     
  12. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    а я даже альтернативным не пользуюсь. мне и обычный очень нагляден.

    PHP:
    1. <?
    2.       ////////////////////////////////////////////////////////////////////////////////////////
    3.       // Рисуем форму   <editor-fold defaultstate="collapsed" desc="Рисуем форму">
    4.       $worktypes = DB::assoc("SELECT * FROM `worktypes` WHERE `enabled` = 0");
    5.  
    6.       $disgroups = DB::assoc_id("SELECT * FROM `disgroups` WHERE `enabled` = 0");
    7.       $disgroups[0]['name'] = "Без группы";
    8.       ksort($disgroups);
    9.  
    10.       $disciplines = DB::assoc_sorted("SELECT * FROM `disciplines` WHERE `enabled`='0' AND `group` IN (" . implode(', ', array_keys($disgroups)) . ") ORDER BY `group`", 'group');
    11.  
    12.       if (!empty($disgroups) AND !empty($disciplines) AND !empty($worktypes)) {
    13.         //список типов работ, он всегда одинаковый.
    14.         foreach ($worktypes as $worktype) {
    15.           $wtlist .= "    <td>{$worktype['name']}</td>\n";
    16.         }
    17.  
    18.         //чеклист на автора
    19.         $checks = array();
    20.         $cube = DB::assoc("SELECT * FROM `cube` WHERE `author` = '" . User::$card_id . "'");
    21.         if (!empty($cube)) {
    22.           foreach ($cube as $row) {
    23.             $checks[$row['discipline']][$row['worktype']] = true;
    24.           }
    25.         }
    26.         echo "<form action='" . URI::$url . "' method='POST'>";
    27.         foreach ($disgroups as $gkey => $group) {
    28.           echo "<div class='disgroup'>\n  ";
    29.           echo Site::SmallButton("<h3>{$group['name']}</h3>", 'plus-button', '', "$('#dislist-$gkey').toggle();");
    30.           echo "\n  <table class='dislist' id='dislist-$gkey'>\n    <tr>\n    <td>дисциплина</td>\n$wtlist    </tr>\n";
    31.           foreach ($disciplines[$gkey] as $dkey => $discipline) {
    32.             echo "    <tr>\n      <td>{$discipline['name']}</td>\n";
    33.             foreach ($worktypes as $worktype) {
    34.               echo "      <td><input type='checkbox' name='v[$dkey][{$worktype['id']}]' " . (isset($checks[$dkey][$worktype['id']]) ? 'checked' : '') . "></td>\n";
    35.             }
    36.             echo "    </tr>\n";
    37.           }
    38.           echo "  </table>\n</div>\n\n";
    39.         }
    40.         echo "<input type='submit' value='Сохранить' name='savechecklist'></form>";
    41.       }
    42.       //, Рисуем форму   </editor-fold>
    43.       ////////////////////////////////////////////////////////////////////////////////////////.
    у дива есть класс, у таблицы есть класс - все дизайнится через css-хи. если надо будет добавить еще один класс - никто не запутается.