HTML недопустим, если по запросу SQL не генерируются строки - PullRequest
0 голосов
/ 21 ноября 2011

Вот мой код:

echo '<table class="class1"><tbody>';
while ($row1=mysql_fetch_array($result1)){
 echo '<tr><td>'.$row1['firstname'].'</td><td>'.$row1['lastname'].'</td></tr>';
}
echo '</tbody></table>';

Когда я использую валидатор HTML, он возвращает исправное и правильное сообщение об ошибке "trimming empty <tbody>".Это происходит в случае, когда выбрано 0 строк.Итак, код выглядит как <table><tbody></tbody></table>, и это нехорошо.

Я думаю о лучшем способе исключения этой ошибки (не отображать эту таблицу вообще, когда есть 0 строк или что-то подобноечто), но я не знаю лучший способ, как это сделать.

Какая идея проверить if mysql_num_rows()>0 перед тем, как выбрать отображение echo '<table class="class1"><tbody>';?Есть идеи получше или это хорошо?

Ответы [ 3 ]

1 голос
/ 21 ноября 2011

Ваш план абсолютно в порядке.Не забудьте также включить закрывающий echo '</tbody></table>'; в if чек.

1 голос
/ 21 ноября 2011

Не уверен, является ли это наилучшей практикой или нет, но это должно сработать:

$string = "";
while ($row1=mysql_fetch_array($result1)){
  $string .= '<tr><td>'.$row1['firstname'].'</td><td>'.$row1['lastname'].'</td></tr>';
}
if ($string!="") {
  echo '<table class="class1"><tbody>';
  echo $string;
  echo '</tbody></table>';
}
1 голос
/ 21 ноября 2011

Используйте mysql_num_rows($result), чтобы проверить, имеет ли запрос какие-либо результаты. Если true, создайте таблицу + строки. В противном случае ничего не делать или добавить альтернативный блок:

if (mysql_num_rows($result) > 0) {
    echo '<table class="class1"><tbody>';
    while ($row1=mysql_fetch_array($result1)){
       echo '<tr><td>'.$row1['firstname'].'</td><td>'.$row1['lastname'].'</td></tr>';
    }
    echo '</tbody></table>';
} else { //Optional
    echo '<!-- Anything -->';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...