簡體   English   中英

過濾MySQL結果-PHP如何記住所選的類別?

[英]Filtering MySQL results-How can PHP remember selected category?

我有一個問題。 有我的PHP項目和“瀏覽”頁面,其中包含來自mysql表的結果。 我添加了一個過濾腳本,該腳本效果很好,但是每次我從一頁切換到另一頁時,它都會中斷並顯示所有結果(“ else”開始)。 PHP有什么方法可以記住所選的類別?

$c = new Pagination;

    if (isset($_POST['filter_category_button'])) {
        $category = $_POST['filter_category'];
        $c->setDefaults();
        $c->countAds("SELECT COUNT(*) as count FROM ads WHERE category LIKE '$category';");
        $c->PagenoOffset();
        $c->SelectLimitAd("SELECT id_ad,title,price,image_name,category,content FROM ads WHERE category LIKE '$category'");
    } else {
        $c->setDefaults();
        $c->countAds("SELECT COUNT(*) as count FROM ads;");
        $c->PagenoOffset();
        $c->SelectLimitAd("SELECT id_ad,title,price,image_name,category,content FROM ads");
    }

下面是一個分頁。

例如,您始終可以將數據存儲在$ _SESSION變量中。

$c = new Pagination;

if (isset($_POST['filter_category_button'])) {
   $_SESSION['filter_category'] = $_POST['filter_category']
   $category = $_POST['filter_category'];
   $c->setDefaults();
   $c->countAds("SELECT COUNT(*) as count FROM ads WHERE category LIKE '$category';");
   $c->PagenoOffset();
   $c->SelectLimitAd("SELECT id_ad,title,price,image_name,category,content FROM ads WHERE category LIKE '$category'");
} elseif (isset($_SESSION['filter_category'])) {
   $category = $_SESSION['filter_category'];
   $c->setDefaults();
   $c->countAds("SELECT COUNT(*) as count FROM ads WHERE category LIKE '$category';");
   $c->PagenoOffset();
   $c->SelectLimitAd("SELECT id_ad,title,price,image_name,category,content FROM ads WHERE category LIKE '$category'");
} else {
   $c->setDefaults();
   $c->countAds("SELECT COUNT(*) as count FROM ads;");
   $c->PagenoOffset();
   $c->SelectLimitAd("SELECT id_ad,title,price,image_name,category,content FROM ads");
}

您可以使用會話,或存儲某些文件中使用的最后一個過濾器。 我建議您使用會話,還有一點清理工作將幫助您調試並防止代碼重復,例如:

// make sure this is called in top level where nothing is rendered before
session_start();
$filter = $_SESSION['filter_category'] ?? null;
$c = new Pagination;

$sqlCount = "SELECT COUNT(*) as count FROM ads";
$sql = "SELECT id_ad,title,price,image_name,category,content FROM ads";
$where = " ";
if (isset($_POST['filter_category_button']) || $filter) {
   $category = $_POST['filter_category'] ?? $filter;
   $_SESSION['filter_category'] = $category;

   $where.= " WHERE category LIKE '".$category"'";
}

$sqlCount .= $where;
$sql .= $where;    


$c->setDefaults();
$c->countAds($sqlCount);
$c->PagenoOffset();
$c->SelectLimitAd($sql);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM