Я создаю базовую функцию поиска для корзины заказов.У меня есть цикл, который выглядит следующим образом:
$dataQuery = "SELECT * FROM `products` WHERE upper(`desc`) LIKE'%$find%'";
$data = mysql_query($dataQuery) or die(mysql_error());
$pageContent .= '
<table border="1">
<thead>
<tr>
<th>Stock Code</th>
<th>Description</th>
<th>Packsize</th>
<th>Price</th>
<th>In-Stock?</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>
';
//And we display the results
while($result = mysql_fetch_array( $data ))
{
$prId = $result['id'];
$prRefCode = $result['refCode'];
$prDesc = $result['desc'];
$prPack = $result['pack'];
$prMeasure = $result['measure'];
$prQuantity = $result['quantity'];
$prDeptCode = $result['deptCode'];
$prTaxable = $result['taxable'];
$prPrice1 = $result['price1'];
$prPrice2 = $result['price2'];
$prCrdCode = $result['crdCode'];
$prCost1 = $result['cost1'];
$prCost2 = $result['cost2'];
$pageContent .= '
<tr>
<td>'.$prId.'</td>
<td>'.$prDesc.'</td>
<td>'.$prPack.'x'.$prSize.' '.$prMeasure.'</td>
<td>R'.$prPrice1.'</td>
';
if (empty($prQuantity)) {
$pageContent .= '
<td>No</td>
';
} else {
$pageContent .= '
<td>Yes</td>
';
}
$pageContent .= '
<td>
<form action="" method="post">
<div>
<input type="hidden" name="id" value="'.$prId.'" />
<input type="submit" name="action" value="Order" />
</div>
</form>
</td>
</tr>
';
}
$pageContent .= '
</tbody>
</table>
';
//This counts the number or results - and if there wasn't any it gives them a little message explaining that
$anymatches=mysql_num_rows($data);
if ($anymatches == 0)
{
$pageContent .= '
<p>Sorry, but we can not find an entry to match your query</p>
';
}
//And we remind them what they searched for
$pageContent .= '
<p><b>Searched For:</b> '.$find.'</p>
';
}
$pageContent .= '
<br />
<p>All prices are inclusive of VAT</p>
';
Как вы можете видеть, это создает таблицу, которая отображает каждую строку продуктов таблицы, которая соответствует предложению where.
Что бы яНапример, к последнему результату цикла добавляется последнее вхождение $pageContent
, поэтому оно эффективно закрывает таблицу.Это может быть:
$pageContent .= '
</tbody>
</table>
';
В качестве дополнения, я хотел бы, чтобы первое вхождение $pageContent
было добавлено непосредственно перед циклом при вызове результатов, эффективно открывая таблицу.Это может произойти:
$pageContent .= '
<table border="1">
<thead>
<tr>
<th>Stock Code</th>
<th>Description</th>
<th>Packsize</th>
<th>Price</th>
<th>In-Stock?</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>
';
Проблема, с которой я сталкиваюсь, заключается в том, что если пользователь ищет недопустимую строку, параграф «Извините, но мы не можем найти запись, соответствующую вашему запросу», выводится взаголовок таблицы, которому не присвоены строки.Я пытаюсь создать эффект, при котором, если пользователь вводит недопустимую опцию поиска, этот абзац будет отображаться сам по себе без заголовка таблицы, что должно применяться только к вхождению действительной строки поиска.
ЕслиУ кого-то есть что-то по этому поводу, я был бы очень признателен!