php 检测HTML菜单-子菜单系统中没有条目的位置

rfbsl7qr  于 2023-02-11  发布在  PHP
关注(0)|答案(3)|浏览(109)

我的MySQL表如下所示:
区域表

id     |   region
-------------------
1      |   Region1
2      |   Region2

...
和学校table

region_id |   school
-------------------
1         |   schno1
1         |   schno5
1         |   schno6
2         |   scho120

我的页面是这样工作的:首先,页面从名为"regions"的数据库表中填充#regions选择菜单。当用户选择#region时,JS将所选区域的值发送到search.php。服务器端PHP脚本在名为"schools"的数据库表中搜索#region(先前选择的菜单)值,找到所有匹配项并回显它们。
现在的问题是,我如何隐藏#class和#school选择菜单,并且在没有找到匹配项时只显示错误消息"there is no school found in this region"?如何检查search.php是否没有结果?我是JS的初学者。
我的JavaScript看起来像这样:http://pastie.org/2444922和表单中的代码段:http://pastie.org/2444929和最后搜索。php:http://pastie.org/2444933

更新

我改变了我的JS,但没有成功。

$(document).ready(function(){
    $("#school").hide();
    $("#class").hide();
searchSchool = function(regionSelect){
var selectedRegion = $("select[name*='"+regionSelect.name+"'] option:selected").val();
if (selectedRegion!='0'){
    $.ajax({
    type: "POST",
    url : "core/code/includes/search.php",
    data: "&region_id="+selectedRegion,
    success: function(result, status, xResponse){
        if (result!=null){
            $("#school").show();
            $("#class").show();
            $("#school").html(result);
        }else{
            $("#error").html("There is no school found in this region");
            $("#school").html('');
            $("#school").hide();
        }
    },
    error: function(e){
        alert(e);
    }
    });
}else{
    $("#error").html('Please select a region first');
    $("#school").html('');        
    $("#school").hide();
    $("#class").hide();
}
}
});
0yycz8jy

0yycz8jy1#

你可以试试这个
首页

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title>Ajax With Jquery</title>

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript" charset="utf-8"></script>
    <script type="text/javascript">
    searchSchool = function(regionSelect){
    var selectedRegion = $("select[name*='"+regionSelect.name+"'] option:selected").val();
    if (selectedRegion!='0'){
        $.ajax({
            type: "POST",
            url : "search.php",
            data: "&region_id="+selectedRegion,
            success: function(result, status, xResponse){
            alert(result);
            if (result!=''){
                    $("#school").show();
                    $("#school").html(result);
                }else{
                    $("#error").html("There is no school found in this region");
                    $("#school").html('');
                    $("#school").hide();
                }
            },
            error: function(e){
                alert(e);
            }
        });
    }else{
        $("#error").html('Please select a region first');
        $("#school").html('');        
        $("#school").hide();
    }
}
</script>
</head>

<body>

    <?php 
$username="root";
$password="";
$database="test";

mysql_connect('localhost',$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM regions";
$result=mysql_query($query);

$num=mysql_numrows($result);

mysql_close();

echo "<b><center>Database Output</center></b><br><br>";

?>
<select name="region" id="region" onchange="searchSchool(this)">
<option value="0">Please select a Region</option>
<?php 
while($data = mysql_fetch_array( $result )) 
{ 
?>
<option value="<?php echo $data['id']?>"><?php echo $data['name']?></option>
<?php 
}
?>
</select>

<select name="school" id="school"></select>

<span id="error"></span>

</body>
</html>

Search.php:

<?php 

$username="root";
$password="";
$database="test";

mysql_connect('localhost',$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

if(isset($_POST['region_id'])) {
$query = "SELECT * FROM schools WHERE region_id='".$_POST['region_id']."'";
$result=mysql_query($query);

$num = mysql_numrows($result);

if ($num>0){
    while ($row = mysql_fetch_array($result)) {
        echo '<option value="'.$row['id'].'">'.$row['name'].'</option>';
    }
    }
else{
return null;
}
}

mysql_close();
?>
zxlwwiss

zxlwwiss2#

好吧,我不能完全通读你的全部代码,但我可以给予你一个模拟你可能想做什么。
将两个依赖项下拉唐斯都 Package 在div中。

<div id="dep1"></div>
<div id="dep2"></div>

现在在服务器端,如果你发现元素,在验证后创建一个下拉列表并发送到这里,或者只是发送一个错误消息。

<? 
if($num>0) {
?>
<select>
<?
foreach($element as $ele) {
<option><?=$ele?></option>
}
?>
</select>
<?
} else {
?>
<div class="error">No regions found</div>
<? } ?>

你的js看起来像

$("#dep1").html(loadbar).load("mypage.php","region="+regionid);
2hh7jdfx

2hh7jdfx3#

我认为这个问题存在于第27-30行的jQuery代码中。没有ID = cl_dropdown的元素,逗号分隔使它在sch_dropdown内部查找cl_dropdown。
我猜想第二个select曾经有一个id cl_dropdown,如果是这样,它的HTML应该如下所示:

<select id="cl_dropdown" name="class">

您还应该有一个消息元素,根据jQuery,您应该有一个#no_sch元素,但我没有看到它。

<div id="no_sch"></div>

然后将第27-30行替换为以下内容:

if (!results)     {
    $("#sch_dropdown").hide();
    $("#cl_dropdown").hide();
    $('#no_sch').show(); 
    $('#no_sch').text('no matches found');
};

相关问题