PHP,下拉菜单和搜索表单,如何传递变量来选择查询


PHP, drop down menu and search form, how to pass a variable to select a query

我花了一个多星期的时间试图让它发挥作用,但我被难住了。所以我有5个类别的下拉菜单,旁边有一个搜索表单,你可以在其中输入关键字来搜索类别。我希望有5个查询,它们使用一个关键字来使用php和SQL server搜索每个类别。如何更改查询以匹配下拉选择?我想用JavaScript把一个变量传递给php,但我不是最好的程序员,这个想法对我来说太多了。所以选择第一类意味着输入搜索表单的关键字将运行查询一等。

谢谢。

这是我的问题:

$term=$_POST['term'];

                                                    $tsql = "select * from personnel where SURNAME like '%" . $term . "%'";
                                                    $stmt = sqlsrv_query( $conn, $tsql, array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
                                                    if( $stmt === false)
                                                    {
                                                         echo "Error in query preparation/execution.'n";
                                                         die( print_r( sqlsrv_errors(), true));
                                                    }
                                                        while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC))
                                                    {
                                                             echo 'NUMBER: '.$row['SNUM'];
                                                        echo '<br/> Jobtitle: '.$row['JOBTITLE'];
                                                        echo '<br/> Last Name: '.$row['SURNAME'];
                                                        echo '<br/> Manager: '.$row['MANAGER'];
                                                        echo '<br/> Sex: '.$row['SEX'];
                                                        echo '<br/> Join Date: '.$row['JOINDATE'];
                                                        echo '<br/> Division: '.$row['DIV'];
                                                        echo '<br/> Salary: '.$row['SALARY'];
                                                        echo '<br/> Bonus: '.$row['BONUS'];
                                                        echo '<br/><br/>';
                                                    }

我的表格:

<form  action="searchBar.php" method="post">
                                                        <input id="searchstyle" type="text" name="term" />
                                                        <input id="searchbutton" type="submit" name="submit" value="Submit" />
                                                    </form>

下拉菜单:

<form name="myform" id="dropdown" action="dropsearch.php" method="POST">
                                            <select name="dropdownmenu">
                                                <option value="0" selected="selected">Select a category</option>
                                                <option value="Men">Men</option>
                                                <option value="Women">Women</option>
                                                <option value="Youth">Youth</option>
                                                <option value="Accessories">Accessories</option>
                                                <option value="Teamwear">Teamware</option>
                                            </select>
</form>

您必须首先使用POST作为方法创建一个表单

这里有一个很好的例子:

<form name="myform" action="destination.php" method="POST">
<select name="mydropdown">
<option value="1">Fresh Milk</option>
<option value="2">Old Cheese</option>
<option value="3">Hot Bread</option>
</select>
</form>

destination.php文件中,您必须生成一个switch语句,以查看您传递给脚本的值。

switch ($_POST['mydropdown']) {
    case 1:
        $query = "first mysql query";
        break;
    case 2:
        $query = "2nd mysql query";
        break;
    case 3:
        $query = "3rd mysql query";
        break;
}

之后,您将不得不执行您的查询:

$result = mysql_query($query);
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

请注意,这是一种非常简单的方法,但您必须根据自己的需求进行调整。

为什么选择javaScript?

无论如何,完全猜测一下,你的表格会是这样的:

<form method="get" action="search.php">
  <select name="catId">
    <option value="1">Cat 1</option>
    <option value="2">Cat 2</option>
  </select>
  <input type="search" name="keyword" value="<?=$_GET['keyword']?>" />
  <input type="submit" name="submitFrm" value="Search" />
</form>

当提交时,你需要抓住关键词+类别来进行搜索,例如

if (isset($_GET['submitFrm'])) {
  $keyword = $_GET['keyword'] // you'll want to clean get values before going into sql
  $catId = $_GET['catId']; // same here
  // build SQL query
  $sql = "SELECT * FROM `searchable` WHERE `keyword` LIKE '%".$keyword."%' AND `catId`='".$catId."';
  // execute query
  // do your other stuff
}

但实际上,如果不知道自己已经在做什么,就很难帮上忙。这只是你尝试做什么的一个非常基本的例子。

我假设您已经有了将关键字发送到php脚本以执行查询的方法。只需将类别发送回即可。

如果您是通过一个带有新页面加载的表单来执行此操作,请为<select>下拉列表指定一个名称,它将可以通过php中的$_POST$_GET$_REQUEST(不建议)超级全局访问。

<form method="post" action="query.php">
    <input type="text" name="mykeyword" />
    <select name="mycategory">
        <option value="1" selected>category 1</option>
        <option value="2">category 2</option>
        <option value="3">category 3</option>
        <option value="4">category 4</option>
        <option value="5">category 5</option>
    </select>
    <input type="submit" value="search" />
</form>

在php脚本中:

$keyword = $_POST['mykeyword'];
$category = $_POST['mycategory'];   // values of 1 to 5

如果您是通过AJAX实现的,只需将select元素的值作为参数之一即可。

请张贴您的代码。