Php 加载页面后没有显示任何内容

Php 加载页面后没有显示任何内容,php,mysql,Php,Mysql,我有两个下拉列表。第一层和第二层。下拉1选择所有应用程序cn,第2层选择应用程序计划号 counter | app_cn | app_plan_no 000004 | comp1 | 1 000172 | comp1 | 1 000007 | comp1 | 2 000005 | comp2 | 1 当我加载页面时,没有显示任何内容。当我的下拉列表中的选定值为“全部”时,我需要显示所有记录。如果我选择comp1,则在第二层下拉列表中选择之前,不会

我有两个下拉列表。第一层和第二层。下拉1选择所有应用程序cn,第2层选择应用程序计划号

counter | app_cn   | app_plan_no 

000004  |  comp1   |  1
000172  |  comp1   |  1
000007  |  comp1   |  2
000005  |  comp2   |  1
当我加载页面时,没有显示任何内容。当我的下拉列表中的选定值为“全部”时,我需要显示所有记录。如果我选择comp1,则在第二层下拉列表中选择之前,不会显示任何内容。我的问题真的很严重。有人吗

Getuser.php

$mysqli = new mysqli("localhost", "root", "", "app");
$p = $_GET['p'];
$q = $_GET['q'];
$where = '';
if ( $q != 'ALL') {
    $where = " WHERE app_cn='$q' AND app_plan_no='$p'  ";
$result1 = $mysqli->query("
    SELECT *
    FROM app 
    $where 
    GROUP BY counter
")or die(mysqli_error());
echo'<table>'
.......
$mysqli=newmysqli(“本地主机”、“根目录”、“应用程序”);
$p=$_GET['p'];
$q=$_GET['q'];
$where='';
如果($q!=“全部”){
$where=“其中app\u cn='$q'和app\u plan\u no='$p';
$result1=$mysqli->query(“
挑选*
来自应用程序
美元在哪里
按柜台分组
)或死亡(mysqli_error());
回声“
.......
这是我的全部代码

Combobox.php

<script> // AJAX Implementation
function showUser() {
    str = document.getElementById("drop_1").value;
    str1 = document.getElementById("tier_two").value;
if (str == "" || str1 == "") {
    document.getElementById("txtHint").innerHTML = "";
    return;
}
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET", "getuser.php?q=" + str + "&p=" + str1, true);
    xmlhttp.send();
}

</script>
<body onload=showUser(str="ALL")>

<?php include('func.php'); ?>
<select name="drop_1" id="drop_1" onchange="showUser()" style="overflow:scroll;width:100px;">
        <option value="ALL" selected='ALL'>ALL</option>
        <?php getTierOne(); ?>
</select>
//AJAX实现
函数showUser(){
str=document.getElementById(“drop_1”).value;
str1=document.getElementById(“第二层”).值;
如果(str==“”| | str1==“”){
document.getElementById(“txtHint”).innerHTML=“”;
返回;
}
if(window.XMLHttpRequest){//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}else{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
document.getElementById(“txtHint”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”、“getuser.php?q=“+str+”&p=“+str1,true”);
xmlhttp.send();
}
全部的
func.php

<?php

function getTierOne()
{
    $mysqli = new mysqli("localhost", "root", "", "app");
    $result = $mysqli->query("SELECT * FROM app GROUP BY app_cn ORDER BY app_cn");
     while($row = $result->fetch_assoc())
        {
           echo '<option value="'.$row['app_cn'].'">'.$row['app_cn'].'</option>';
        }
}

if($_GET['func'] == "drop_1" && isset($_GET['func'])) {
   drop_1($_GET['drop_var']); 
}

function drop_1($drop_var)
{
    $mysqli = new mysqli("localhost", "root", "", "app");
    $results = $mysqli->query("SELECT * FROM app WHERE app_cn='$drop_var' GROUP BY app_plan_no ORDER BY app_plan_no");

    echo '<select name="tier_two" id="tier_two" onchange="showUser()">
          <option value=" " disabled="disabled" selected="selected">Choose one</option>';

          while($drop_2 = $results->fetch_assoc())
            {
            if($drop_2['app_plan_no'] != '')
            {
              echo '<option value="'.$drop_2['app_plan_no'].'">'.$drop_2['app_plan_no'].'</option>';
            }
            }
    echo '</select> ';
}
?>

而不是

<body onload=showUser(str="ALL")>

编辑2:修改
Combobox.php

<script> // AJAX Implementation
function showUser() {
    str = document.getElementById("drop_1").value;
    str1 = document.getElementById("tier_two").value;
    if (str == "" || (str != "ALL" && str1 == "")) {
        document.getElementById("txtHint").innerHTML = "";
        return;
    }
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET", "getuser.php?q=" + str + "&p=" + str1, true);
    xmlhttp.send();
}
</script>
<body>

<?php include('func.php'); ?>
<select name="drop_1" id="drop_1" onchange="showUser()" style="overflow:scroll;width:100px;">
        <option value="ALL" selected='ALL'>ALL</option>
        <?php getTierOne(); ?>
</select>
<!-- your other html... -->
</body>

<script>
    showUser();
</script>
if(isset($_GET['func']) && $_GET['func'] == "drop_1") {
   drop_1($_GET['drop_var']); 
}else{
   drop_1(''); // when you call the func.php first time $_GET['drop_var'] is not set so call with blank drop_var
}

function drop_1($drop_var)
{
    $mysqli = new mysqli("localhost", "root", "", "app");
    $query = "SELECT * FROM app WHERE app_cn='$drop_var' GROUP BY app_plan_no ORDER BY app_plan_no";
    if (empty($drop_var)){
        //if the drop_var is empty select all records
        $query = "SELECT * FROM app GROUP BY app_plan_no ORDER BY app_plan_no";
    }
    $results = $mysqli->query($query);

    echo '<select name="tier_two" id="tier_two" onchange="showUser()">
          <option value=" " disabled="disabled" selected="selected">Choose one</option>';

          while($drop_2 = $results->fetch_assoc())
            {
            if($drop_2['app_plan_no'] != '')
            {
              echo '<option value="'.$drop_2['app_plan_no'].'">'.$drop_2['app_plan_no'].'</option>';
            }
            }
    echo '</select> ';
}

这是javascript中的语法错误:

应该是:

Javascript在调用时不支持命名参数。此外,您应该将onchange更改为:
onchange=“showUser(this)”
,并将函数定义更改为:

function showUser(elem) {
   console.log(elem.value); // now you don't have to do all the document.getElementById stuff
}

您必须将函数调用从
移动到html页面的末尾。当
body onload
触发时,还没有组合框。我已经尝试过了。什么都没有发生
函数drop\u 1
是如何调用的?当页面加载时,
tire\u two
中的值是多少?当页面加载时,它只显示dro\u 1p删除但不删除记录。当我在drop_1中选择comp1时,它也不会显示所有comp1记录。但当我在tier_2中选择时(例如1)它显示正确。当我重新选择ALL时,它会显示所有记录。我想问题出在我的Getuser.phpin
Combobox.php
中,你说过如果没有drop\ucode>或
tier\u two
的值,只需清除html即可。只有当你有某个值时,ajax请求才会发生。因此你必须有一些值加载页面时,如果希望
showuser
功能工作,请在下面移动我的完整脚本?否。只需在末尾调用脚本。您可以将脚本保留在当前位置(更好).我接受你的答案,但我的问题仍然没有解决。我对你可能在想什么做了一个疯狂的猜测。哇,这是可行的,但为什么tier_2被复制了?当我加载页面时,tier_2存在,当我在drop_1中选择comp1时,另一个tier_2出来了,实际上是Rob;这两种方法都有效。你可能想看看我在bansi下留下的’s答案是肯定的,干杯
<script> // AJAX Implementation
function showUser() {
    str = document.getElementById("drop_1").value;
    str1 = document.getElementById("tier_two").value;
    if (str == "" || (str != "ALL" && str1 == "")) {
        document.getElementById("txtHint").innerHTML = "";
        return;
    }
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET", "getuser.php?q=" + str + "&p=" + str1, true);
    xmlhttp.send();
}
</script>
<body>

<?php include('func.php'); ?>
<select name="drop_1" id="drop_1" onchange="showUser()" style="overflow:scroll;width:100px;">
        <option value="ALL" selected='ALL'>ALL</option>
        <?php getTierOne(); ?>
</select>
<!-- your other html... -->
</body>

<script>
    showUser();
</script>
if(isset($_GET['func']) && $_GET['func'] == "drop_1") {
   drop_1($_GET['drop_var']); 
}else{
   drop_1(''); // when you call the func.php first time $_GET['drop_var'] is not set so call with blank drop_var
}

function drop_1($drop_var)
{
    $mysqli = new mysqli("localhost", "root", "", "app");
    $query = "SELECT * FROM app WHERE app_cn='$drop_var' GROUP BY app_plan_no ORDER BY app_plan_no";
    if (empty($drop_var)){
        //if the drop_var is empty select all records
        $query = "SELECT * FROM app GROUP BY app_plan_no ORDER BY app_plan_no";
    }
    $results = $mysqli->query($query);

    echo '<select name="tier_two" id="tier_two" onchange="showUser()">
          <option value=" " disabled="disabled" selected="selected">Choose one</option>';

          while($drop_2 = $results->fetch_assoc())
            {
            if($drop_2['app_plan_no'] != '')
            {
              echo '<option value="'.$drop_2['app_plan_no'].'">'.$drop_2['app_plan_no'].'</option>';
            }
            }
    echo '</select> ';
}
function showUser(elem) {
   console.log(elem.value); // now you don't have to do all the document.getElementById stuff
}