2017-04-30 1 views
1

J'essaie de créer un programme qui, lorsque vous sélectionnez un état dans le menu déroulant, affiche la liste des villes pour cet état dans un autre menu déroulant que vous pouvez sélectionner. Après avoir choisi votre ville et votre état, vous tapez une adresse, appuyez sur Soumettre, et il affichera l'adresse complète sur un nouveau fichier php. Par exemple, si vous sélectionnez New Jersey dans le menu déroulant, le menu déroulant à gauche de celui-ci devrait afficher trois villes: Newark, Bloomfield et Edison. Mon problème pour le moment est que je peux obtenir les états affichés, mais quand l'état est sélectionné, il ne me donne pas la liste des options pour cette ville dans le deuxième menu déroulant. Toute aide est la bienvenue, merci!Ajax, plusieurs menus déroulants

Vous pouvez voir ce comportement à ce link

select.php

<head> 
<link rel="stylesheet" type="text/css" href="select_style.css"> 
<script type="text/javascript" src="js/jquery.js"></script> 
<!DOCTYPE html> 
<form action = "display.php"> 
<script type="text/javascript"> 


function fetch_select(val) 
{ 
$.ajax({ 
type: 'get', 
url: 'fetch.php', 
data: { 
    get_option:val 
}, 
success: function (response) { 
    document.getElementById("new_select").innerHTML=response; 
} 
}); 
} 

</script> 

</head> 
<body> 
<p id="heading">Address Generator</p> 
<center> 
<div id="select_box"> 
<select onchange="fetch_select(this.value);"> 
    <option>Select state</option> 




    <?php 
    include ( "accounts.php" ) ; 
($dbh = mysql_connect ($hostname, $username, $password)) 
      or die ("Unable to connect to MySQL database"); 
print "Connected to MySQL<br>"; 
mysql_select_db($project); 

    $select=mysql_query("select state from zipcodes group by state"); 
    while($row=mysql_fetch_array($select)) 
    { 
    echo "<option value='".$row['state']."'>".$row['state']."</option>"; 

    } 
?> 
</select> 

<select id="new_select"> 
</select> 

<div id='2'> </div> 
<br><br> 
<input type = text name="address">Address 
<br><br> 
<input type = submit> 

</form> 

fetch.php

<?php 
include(accounts.php); 
if(isset($_POST['get_option'])) 
{ 
($dbh = mysql_connect ($hostname, $username, $password)) 
      or die ("Unable to connect to MySQL database"); 
print "Connected to MySQL<br>"; 
mysql_select_db($project); 


$state = $_GET['get_option']; 
$find=mysql_query("select city from zipcodes where state='$state'"); 
while($row=mysql_fetch_array($find)) 
{ 
    echo "<option>".$row['city']."</option>"; 
} 
exit; 
} 
?> 

Répondre

0

Votre ajax est "get" pendant que vous vérifiez si get_option a été affiché .

Modifier à

if(isset($_GET['get_option'])) 
+0

Merci, modifié. – Gillky

+0

Veuillez voter et approuver;) –

0

Ceci est complètement faux, vous ne pouvez pas ajouter tableau dans innerHTML au lieu d'ajouter des options à la sélection et il devrait fonctionner.

success: function (response) { 
    var select = document.getElementById("new_select"); 
    for (var i from response){ 
     var opt = document.createElement('option'); 
     opt.value = response[i]; 
     opt.innerHTML = response[i]; 
     select.appendChild(opt); 
    } 
} 
+0

Je l'ai changé mais il ne semble toujours pas fonctionner correctement, les villes n'apparaissent toujours pas quand je sélectionne un état. – Gillky