Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Алгоритм создания таблиц результатов


Автор: Guedda 4.9.2007, 12:25
В общем, ситуация следующая:
Есть массив 
Код

$massiv = array('first','second','third'); // Элементов может быть много

Элементов может быть несколько. Так вот мне необходимо сделать так, чтобы все элементы были и заголовками столбцов, и заголовками строк, т.е. приблизительно так, как показано на рисунке:
user posted image

Помогите разобраться. Уже всю голову сломал. Парюсь очень.

Заранее благодарен.

Автор: console 4.9.2007, 13:13
Генерировать двумерный массив надо

Автор: Guedda 4.9.2007, 13:18
 smile 

Автор: sTa1kEr 4.9.2007, 13:21
Guedda, сделать 3 цикла, один для хидеров, второй со вложеным циклом для строк и ячеек с данными
Код

$massiv = array('first','second','third', 'some else', 'five', 'more', 'again'); // Элементов может быть много

$table = <<< EOF
<table border="1">
<tr>
<th><!-- Empty cell -->\xA0</th>\n
EOF;
foreach($massiv as $header)
{
   $table .= "<th>$header</th>\n";
}

$table .= "</tr>\n";

foreach($massiv as $row)
{
   $table .= "<tr>\n";
   $table .= "<th>$row</th>\n";
   foreach($massiv as $col)
   {
      $table .= "<td><!-- Some data for cell $row/$col -->\xA0</td>\n";
   }
   $table .= "</tr>\n";
}
$table .= "</table>";
echo $table;

Автор: SelenIT 4.9.2007, 13:24
Имхо, если без двумерного массива - то в простейшем случае - как-то так:
Код

<table>
<?
// вывод заголовка
echo '<tr><td></td><td>'.implode('</td><td>',$massiv).'</td></tr>';
// вывод строк
foreach ($massiv as $rowEement) {
   // вывод первой ячейки с названием элемента
   echo '<tr><td>'.$rowEement.'</td>';
   foreach ($massiv as $colEement) {
      // тут вычисляется сам результат
      $result = calculateResult($rowEement, $colEement); // для примера
      echo '<td>'.$result.'</td>';
   }
   echo '</tr>';
}
?>
</table>

upd. пока набирал - sTa1kEr опередил практически с тем же;)

Для более детального ответа хорошо бы узнать, как эти результаты хранятся...

Автор: BuShaRt 4.9.2007, 13:27
Код

<?php
include_once ("mysql.php"); $db=new DB ();
$db->query('DROP TABLE `test`');
$massiv = array('first','second','third');
$greate_table_query = "CREATE table `test` (id VARCHAR (255) NOT NULL, ";
for ($i=0; $i < count($massiv); $i++) {
    if ($i+1==count($massiv)) {
           $greate_table_query .= " `".$massiv[$i]."`  VARCHAR (255) NOT NULL";
            break;
    }
        $greate_table_query .= " `".$massiv[$i]."`  VARCHAR (255) NOT NULL, ";
}
$greate_table_query .= ")";
$db->query($greate_table_query);
foreach ($massiv as $val) {
    $db->query("INSERT INTO `test` (`id`) VALUES ('".$val."')");
}
?>


Вот, набросал на обеденном перерыве smile
Может можно и проще, но это первое, что пришло в голову smile

Автор: sTa1kEr 4.9.2007, 13:31
SelenIT, забавно, мы одновременно практически одинаковые примеры привели smile

Автор: BuShaRt 4.9.2007, 13:33
sTa1kEr, 
-) Просто интересная задачка, креативная ;)

Автор: Guedda 4.9.2007, 13:51
Спасибо всем, воспользовался вариантом sTa1kEr. Но плюсы ставлю всем за участие ;)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)