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元素的值作为参数之一即可。
请张贴您的代码。
相关文章:
- 我在会话变量中传递了一个数组.我需要将关键笔划传递给它以返回值
- 当一个变量被传递给一个函数时,JavaScript堆栈会发生什么
- 如何在函数javascript中的变量中传递“与”符号
- 如何将变量对象传递到多个javascript弹出窗体
- 在变量中传递切换打开状态
- 无法在 JavaScript 中获取变量以传递给数组
- 变量未传递到 jQuery 滚动函数中
- 将脚本属性(数据变量)传递到 head.js
- 如何在 php 变量中传递 jquery 变量数据
- 如何通过函数调用查找 JavaScript 变量的传递用法
- 在搜索中突出显示关键字会破坏 URL 变量的传递
- 如何将变量文本传递到 PHP 变量中
- 变量未传递正确的值.listAdd 最终成为 “[object text] [object text]” javascr
- 将多行字符串变量从 C# 传递到 JavaScript
- 如何将变量数据传递到视图
- 变量不传递给其他函数
- 将变量参数传递给函数 - JavaScript
- webgl:变量未传递给着色器,这会导致魔术
- 将变量参数传递给函数
- 存储nodejs fs.readfile's产生一个变量并传递给全局变量