簡體   English   中英

PHP高級搜索(具有多個選項)

[英]PHP advanced search with Multiple OPTION

我正在用php構建一個搜索字段,用戶可以在其中使用多個搜索選項搜索D​​octors信息。 搜索

如圖所示,用戶可以通過以下方式搜索:DR.NAME,SPECIALTY,DIVISION,LOCATION。 DR.NAME應該與任何關鍵字匹配,並且該表格不需要填寫任何字段。

這是我當前的代碼,無法正常工作。

doctorsearch.php

<?php
    error_reporting(0);

    include 'config.php';

    $d_fname = $_POST['d_fname'];
    $d_spcl = $_POST['d_spcl'];
    $d_division = $_POST['d_division'];
    $d_location = $_POST['d_location'];


    $qry = "SELECT * FROM doctor_reg WHERE ";
    if ($d_fname != '') {
        $qry .= "d_fname='".mysql_real_escape_string($d_fname)."' AND ";
    }
    if ($d_spcl != '') {
        $qry .= "d_spcl='".mysql_real_escape_string($d_spcl)."' AND ";
    }
    if ($d_division != '') {
        $qry .= "d_division='".mysql_real_escape_string($d_division)."' AND ";
    }
    if ($d_location != '') {
        $qry .= "d_location='".mysql_real_escape_string($d_location)."' AND ";
    }

    $result = mysql_query($result);

        ?>  

            <?php
            echo "<table border='1px solid #CCCCCC;' width='100%'>";
            echo "<tr style='color:#FFFFFF;background:#555555;'>";
            echo "<th style='padding:3px;'>Name</th>";


            while($row = mysql_fetch_array($result)){
                echo "<tr class='trbd'>";
            echo "<td style='padding:3px;'>".$row['d_fname'].' '.$row['d_lname']."</td>";

            ?>

            <?php
            echo "</tr>";

    }
            echo "</table>";
    ?>

您需要添加OR而不是AND

通常,當用戶搜索時,他們通過OR條件進行搜索。

例如:醫生名稱應為Sharma或位置應為東街。

如果我們使用AND條件進行搜索,則數據庫將僅搜索具有確切組合的記錄。

AND返回true ,如果所有條件都滿足。

OR返回true ,如果任何條件為真。

因此, OR在這里是正確的語法。

更正的代碼:

$qry = "SELECT * FROM doctor_reg";
$searchArray = array();
if ($d_fname != '') {
 $searchArray[] = "d_fname LIKE '%".mysql_real_escape_string($d_fname) . "%'";
}
if ($d_spcl != '') {
 $searchArray[] = "d_spcl LIKE '%".mysql_real_escape_string($d_spcl) . "%'";
}
if ($d_division != '') {
 $searchArray[] = "d_division LIKE '%".mysql_real_escape_string($d_division) . "%'";
}
if ($d_location != '') {
 $searchArray[] = "d_location LIKE '%".mysql_real_escape_string($d_location) . "%'";
}
$qry .= ! empty($searchArray) ? " WHERE " . implode(" OR ", $searchArray) : '';

如果您希望關鍵字不完全匹配,則應使用like代替=運算符,因此請更改此設置

if ($d_fname != '') {
    $qry .= "d_fname='".mysql_real_escape_string($d_fname)."' AND ";
}

進入這個

if ($d_fname != '') {
    $qry .= "d_fname LIKE'%".mysql_real_escape_string($d_fname)."%' AND ";
}

暫無
暫無

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

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