Всем привет, не подскажите хороший способ создания таблицы html на лету средствами php? Я вот вывожу тупо в echo: echo '<table><tr>'; код на php echo '</tr></table>'; Но говорят что выводить через echo большой html код считается не правильно, а как тогда правильно если надо динамически таблицу составить? Или правильней будет на JS таблицу составлять?
+1 альтернатива - юзать шаблонизаторы. но там используется зачастую тот же эхо просто многим не нравится когда сильно мешают код пхп и хтмл
код мешать не надо - не удобно потом раскрашивать дезигнеру. но в 80% случаев пофик - это раз. И в 19 оставшихся - никто все равно не будет переделывать дизайн, так что опять пофик. Но есть редкие проекты когда надо делать отдельно шаблон - допустим магазин или новости или файлопомойка: дизайн может меняться, код остается.
PHP: <?php ini_set('display_errors',1); error_reporting(E_ALL); echo '<table border=2>'; for($j=0;$j<10;$j++) { echo '<tr>'; for($i=0;$i<10;$i++) { echo '<td>5</td>'; } echo '</tr>'; } echo '</table>'; ?>
или так PHP: <?php ini_set('display_errors',1); error_reporting(E_ALL); ?> <table border=2> <? for($j=0;$j<5;$j++) { ?> <tr> <? for($i=0;$i<5;$i++) { ?> <td>5</td> <? } ?> </tr> <? } ?> </table> По мне...так выбор очевиден.
Блиа, не надо по своей неопытности пургу гнять и распугивать людей. РНР - замечательный шаблонизатор и имеет для HTML альтернативный синтаксис: PHP: <table style="border: 2px solid #000"> <?php for($j=0; $j < 5; $j++): ?> <tr> <?php for($i=0;$i<5;$i++): ?> <td> </td> <?php endfor ?> </tr> <?php endfor ?> </table>
Apple а я вот хоть убей не люблю альернативный синтаксис..)) и кстати судя по форумам и темам редко кто его использует..))
Я это делаю таким монстр-шаблоном: PHP: <?php if(!$data) return; ?> <table <?php if ($tabId){echo "id='$tabId'";}?> <?php if ($class){echo "class='$class'"; } ?>> <?php if ($title){ ?> <caption><?php echo $title; ?></caption> <?php } ?> <thead> <tr> <?php foreach(array_keys($data[key($data)]) as $thead) {?> <th><?php echo $thead; ?></th> <?php } ?> </tr> </thead> <?php if($footData) { ?> <tfoot> <tr> <?php foreach($footData as $tfoot) {?> <td><?php echo $tfoot; ?></td> <?php } ?> </tr> </tfoot> <?php } ?> <tbody> <?php foreach($data as $row){ ?> <tr> <?php foreach ($row as $cellData){?> <td><?php echo $cellData; ?></td> <?php } ?> </tr> <?php } ?> </tbody> </table> и да альтернативный синтаксис нагляднее.
а я даже альтернативным не пользуюсь. мне и обычный очень нагляден. PHP: <? //////////////////////////////////////////////////////////////////////////////////////// // Рисуем форму <editor-fold defaultstate="collapsed" desc="Рисуем форму"> $worktypes = DB::assoc("SELECT * FROM `worktypes` WHERE `enabled` = 0"); $disgroups = DB::assoc_id("SELECT * FROM `disgroups` WHERE `enabled` = 0"); $disgroups[0]['name'] = "Без группы"; ksort($disgroups); $disciplines = DB::assoc_sorted("SELECT * FROM `disciplines` WHERE `enabled`='0' AND `group` IN (" . implode(', ', array_keys($disgroups)) . ") ORDER BY `group`", 'group'); if (!empty($disgroups) AND !empty($disciplines) AND !empty($worktypes)) { //список типов работ, он всегда одинаковый. foreach ($worktypes as $worktype) { $wtlist .= " <td>{$worktype['name']}</td>\n"; } //чеклист на автора $checks = array(); $cube = DB::assoc("SELECT * FROM `cube` WHERE `author` = '" . User::$card_id . "'"); if (!empty($cube)) { foreach ($cube as $row) { $checks[$row['discipline']][$row['worktype']] = true; } } echo "<form action='" . URI::$url . "' method='POST'>"; foreach ($disgroups as $gkey => $group) { echo "<div class='disgroup'>\n "; echo Site::SmallButton("<h3>{$group['name']}</h3>", 'plus-button', '', "$('#dislist-$gkey').toggle();"); echo "\n <table class='dislist' id='dislist-$gkey'>\n <tr>\n <td>дисциплина</td>\n$wtlist </tr>\n"; foreach ($disciplines[$gkey] as $dkey => $discipline) { echo " <tr>\n <td>{$discipline['name']}</td>\n"; foreach ($worktypes as $worktype) { echo " <td><input type='checkbox' name='v[$dkey][{$worktype['id']}]' " . (isset($checks[$dkey][$worktype['id']]) ? 'checked' : '') . "></td>\n"; } echo " </tr>\n"; } echo " </table>\n</div>\n\n"; } echo "<input type='submit' value='Сохранить' name='savechecklist'></form>"; } //, Рисуем форму </editor-fold> ////////////////////////////////////////////////////////////////////////////////////////. у дива есть класс, у таблицы есть класс - все дизайнится через css-хи. если надо будет добавить еще один класс - никто не запутается.