2
データベースに10個以上の項目がある場合、ページングするように検索結果を取得しようとしています。何らかの理由で、コードが10個以上の項目を認識して後続ページのリンクを作成しても、すべての検索結果が最初のページにのみ表示されます。誰でもお手伝いできますか?コードは以下の通りです:PHP - 検索結果が改ページされていません
for($i = 0; $i < $terms_count; $i++)
{
$search_terms_array[$i] = trim($search_terms_array[$i]);
${"query".$i} = $this->mysqli_link->query("SELECT prod_id, prod_tags FROM table WHERE prod_tags LIKE '%" . $search_terms_array[$i] . "%'");
if(${"query".$i}->num_rows < 1)
{
$zerocount++;
}
else
{
$rows = array();
while($row = ${"query".$i}->fetch_array())
{
$rows[] = $row;
}
foreach($rows as $row)
{
$search_id_results[] = $row['prod_id'];
}
}
}
if($zerocount == $terms_count)
{
echo $this->err_handle->fetch_error_text("search_terms_0_results");
return;
}
else
{
$search_results = array_values(array_unique($search_id_results));
$search_results_count = count($search_results);
$search_page_count = ceil($search_results_count/10);
$search_page_first_result = ($search_page - 1) * 10;
echo '<p>Go to page: ';
for($i = 1; $i <= $search_page_count; $i++)
{
if($i == $search_page)
{
echo " <strong>" . $i . "</strong>";
}
else
{
echo ' <a href="index.php?section=products&action=search&page=' . $i . '">' . $i . '</a>';
}
}
echo '</p><p> </p><p> </p>';
for($i = 0; $i < $search_results_count; $i++)
{
$query = $this->mysqli_link->query("SELECT * FROM table WHERE prod_id='" . $search_results[$i] . "' LIMIT " . $search_page_first_result . ", 10");
while($row = $query->fetch_array())
{
echo "<h4><a href=\"index.php?section=products&subsection=" . $row['prod_category'] . "&prodid=" . $row['prod_id'] . "\">" . $row['prod_name'] . "</h4></a><p><img src=\"includes/images/product_images/" . $row['prod_category'] . "/" . $row['prod_pic_filename'] . "\" alt=\"\" width=\"150\" height=\"200\" /></p><p>Price: £" . $row['prod_price'] . "</p><p>" . $row['prod_code'] . "</p><input type=\"number\" name=\"prod_qty\" maxlength=\"2\" /><input type=\"submit\" name=\"add_to_basket\" value=\"Add To Basket\" /></form></p><p> </p><p> </p>";
}
}
echo '<p>Go to page: ';
for($i = 1; $i <= $search_page_count; $i++)
{
if($i == $search_page)
{
echo " <strong>" . $i . "</strong>";
}
else
{
echo ' <a href="index.php?section=products&action=search&page=' . $i . '">' . $i . '</a>';
}
}
echo '</p><p> </p><p> </p>';
}
私はあなたの検索に威力を発揮する同じクエリが、同じカウントを得るように、ページネーション要求にパワーを与えるべきだと思います。このようにすべてが同期しています。あなたは思いませんか? –
@ mueyiwa-moses-ikomiええ、それは私が '$ {"クエリ "$ i} = $ this-> mysqli_link->クエリ(" SELECT prod_id、prod_tags FROM table where prod_tags $ search_terms_array [$ i]。 "% 'LIMIT"。$ search_page_first_result。 "、10"); '最初の10個の結果だけが返され、ページングされません。 –
ページングの場合は、最初にカウントを取得し、それをあなたの限界値と比較する必要があります。あなたのクエリがあなたの限界よりも大きな数を返した場合、ページされるコンテンツがあります。あなたは今理解していますか?それに、あなたのスクリプトは定期的なページ設定で動作しますか? –