簡體   English   中英

使用下拉列表從mysql數據庫中獲取數據,然后使用搜索功能從選定的下拉列表選項中過濾數據

[英]Fetch data from mysql database using drop down list and then use search function to filter data from selected drop down list option

我想結合使用帶有搜索功能(搜索欄和“確定”按鈕)的下拉列表(帶有過濾器/選項)。

當我在下拉列表中選擇過濾器/選項時,例如“ Team”。 然后,下拉列表應注意該列表已更改為過濾器/選項“ Team”。 之后,我使用搜索功能,在其中輸入搜索詞,例如“ USA”,然后按確定按鈕。 一旦按下“確定”按鈕,就會出現一個類似sql的查詢:SELECT * FROM mytable WHERE Team ='USA'; 生成以獲取數據庫“ mytable”中所有匹配的行。

  1. 選擇一個過濾器“團隊”。
  2. 選擇一個團隊,“美國”。
  3. 從db mytable中獲取具有相關數據的匹配行。

希望我能更好地理解自己,謝謝大家的時間!

這是我的代碼:

<html>
    <head> 
        <title>AiFind</title>
        <link rel="stylesheet" href="Style.css">
        <script src="logic.js"></script>

    </head>
    <body>
        <h1>AiFind</h1>
    </body>

</html>


<?php

include "connection.php";

$sql = "SELECT * FROM mytable";

if (isset($_POST['search'])) {

    $search_term = mysql_real_escape_string($_POST['search_box']);

    $sql .= " WHERE F_ar = '$search_term' ";
    $sql .= " OR Postnr = '$search_term' ";
    $sql .= " OR Postort = '$search_term' ";
    $sql .= " OR Vardgivare = '$search_term' ";
    $sql .= " OR Team = '$search_term' ";
    $sql .= " OR Orsak = '$search_term' ";
    $sql .= " OR Planerat_datum = '$search_term' ";
    $sql .= " OR fran = '$search_term' ";
    $sql .= " OR AAA_diam = '$search_term'; ";
}

$query = mysql_query($sql) or die(mysql_error());

?>

<form name="Select_filter" method="POST" action="VGR_data_display.php">
<select id="dropdown" name="filter">
<option value=""></option>
<option value="1">ID</option>
<option value="2">Alder</option>
<option value="3">Postnummer</option>
<option value="5">Postort</option>
<option value="6">Vårdgivare</option>
<option value="7">Planerat Datum</option>
<option value="8">Status</option>
<option value="9">AAA_diameter</option>
</select>
</form>


<!--search bar for search term input -->
<form name ="search_form" method="POST" action="VGR_data_display.php">

    <input id="search_box" type="text" name="search_box" value="" />
    <input id="submit" type ="submit" name ="search" value ="Ok">

</form>

<table style="margin:auto;" id="table" border='1'>
<tr>
<th>ID</th>
<th>F_ar</th>
<th>Postnr</th>
<th>Postort</th>
<th>Vardgivare</th>
<th>Team</th>
<th>Orsak</th>
<th>Planerat_datum</th>
<th>fran</th>
<th>AAA_diam</th>
</tr>


<?php while($row = mysql_fetch_array($query)) { ?>
  <tr>
  <td><?php echo $row['id']; ?></td>
  <td><?php echo $row['F_ar']; ?></td>
  <td><?php echo $row['Postnr']; ?></td>
  <td><?php echo $row['Postort']; ?></td>
  <td><?php echo $row['Vardgivare']; ?></td>
  <td><?php echo $row['Team']; ?></td>
  <td><?php echo $row['Orsak']; ?></td>
  <td><?php echo $row['Planerat_datum']; ?></td>
  <td><?php echo $row['fran']; ?></td>
  <td><?php echo $row['AAA_diam']; ?></td>
  </tr>

<?php } ?>

更改您的下拉列表,以便選擇值是數據庫列名稱。

<select id="dropdown" name="filter">
  <option value=""></option>
  <option value="ID">ID</option>
</select>

然后在PHP中:

if (isset($_POST['search'])) {

    $search_term = mysql_real_escape_string($_POST['search_box']);
    $column = mysql_real_escape_string($_POST['filter']);
}

的SQL

SELECT * FROM mytable where $column = '$search_term'

這意味着添加新選項很容易,並且節省了if / switch語句。 它還允許您在行內內置多個選項。

注意:如果您擔心要在表格中顯示列名,可以在構建下拉列表時對其進行加密,然后在需要使用它們時進行解密

編輯-基於評論。

在使用SQL之前:

$allowed[] = array("ID") //Add all allowed columns.
if (in_array($column, $allowed))
{
  //Run SQL
}

您可以在構建DDL時自動構建該數組。

如果我已正確理解,則只想搜索下拉列表中已選擇的列。 然后您要使用此:

if (isset($_POST['search'])) {

    $search_term = mysql_real_escape_string($_POST['search_box']);

    switch($_POST['filter']) {

        Default: 
            $sql .= " WHERE F_ar = '$search_term' ";
            break;
        case 1:
            $sql .= " WHERE Postnr = '$search_term' ";
            break;
        case 2:
            $sql .= " WHERE Postort = '$search_term' ";
            break;
        case 3:
            $sql .= " WHERE Vardgivare = '$search_term' ";
            break;
        case 4:
            $sql .= " WHERE Team = '$search_term' ";
            break;
        case 5:
            $sql .= " WHERE Orsak = '$search_term' ";
            break;
        case 6:
            $sql .= " WHERE Planerat_datum = '$search_term' ";
            break;
        case 7:
            $sql .= " WHERE fran = '$search_term' ";
            break;
        case 8:
            $sql .= " WHERE AAA_diam = '$search_term'; ";
            break;

    }
}


至於您的錯誤,您有兩種形式,您需要使所有內容都處於一種形式,例如:

 <form name="Select_filter" method="POST" action="VGR_data_display.php"> <select id="dropdown" name="filter"> <option value=""></option> <option value="1">ID</option> <option value="2">Alder</option> <option value="3">Postnummer</option> <option value="5">Postort</option> <option value="6">Vårdgivare</option> <option value="7">Planerat Datum</option> <option value="8">Status</option> <option value="9">AAA_diameter</option> </select> <!--search bar for search term input --> <input id="search_box" type="text" name="search_box" value="" /> <input id="submit" type ="submit" name ="search" value ="Ok"> </form> 

暫無
暫無

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

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