Nulla viene visualizzato dopo aver caricato la pagina

Ho due menu a discesa. drop1_1 e tier_two. Drop_1 seleziona tutte le app_cn e tier_two seleziona app_plan_no

counter | app_cn | app_plan_no 000004 | comp1 | 1 000172 | comp1 | 1 000007 | comp1 | 2 000005 | comp2 | 1 

Quando carico la pagina non viene visualizzato nulla. Devo visualizzare tutti i record quando il valore selezionato nel mio drop_1 dropdown è ALL. E se seleziono comp1 non compare nulla fino a quando non seleziono nel menu a discesa tier_two. Sto davvero avendo problemi nella mia domanda. Chiunque?

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>' ....... 

Ed ecco il mio codice completo

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> 

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> '; } ?> 

invece di

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

dovresti usare

 <body> <!-- all your html goes here --> </body> <script> showUser(); </script> 

Quando il drop_1 tire_two body onload fa scattare drop_1 e tire_two non vengono creati e lo scrupt genererà solo un'exception.

Modificare:

Al primo caricamento o se q=ALL , non è necessario submit il secondo parametro p . quindi cambia

 if (str == "" || str1 == "") { document.getElementById("txtHint").innerHTML = ""; return; } 

A

 if (str == "" || (str != "ALL" && str1 == "")) { document.getElementById("txtHint").innerHTML = ""; return; } 

Modifica 2: modificato 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> 

Modifica 3:

Questa è un'ipotesi selvaggia e potrebbe essere questo quello che vuoi

cambiamenti in func.php

 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> '; } 

Questo è un errore di syntax nel tuo javascript:

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

Dovrebbe essere:

<body onload=showUser("ALL")>

Javascript non support i parametri denominati in fase di chiamata. Inoltre, dovresti modificare il tuo onchange in: onchange="showUser(this)" e cambiare la definizione della function in modo che sia:

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