首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Destoon 自定義搜尋下拉選單實作教程:從函數封裝到模板調用

     編輯:PHP 綜合知識

核心思路

在 include/global.fun.php 新增兩個工具函數,再於模組搜尋文件與模板中調用,實現自定義字段的下拉篩選功能。

步驟一:新增工具函數

1. loseSpace() — 過濾空白字元

function loseSpace($pcon) {
    $pcon = preg_replace("/ /", "", $pcon);
    $pcon = preg_replace("/ /", "", $pcon);
    $pcon = preg_replace("/\r\n/", "", $pcon);
    $pcon = str_replace(chr(13), "", $pcon);
    $pcon = str_replace(chr(10), "", $pcon);
    $pcon = str_replace(chr(9), "", $pcon);
    return $pcon;
}

2. select_search() — 生成下拉選單

function select_search($name, $tb, $fid) {
    global $db;
    $title = "<select name=\"{$name}\"><option value=\"\">所有</option>";
    $r = $db->get_one("SELECT option_value FROM {$db->pre}fields WHERE name='$name' and tb='$tb'");
    $option_value = loseSpace($r["option_value"]);
    $ps = explode("*", $option_value);  // 以 * 分割選項組
    $result = [];
    foreach ($ps as $s) {
        if (!$s) continue;
        list($num, $word) = explode("|", $s);  // 格式:值|顯示文字
        $result[$num] = $word;
    }
    foreach ($result as $n => $v) {
        $selected = ($n == $fid) ? ' selected' : '';
        $title .= "<option value=\"{$n}\"{$selected}>{$v}</option>";
    }
    $title .= "</select>";
    return $title;
}

說明:第一個函數過濾換行、空格、製表符;第二個函數根據字段名(name)、所屬模型(tb)、當前選中 ID(fid)動態生成 <select> 選單。

步驟二:修改模組搜尋邏輯

在 module/sell/search.inc.php 中:

  1. 在 $day = isset($day) ? intval($day) : 0; 下添加:
    $chengse = isset($chengse) ? intval($chengse) : 0;
  2. 在 if($vip) $condition .= " AND vip>0"; 下添加:
    if($chengse) $condition .= " AND chengse=$chengse";

步驟三:模板調用

在搜尋頁模板插入標簽:

{select_search(chengse,sell,$chengse)}

即可渲染出帶有「所有」選項、並根據當前條件自動選中的下拉篩選器。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved