【发布时间】:2021-12-15 01:49:02
【问题描述】:
从昨天开始我一直在尝试解决这个问题,直到现在我仍在努力解决这个问题。在 2 个下拉菜单中选择后,您能否请教如何获取价值?例如,在选择 5:30 AM 后,下一个下拉菜单将获取出发时间为 5:30 AM 的分支。然后在选择分支下拉列表后,第三个下拉列表将从分支中获取所有公交车号基数和选择的时间。然后将自动显示第四个下拉菜单,即座位号,除了已经在该巴士中选择的号码。我已经尝试在这里搜索,但仍然无法获得正确的结果。
代码:
<label id="label" for="schdtime">Schedule Time</label>
<select id="schdtime" name="schdtime" style="margin-right: 15px;">
<option value="5:30 AM">5:30 AM</option>
<option value="7:30 AM">7:30 AM</option>
<option value="9:30 AM">9:30 AM</option>
<option value="11:30 AM">11:30 AM</option>
<option value="12:30 PM">12:30 PM</option>
<option value="1:30 PM">1:30 PM</option>
<option value="3:30 PM">3:30 PM</option>
<option value="5:00 PM">5:00 PM</option>
</select>
<label id="label" for="brnch">Route</label><br>
<select id="brnch" name="brnch">
<option disabled="disabled value="">From</option>
</select>
公交车号 选择巴士号码
<label id="label">Seat Number</label>
<select id="seatnum" name="seatnum" style="width: 100px;">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
</select>
这是我的 ajax.js:
$(document).ready(function() {
//Change in continent dropdown list will trigger this function and
//generate dropdown options for county dropdown
$(document).on('change','#schdtime', function() {
var schdtime = $(this).val();
if(schdtime != "") {
$.ajax({
url:"get_data.php",
type:'POST',
data:{schdtime:schdtime},
success:function(response) {
//var resp = $.trim(response);
if(response != '') {
$("#brnch").removeAttr('disabled','disabled').html(response);
$("").attr('disabled','disabled').html("<option value=''>Choose</option>");
} else {
$("#area, #busnum, #seatnum").attr('disabled','disabled').html("<option value=''>Choose</option>");
}
}
});
} else {
$("#area, #busnum, #seatnum").attr('disabled','disabled').html("<option value=''>Choose</option>");
}
});
$(document).on('change','#brnch', function() {
var brnch = $(this).val();
if(brnch != "") {
$.ajax({
url:"get_data.php",
type:'POST',
data:{brnch:brnch},
success:function(response) {
//var resp = $.trim(response);
if(response != '') {
$("#area").removeAttr('disabled','disabled').html(response);
$("#seatnum").attr('disabled','disabled').html("<option value=''>Choose</option>");
} else {
$("#area, #busnum, #seatnum").attr('disabled','disabled').html("<option value=''>Choose</option>");
}
}
});
}
else
{
$("#area, #busnum, #seatnum").attr('disabled','disabled').html("<option value=''>Choose</option>");
}
});
$(document).on('change','#brnch','#schdtime', function() {
var branch = $(this).val();
if(brnch != "") {
$.ajax({
url:"get_data.php",
type:'POST',
data:{branch:branch},
success:function(response) {
//var resp = $.trim(response);
if(response != '') {
$("#busnum, #seatnum").removeAttr('disabled','disabled').html(response);
$("").attr('disabled','disabled').html("<option value=''>Choose</option>");
} else {
$("#area, #busnum, #seatnum").attr('disabled','disabled').html("<option value=''>Choose</option>");
}
}
});
} else {
$("#area, #busnum, #seatnum").attr('disabled','disabled').html("<option value=''>Choose</option>");
}
});
//Change in coutry dropdown list will trigger this function and
//generate dropdown options for state dropdown
$(document).on('change','#busnum', function() {
var busnum = $(this).val();
if(busnum != "") {
$.ajax({
url:"get_data.php",
type:'POST',
data:{busnum:busnum},
success:function(response) {
//var resp = $.trim(response);
if(response != '') {
$("$seatnum").removeAttr('disabled','disabled').html(response);
$("").attr('disabled','disabled').html("<option value=''>Choose</option>");
}
else $("#seatnum").attr('disabled','disabled').html("<option value=''>Choose</option>");
}
});
} else {
$("#seatnum").attr('disabled','disabled').html("<option value=''>Choose</option>");
}
});
});
然后这个为get_data.php:
<?php include('includes/connection.php');?>
<?php
if (isset($_POST['schdtime']))
{
$qry1 = "SELECT * FROM branch";
$res = mysqli_query($conn, $qry1);
if(mysqli_num_rows($res) > 0)
{
echo '<option value="">Choose</option>';
while($row = mysqli_fetch_object($res))
{
echo '<option value="'.$row->Br_Name.'">'.$row->Br_Name.'</option>';
}
}
else
{
echo '<option value="">To be added</option>';
}
}
if (isset($_POST['brnch']))
{
$brnch = $_POST['brnch'];
$qry2 = "SELECT * FROM area WHERE Ar_Cty_Mncpl ='".mysqli_real_escape_string($conn,$brnch)."' OR Ar_Descript = 'Allen'";
$res = mysqli_query($conn, $qry2);
if(mysqli_num_rows($res) > 0)
{
echo '<option value="">Choose</option>';
while($row = mysqli_fetch_object($res))
{
echo '<option value="'.$row->Ar_Descript.'">'.$row->Ar_Descript.'</option>';
}
}
else
{
echo '<option value="">To be added</option>';
}
}
if(isset($_POST['branch']))
{
/*$schdtime = $_POST['schdtime'];*/
$branch = $_POST['branch'];
$qry2 = "SELECT * FROM bus WHERE Bus_Branch = '".mysqli_real_escape_string($conn,$branch)."'";
$res = mysqli_query($conn, $qry2);
if(mysqli_num_rows($res) > 0)
{
echo '<option value="">Choose</option>';
while($row = mysqli_fetch_object($res))
{
$spc = ' ';
echo '<option value="'.$row->Bus_Plate_Number.'">'.$row->Bus_Plate_Number. $spc .$row->Bus_Class.'</option>';
}
} else
{
echo '<option value="">No available bus</option>';
}
}
【问题讨论】:
-
您的脚本对SQL Injection Attack 开放。即使是if you are escaping inputs, its not safe!,您也应该始终在
MYSQLI_或PDOAPI 中使用prepared parameterized statements,而不是将用户提供的值连接到查询中。永远不要相信任何用户输入! -
您的代码在哪个阶段停止按预期工作?它会正确地做任何你想做的事吗?您是否在控制台或 php 日志中看到错误?是 Javascript、PHP 还是 sql 查询导致问题?
-
您已经显示了 3 个下拉菜单,但
"Then the fourth dropdown which is seat numbers"建议有一个未显示...是area吗?它在序列中的哪个位置? -
抱歉,我无法包含第四个下拉菜单。但我希望它是在选择巴士号码后,它将存储该巴士的可用座位号。