簡體   English   中英

帶有下拉類別的搜索欄。 搜索結果未從數據庫中提取並顯示

[英]Search bar with dropdown catagories. Search results not pulling from database and showing

因此,我希望使用搜索欄搜索mysql數據庫中的記錄並將其顯示在網頁上。 它應該允許用戶選擇他們要搜索的字段,但不顯示另一端的記錄。 有任何想法嗎?

的HTML:

  <form action='recordresult.php' method='POST' name='form_filter' class="form-style-1" > <b>Search</b><br> <select name="selectVal"> <option value="category" >Select a category</option> <option value="first_name">First Name</option> <option value="surname">Surname</option> <option value="address">Address</option> <option value="phonenumber">Telephone</option> </select> <input type='text' name='search' placeholder='Enter text here...'><br> <input type='submit' value='Send'> </form> 

的PHP

 <?php include("config.php"); $link = mysqli_connect($server, $db_user, $db_pass) or die ("Could not connect to mysql because ".mysqli_error($link)); // select the database mysqli_select_db($link, $database) or die ("Could not select database because ".mysqli_error($link)); $search = isset($_POST['search']) ? htmlspecialchars(trim($_POST['search'])) : null; $catLocation = isset($_POST['selectVal']) ? htmlspecialchars(trim($_POST['selectVal'])) : null; $query = "SELECT * FROM $table WHERE "; //YOU INDICATED YOU'D NEED TO RUN THE SEARCH-QUERY IF THE SEARCH-TERM AND SEARCH-SCOPE ARE DEFINED IE: NOT NULL; HOWEVER IF THE SEARCH TERM IS NOT GIVEN, YOU SELECT EVERYTHING IN THAT TABLE... (BAD PRACTICE, THOUGH) if($catLocation){ if($search){ if($catLocation == "category"){ $query .= " category LIKE '%" . $search . "%'"; } else if($catLocation == "first_name"){ $query .= "first_name LIKE '%" . $search . "%'"; } else if($catLocation == "surname"){ $query .= "surname LIKE '%" . $search . "%'"; } else if($catLocation == "address"){ $query .= "address LIKE '%" . $search . "%'"; } else if($catLocation == "phonenumber"){ $query .= "phonenumber LIKE '%" . $search . "%'"; } } else{ $query .= "1"; } $sql = mysqli_query($query); //HERE AGAIN WAS AN ERROR... YOU PASSED mysql_fetch_array A STRING $query INSTEAD OF A RESOURCE: $sql while ($row = mysqli_fetch_array($sql)){ $firstname = $row["first_name"]; $surname = $row["surname"]; $address = $row["address"]; $phonenumber = $row['phonenumber']; echo "First Name : $firstname<br>"; echo "Surname : $surname<br>"; echo "Address : $address<br>"; echo "Phone Number: $phonenumber<br>"; } } ?> 

該代碼僅在應有的空白區域不提供任何錯誤。 還想知道是否有人可以將first_name和firstname作為字段並搜索說“ Emma Watson”,並且如果其中有一個單詞能夠從兩個字段返回結果?

感謝你的幫助!

請檢查下面的更新代碼

include("config.php");
$link = mysqli_connect($server, $db_user, $db_pass) or die ("Could not connect to mysql because ".mysqli_error($link));

// select the database
mysqli_select_db($link, $database)
or die ("Could not select database because ".mysqli_error($link));

$search         = isset($_POST['search'])       ? htmlspecialchars(trim($_POST['search']))      : null;
$catLocation    = isset($_POST['selectVal'])    ? htmlspecialchars(trim($_POST['selectVal']))   : null;
$query          = "SELECT * FROM $table WHERE ";

//**If you want to merge for first name and surname then you need to merge both query with OR condition as below**
if($catLocation){
    if($search){
        if($catLocation == "category"){
            $query .= " category LIKE '%" . $search . "%'";
        }
        else if($catLocation == "name"){
            $query .=  " ( first_name LIKE '%" . $search . "%' OR surname LIKE '%" . $search . "%' ) ";
        }
        else if($catLocation == "address"){
            $query .=  "address LIKE '%" . $search . "%'";
        }
        else if($catLocation == "phonenumber"){
            $query .=  "phonenumber LIKE '%" . $search . "%'";
        }
    }   
    else{
        $query .= "1";            
    }

    $sql = mysqli_query($link, $query); // **Adding reference connection variable**

    while ($row = mysqli_fetch_array($sql)){
        $firstname  = $row["first_name"];
        $surname    = $row["surname"];
        $address   = $row["address"];
        $phonenumber = $row['phonenumber'];


        echo "First Name :  $firstname<br>";
        echo "Surname : $surname<br>";
        echo "Address : $address<br>";
        echo "Phone Number: $phonenumber<br>";

    }

}

將兩個字段(名字和姓氏)合並為一個(名稱)以在兩個字段中進行搜索

<form action='recordresult.php' method='POST' name='form_filter' class="form-style-1" >    
<b>Search</b><br>
<select name="selectVal">
    <option value="category" >Select a category</option>
    <option value="name">name</option>
    <option value="address">Address</option>
    <option value="phonenumber">Telephone</option>
</select>
<input type='text' name='search' placeholder='Enter text here...'><br>
<input type='submit' value='Send'>  
</form>

暫無
暫無

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

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