Построение динамической HTML-таблицы 5x6 - PullRequest
0 голосов
/ 23 февраля 2012

Я пытаюсь построить таблицу размером 5x6 динамически, используя PHP. Прямо сейчас я получаю свой стол, чтобы быть 1x30. Я, вероятно, пропускаю утверждение if или что-то, но просто не могу понять это. Небольшая помощь была бы отличной.

 $data = mysql_query("SELECT * FROM product") 
 or die(mysql_error());
 $info = mysql_fetch_array( $data );
 print "<table border cellpadding='0' cellspacing='0'>";
 while($info = mysql_fetch_array( $data )) 
 { 
 Print "<tr><td>".$info['name'] . "  <br /><img src=".$info['pictureURL'] . " /></td></tr>"; 
 }

print "</table>";

Вот демонстрация того, как это выглядит http://nova.it.rit.edu/~mpb8676/FinalProject/compare.php

Ответы [ 3 ]

2 голосов
/ 23 февраля 2012

Вы печатаете новую строку для каждой записи с этой строкой:

Print "<tr><td>".$info['name'] . "  <br /><img src=".$info['pictureURL'] . " /></td></tr>";

Если вы хотите таблицу 5x6, вам нужно будет добавить в счетчик столбца:

$data = mysql_query("SELECT * FROM product") 
or die(mysql_error());
$info = mysql_fetch_array( $data );
print "<table border cellpadding='0' cellspacing='0'>";
$numCols = 5;   // Max number of columns
$colCount = 0;  // Current column count (the counter)
while($info = mysql_fetch_array( $data )) 
{ 
    if ($colCount == 0) {
        Print "<tr>";
    }

    Print "<td>".$info['name'] . "  <br /><img src=".$info['pictureURL'] . " /></td>";

    $colCount++;

    if ($colCount >= $numCols) {
        Print "</tr>";
        $colCount = 0;
    }
}

print "</table>";

Определенно есть более эффективные способы решения этой проблемы, но я старался держать ваш код в такте, чтобы вы лучше поняли, в чем заключалась ваша проблема.

1 голос
/ 23 февраля 2012

Я считаю, что вам нужно больше тд:

  Print "<tr><td>".$info['name'] . "</td><td><img src=".$info['pictureURL'] . " /></td><td>and</td><td>so</td><td>on</td></tr>"; 
0 голосов
/ 23 февраля 2012

Вам нужно относиться к <tr> специально. Правильно, вы выводите одну одноклеточную строку для каждого результата в вашем запросе. Вместо этого вам нужно:

$cells_printed = 0;
while($info = mysql_fetch_array( $data )) {
   if ($cells_printed % 6 == 0) {
      echo '</tr><tr>'; // start a new row
   }
   echo '<td>blahblahblah</td>';
   $cells_printed++;
}

Это будет печатать теги <tr>, только когда ячейка, в которой вы находитесь, будет кратна 6, что означает, что вы достигли конца строки.

Вам понадобится дополнительный специальный корпус для обработки первой напечатанной строки, чтобы у вас не было висящего </tr> в начале таблицы, но этого должно быть достаточно, чтобы начать работу. Вам также понадобится специальная обработка регистра для последней строки, поэтому вы должны правильно закрыть строку, даже если в этот момент печатается не «шестая» ячейка.

...