php - 从 url 获取值并在 sql 查询中使用它
问题描述
我正在为一家汽车经销商开发一个复杂的项目,我必须根据多个条件创建数据库搜索。数据库中的汽车分为 3 种类型——我们称它们为 A、B 和 C。假设 A=1、B=2、C=3 的值。url 看起来像index.php?type_id=1
. 到目前为止的工作搜索代码如下。
在index.php
:
<script type="text/javascript">
$(document).ready(function(){
$('#car').on('change',function(){
var carID = $(this).val();
if(carID){
$.ajax({
type:'POST',
url:'ajaxData.php',
data:'marque_id='+carID,
success:function(html){
$('#model').removeAttr("disabled");
$('#model').html(html);
}
});
}else{
$('#model').attr("disabled");
$('#energy').attr("disabled");
}
});
});
</script>
$type_id = $_GET['type_id];
$query = $db->query("SELECT DISTINCT marque_name,a.marque_id FROM vehicule_marque as a INNER JOIN vehicule as b WHERE b.type_id = '$type_id' AND a.marque_id = b.marque_id order by marque_name");
$rowCount = $query->num_rows;
<div>Select car</div>
<select name="car" id="car" required >
<option value="">Select Car</option>
<?php
if($rowCount > 0){
while($row = $query->fetch_assoc()){
echo '<option value="'.$row['marque_id'].'">'.$row['marque_name'].'</option>';
}
}else{
echo '<option value="">Car not available</option>';
}
?>
</select>
<div>Select car model</div>
<select name="model" id="model" disabled>
<option value=""><!--Select car first--></option>
</select>
在ajaxData.php
:
if(isset($_POST["marque_id"]) && !empty($_POST["marque_id"])) {
//Get all state data
$query = $db->query("SELECT DISTINCT a.modele_id, modele_name, a.marque_id FROM vehicule_modele as a INNER JOIN vehicule as b WHERE a.marque_id = ".$_POST['marque_id']." AND b.type_id = '$type_id' AND b.marque_id = a.marque_id AND b.modele_id = a.modele_id ORDER BY modele_name ");
//Count total number of rows
$rowCount = $query->num_rows;
//Display model list
if($rowCount > 0){
echo '<option value="">Select model</option>';
while($row = $query->fetch_assoc()){
echo '<option value="'.$row['modele_id'].'">'.$row['modele_name'].'</option>';
}
}else{
echo '<option value="">Model not available</option>';
}
}
问题在于,一旦客户选择了汽车品牌,就需要获取type_id
价值并在查询中使用它以显示模型。ajaxData.php
在index.php
中,我GET
成功地从 url 中获取了值(我尝试回显它并且它有效),但是我无法让它在另一个查询中工作 - 它继续只显示“模型不可用”选项。我尝试将脚本$type_id
放入一个新变量中,但这也不起作用。我不确定我错过了什么。如果我删除 type_id 条件,一切正常。如果有人知道如何解决这个问题,我将不胜感激。
解决方案
首先,您需要了解对 url的请求和index.php?type_id=1
对 url的请求ajaxData.php
是不同的请求,彼此一无所知。
因此,如果您尝试访问$_GET['type_id']
inajaxData.php
您显然不会收到任何信息,因为. 如果您向您发送请求,您将获得.$_GET
ajaxData.php
ajaxData.php?type_id=42
42
$_GET['type_id']
所以,如果你想使用一些$_GET
或$_POST
数据,ajaxData.php
你必须明确地发送这些数据。
它可以是:
url:'ajaxData.php?type_id=' + yourValue,
// access it with $_GET['type_id']
或者
data:'marque_id='+carID+'&type_id='+yourValue,
// access it with $_POST['type_id']
推荐阅读
- oracle - 如何在 oracle 11g 中使用一条 INSERT 语句在一列中插入多行
- rust - 如何在将共同值移动到新集合中时使两个 HashSet 相交?
- android - 为多个视图设置动画会导致动画冻结
- angular - 如何限制ErrorHandler的范围?
- java - onActivityResult not executed after contact picked
- javascript - 如何解析多行复杂的正则表达式模式?
- javascript - 如何在下一个/上一个按钮上垂直滚动 div
- python - 如何从 Python numpy 3D 数组到 2D 到 1D 回到 2D(保留 3D 数组的原始第 2 维和第 3 维)
- python - 有没有办法显式调用 json 参数?
- mysql - 为什么 MySQL 在创建包含列值的临时表之前不计算列中的最大 varchar 长度?