我正在尝试根据选择下拉列表中选择的值来运行特定的数据库查询。我当前拥有的代码未运行查询。
我当前的代码如下:
main-search.php
<form action="" method="post">
<div class="search-container">
<input type="text" id="search_input" placeholder="">
<select name="search-by">
<option value="symptom">Symptom</option>
<option value="language">Language</option>
</select>
</div>
</form>
<?php
session_start();
$searchBy = $_POST['search-by'];
$_SESSION['search_type'] = $searchBy;
?>
search.php
<?php
session_start();
$queryType = $_SESSION['search_type'];
if ($queryType == "symptom") {
$searchQuery = $db->query("SELECT * FROM Symptoms WHERE symptom_name ORDER BY symptom_name ASC");
}
else if ($queryType == "language") {
$searchQuery = $db->query("SELECT * FROM `Language` WHERE language_name ORDER BY language_name ASC");
}
?>
我尝试将main-search.php中的代码更改为...
<?php
session_start();
$searchBy = $_POST['search-by'];
$_SESSION['search_type'] = "symptom";
?>
它可以按预期运行,并运行第一个查询,所以这就是为什么我假设邮寄表单做错了一些事情并分配了$ searchBy值。
我是php的新手,感谢您的任何帮助。
答案 0 :(得分:0)
为此目的,最好避免使用Session变量,因为Session变量用于在PHP中的页面之间存储/传递信息(例如登录状态)。
根据我的推论,您试图在用户更改<select>
选项时动态更改此PHP变量。由于PHP是服务器端脚本,因此无法使用,如果您需要更改某些内容而不重新加载页面,则需要使用客户端脚本(例如Javascript / jQuery)。例如(在jQuery中):
$('select[id="search-type"]').on("change", function(){
//Do work
});
但是,如果我对您的理解正确,最好的选择是仅使用HTTP POST变量(在PHP中由$_POST
访问),例如:
main-search.php
:
<form action="search.php" method="post">
<div class="search-container">
<input type="text" id="search_input" placeholder="">
<select name="search_type" id="search-type">
<option value="symptom">Symptom</option>
<option value="language">Language</option>
</select>
<button type="submit">Submit</button>
</div>
</form>
search.php
:
<?php
$queryType = $_POST['search_type'];
if ($queryType == "symptom") {
$searchQuery = $db->query("SELECT * FROM Symptoms WHERE symptom_name ORDER BY symptom_name ASC");
}
else if ($queryType == "language") {
$searchQuery = $db->query("SELECT * FROM `Language` WHERE language_name ORDER BY language_name ASC");
}
?>