php - 使用 form method="post" 动态分配 php 变量
问题描述
我正在尝试根据在选择下拉列表中选择的值运行特定的数据库查询。我当前的代码没有运行查询。
我当前的代码如下所示:
主要搜索.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;
?>
搜索.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新手,所以任何帮助将不胜感激,谢谢。
解决方案
出于此目的,最好避免使用 Session 变量,因为 Session 变量用于在 PHP 中在页面之间存储/传递信息(例如登录状态)。
根据我的推论,您正试图在用户更改<select>
选项时动态更改此 PHP 变量。由于 PHP 是一个服务器端脚本,这将不起作用,如果您需要在不重新加载页面的情况下进行更改,您将需要使用客户端脚本(例如 Javascript/jQuery)。例如(在 jQuery 中):
$('select[id="search-type"]').on("change", function(){
//Do work
});
但是,如果我对您的理解正确,您最好的选择是只使用 HTTP POST 变量($_POST
在 PHP 中访问),例如:
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");
}
?>
推荐阅读
- java - 设置文件内容而不是信任库的路径
- python - 如何在python中自动将条件组合在一起?
- javascript - Canvas : 制作视频的drawImage
- c# - HoloLens 用作 UDP 服务器,但不能用作客户端
- image - java带有循环的多个图像
- regex - 使用正则表达式换行
- bash - 正则表达式替换增量
- url - 使用proc报告为SAS中excel电子表格的每个选项卡创建页面顶部的链接
- apache-beam - 如何在 Apache Beam 2.4 中替换 withFilenamePolicy?
- javascript - React-router 不会在不同的路径上重新安装组件