【问题标题】:PHP, drop down menu and search form, how to pass a variable to select a queryPHP,下拉菜单和搜索表单,如何传递变量来选择查询
【发布时间】:2012-02-02 23:00:33
【问题描述】:

我花了一个多星期的时间试图让这个工作,我很难过。所以我有 5 个类别的下拉菜单,旁边有一个搜索表单,您可以在其中输入关键字来搜索类别。我想要 5 个查询,它们使用关键字来搜索使用 php 和 SQL 服务器的每个类别。如何更改查询以匹配下拉选择?我正在考虑使用 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>

【问题讨论】:

  • 在此处粘贴一些代码,看看你有什么。还有错误!
  • 是的,显示一些代码,说明您是如何进行普通搜索的,不包括类别。
  • 对不起,我正在尝试发布代码,并且是这个网站的新手,这让我很头疼,我只有这么多字符。不足以显示我的代码:(
  • 我为我发布代码的方式道歉,它也没有真正表明我正在尝试做什么,因为我还没有走到那一步,正如我所说的我还不够先进,无法真正做到这就是我最初的帖子。谢谢

标签: php javascript sql-server


【解决方案1】:

您必须首先使用 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());
}

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

【讨论】:

  • 看起来很简单,我会尝试实施您的建议,感谢您的帮助! mySQL 和 SQL Server 之间会有很大的不同吗?我正在使用 SQLSRV 驱动程序。
  • 我认为 SQL Server 是 Microsoft 解决方案,对吧?您正在运行的系统是什么?是 Windows 服务器,是 Linux 机器,还是带有 IIS 的 Win 7?
  • 它是 Microsoft SQL server 2008 R2,在 windows 7 上使用 PHP 和 IIS,我使用 sqlsrv connect 连接到我的数据库。我正在努力寻找使用 sqlsrv 的示例,它总是 mysql :(
  • 为什么要用php和IIS?我想你现在正在开发一些东西。当您要部署时,很难在托管服务器上回复此配置。
  • 通常 IIS 与 ASP 和 SQL 服务器一起工作。 PHP 最常使用 Mysql 在 Apache 上工作。当然还有一些其他类型的服务器端语言和数据库架构,您可以通过多种方式将它们链接在一起,但是除非您别无选择,否则使用 PHP 的 IIS 可能不是一个好主意。
【解决方案2】:

为什么选择 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
}

但真的不知道你在做什么已经很难提供帮助。这只是您尝试做的一个非常基本的示例。

【讨论】:

  • 这看起来不错,我将尝试根据您的示例构建我的代码,看看我是否能解决这个问题!感谢您的帮助!
  • 嘿,看看你现在输入的代码 - 表格必须分开吗?或者您可以在标记中轻松地组合这两种形式吗?如果你能把它们结合起来,我会这样做。否则,您需要为类别 ID 设置会话变量,然后在搜索脚本中使用该变量。希望这会有所帮助。
  • 好吧,我也可以,我使用了你的示例并将它们放在一起,但是现在在我输入你的代码的查询部分中,它使代码全部变灰,我看不到为什么会有问题,我可以在哪里发布此代码供您查看,在我的原始帖子中?谢谢!
【解决方案3】:

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

如果您是通过带有新页面加载的表单执行此操作,请为您的&lt;select&gt; 下拉列表命名,它可以通过 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 执行此操作,只需将选择元素的值作为参数之一。

请发布您的代码。

【讨论】:

  • 我知道。但我不知道他是使用post还是get。请删除您的反对票谢谢... :(
  • 感谢您的建议,我们已经注意到了,我会记住将类别发回!
猜你喜欢
  • 1970-01-01
  • 2019-02-24
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
相关资源
最近更新 更多