PHP - исключая пустые строки при печати таблицы - PullRequest
3 голосов
/ 15 июля 2009

Код ниже прекрасно работает. Он печатает элементы в базе данных MySQL в виде таблицы HTML. Однако в базе данных есть записи, в которых первый столбец (переменная «site») пуст. Как я могу эту таблицу исключить строки / записи, где "сайт" пусто?

$result=mysql_query("SHOW TABLES FROM database LIKE '$find'")
or die(mysql_error());


if(mysql_num_rows($result)>0){
while($table=mysql_fetch_row($result)){
print "<p class=\"topic\">$table[0]</p>\n";
$r=mysql_query("SELECT * , itemsa - itemsb AS itemstotal FROM `$table[0]` ORDER BY itemstotal DESC");



print "<table class=\"navbar\">\n";
while($row=mysql_fetch_array($r)){


$itemstotal = $row['itemsa'] - $row['itemsb']; 

print "<tr>";


print "<td class='sitename'>".'<a type="amzn" category="books" class="links2">'.$row['site'].'</a>'."</td>";

print "<td class='class1'>".'<span class="class1_count" id="class1_count'.$row['id'].'">'.number_format($itemstotal).'</span>'."</td>";
print "<td class='selector'>".'<span class="button" id="button'.$row['id'].'">'.'<a href="javascript:;" class="cell1" id="'.$row['id'].'">'.Select.'</a>'.'</span>'."</td>";
}
print "</tr>\n";
}
print "</table>\n";



}
else{
print "";
}

Ответы [ 4 ]

7 голосов
/ 15 июля 2009

Добавить предложение where в запрос SQL.

WHERE `site` <> ''
or
WHERE `site` != ''

должно работать.

Однако, если вы хотите, чтобы строки, в которых сайт был пустым для других параметров PHP, было бы лучше отфильтровать пустые сайты в PHP, а не в запросе MySQL.

0 голосов
/ 15 июля 2009
    while($row=mysql_fetch_array($r)){
if($row['site'] != "") {
    $itemstotal = $row['itemsa'] - $row['itemsb']; 
    print "<tr>";
    print "<td class='sitename'>".'<a type="amzn" category="books" class="links2">'.$row['site'].'</a>'."</td>";
    print "<td class='class1'>".'<span class="class1_count" id="class1_count'.$row['id'].'">'.number_format($itemstotal).'</span>'."</td>";
    print "<td class='selector'>".'<span class="button" id="button'.$row['id'].'">'.'<a href="javascript:;" class="cell1" id="'.$row['id'].'">'.Select.'</a>'.'</span>'."</td>";
}
}
0 голосов
/ 15 июля 2009

Самое простое решение было бы вставить следующую строку в ваш внутренний while блок:

while($row=mysql_fetch_array($r)){

if (!trim($row['site'])) continue; // skip empty rows

$itemstotal = $row['itemsa'] - $row['itemsb'];

Редактировать: На самом деле, похоже, что $itemstotal переменная не нужна; он вычисляется как «виртуальный» столбец itemstotal в запросе SQL. Если вы замените "number_format($itemstotal)" на "number_format($row['itemstotal'])" на несколько строк ниже, вы можете полностью избавиться от строки "$itemstotal = ...".

0 голосов
/ 15 июля 2009

Просто поместите следующее перед print вызовами в цикле while:

if (trim($row['site']) == '') {
    // skip output of this row if site is empty
    continue;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...