Problema combo box dinamica [AJAX-PHP]

Ciao,

Tramite Ajax ho popolato una combobox dopo la scelta di una prima combo, per capirci una volta scelta la regione, popolo la seconda combo con le province.

In pratica una volta scelta la regione tramite ajax richiamo la pagina province.php che esegue una oppurtuna query e restituisce i valori tramite XML.

Fin qui funziona tutto!!!

Ora vorrei cercare di farmi restituire due valori dal file XML ma non riesco.

In pratica vorrei mi restiusca oltre al valore relativo alla provincia, anche la regione, perchè quando vado alla pagina di raccolta dati mi passa come valore della regione il relativo ID.

Ecco il codice che ho utilizzato:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html> 
<head><script src="/script/menu.js" type="text/javascript"></script> 
<title>Test AJAX</title> 
<script src="/script/oggettorequest.js" type="text/javascript"></script> 
<script language="javascript" type="text/javascript"> 
function populateSubSelection(){ 
//Recupero i dati da inviare 
var mainSelection = document.getElementById("mainSelection"); 

//Creo un nuovo oggetto XMLHTTPRequest 
var req = newXMLHttpRequest(); 

//Invio la richiesta 
req.open("POST", "modelli.php", true); 
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

//Invio i dati POST 
req.send("choice=" + mainSelection.options[mainSelection.selectedIndex].value); 

//Gestore dell'evoluzione dello stato dell'oggetto req 
req.onreadystatechange = handleResponse(req, updateSubSelection); 
} 

function handleResponse(req, XMLHandler){ 
return function(){ 

if(req.readyState == 4){ 

if (req.status == 200){ 

XMLHandler(req.responseXML); 
}else{ 
alert("Errore HTTP: " + req.status); 
} 
} 
} 
} 

function updateSubSelection(XMLResult){ 
//Gestisco il documento XML ricevuto e popolo la seconda SELECT 
var categoria = XMLResult.getElementsByTagName('categoria'); 

//Recupero la seconda SELECT 
var subSelection = document.getElementById("subSelection"); 

//Svuoto la secondo SELECT 
for (var i = subSelection.length - 1; i >= 0; i--) 
subSelection.remove(i); 

//Scorro gli elementi 
for (var i = 0; i < categoria.length; i++){ 
//Recupero i vari elementi singoli 
var item = categoria[i]; 

//Creo il nuovo elemento OPTION da aggiungere nella seconda SELECT 
var NewOpt = document.createElement('option'); 
var NewOpt1 = document.createElement('option'); 
NewOpt.value = item.getAttribute("value"); 
NewOpt.text = item.firstChild.nodeValue; 
NewOpt1.value = item.getAttribute("value"); 
NewOpt1.text = item.firstChild.nodeValue; 

//Popolo la seconda SELECT 
try{ 
subSelection.add(NewOpt, null); //Metodo Standard, non funziona con IE 
Marca1.add(NewOpt1, null); 
}catch(e){ 
subSelection.add(NewOpt); // Funziona solo con IE 
Marca1.add(NewOpt1); 
} 
} 
} 
</script> 
</head> 
<body> 
Seleziona la REGIONE: 
<?php 
        $strsql = "select * from marca order by Marca"; 
        $query = mysql_query($strsql);          
?> 
<form action="prova1.php" method="post"> 
<select name="Marca" id="mainSelection" onchange="populateSubSelection()"> 
<option value="">---</option> 
<?php while($row=mysql_fetch_array($query)){?>         
<option value="<?php echo $row["Id_marca"];?>"><?php echo $row["Marca"];?></option> 
<?php }?> 
</select> 
SELEZIONA PROVINCIA: 
<select name="Modello" id="subSelection"> 
<option value="">---</option> 
</select> 
<input type="hidden" name="Marca1" id="Marca1"  value=""/> 
<div id="Marca1"> 

</div> 
<label> 
<input type="submit" name="Submit" value="Invia" /> 
</label> 
</form> 
</body> 
</html>

Questa è la pagina richiamata che genera il file XML:

header("Content-type: application/xml"); 
header("Cache-control: no-cache, must-revalidate"); 
echo "<?xml version="1.0\" encoding=\"UTF-8\"?>\n"; 
echo "<categorie>\n"; 
//Recupero la variabile sulla quale effettuare i vari controlli 
$myChoice = @$_POST['choice']; 
$strsql="select * from provincia where Id_regione=".NormDatiDB($myChoice,"INT"); 
$query = mysql_query($strsql);          

while($row=mysql_fetch_array($query)){     

echo "\t<categoria value=\"".$prova."\">".$prova."</categoria>\n"; 
} 
echo "</categorie>\n";

Avete qualche aiuto prezioso da darmi?

inviato 9 anni fa
Riccardo81
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda