problema con select jquery e php

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
Ho seguito un tutorial per realizzare due menu select dove selezionando la regione nel primo menu ottengo tutti gli itinerari di quella regione nel secondo menu.
I file costruiti sono:
select_itinerari.php

<?php
class select{

function select(){
}

function getL1($id=''){
if(!empty($id)){
$sSQL = "SELECT * FROM regioni WHERE id = $id";
}else{
$sSQL = "SELECT * FROM regioni Order by regione";
}
$ris = mysql_query($sSQL);
while($row = mysql_fetch_assoc($ris)){
$list[] = array('regioneid' => $row["id"],
'regione' => $row["regione"]);
}
return $list;
}

function getL2($id){
$sSQL = "SELECT * FROM itinerari WHERE id_regione = $id Order By itinerario";
$ris = mysql_query($sSQL);
while ($row = mysql_fetch_assoc($ris)) {
$list[] = array('itinerarioid' => $row["id"],
'itinerario' => $row["itinerario"]);
}
return $list;
}
}
?>

get_itinerari.php

<?
include('connessione.php');
include('select_itinerari.php');
$id_regione = $_REQUEST['id'];
$obj = new select();
$l1 = $obj->getL1($id);
$Js = '';
for($x=0; $x<count($l1); $x++){
$l2 = $obj->getL2($l1[$x]['regioneid']);
for($y=0;$y<count($l2);$y++){
if($y < (count($l2)-1)){
$end = ",";
}else{
$end = "";
}
$Js .= $l2[$y]['itinerarioid']."-".$l2[$y]['itinerario'].$end;
}
}
//echo “text”;
echo $Js;
?>

<?
include('connessione.php');
include('select_itinerari.php');
$obj = new select();
$l1 = $obj->getL1();
?>

<form method="post" action="#">
<script type="text/javascript">
var http = createRequestObject();

function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
ro = new ActiveXObject("Microsoft.XMLHTTP");
}else{
ro = new XMLHttpRequest();
}
return ro;
}

function loading(){
var id = document.getElementById('regioni').value;
http.open('GET','get.php?id='+id, true);
http.onreadystatechange = getState;
http.send(null);
}

function getState(){
var newOption;
var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;
var State = document.getElementById('itinerari');
while (State.options.length) {
State.remove(0);
}
id = document.getElementById('regioni').value;
if(id == 'sel'){
document.getElementById('itinerari').disabled = true;
newOption = document.createElement("option");
newOption.value = 'sel';
newOption.text = 'Seleziona un Itinerario:';
State.add(newOption, where);
}else{
if(http.readyState == 4){
if (http.status == 200) {
var response = http.responseText;
if(response == ""){
document.getElementById('itinerari').disabled = true;
newOption = document.createElement("option");
newOption.value = 'sel';
newOption.text = 'Nessuna voce';
State.add(newOption, where);
}else{
coppia = response.split(',');
max = coppia.length;
newOption = document.createElement("option");
newOption.value = 'sel';
newOption.text = 'Seleziona un Itinerario:';
State.add(newOption, where);
for(x=0;x<max;x++){
val = coppia[x].split('-');
newOption = document.createElement("option");
newOption.value = val[0];
newOption.text = val[1];
State.add(newOption, where);
}
document.getElementById('itinerari').disabled = false;
}
}
}
}
}
</script>
<p>
<label for="region"><strong>Regione:</strong></label><br />
<select name="regioni" id="regioni" onchange="loading()">
<option value="sel" selected="selected">Seleziona una Regione:</option>
<? for($x=0;$x<count($l1);$x++){ ?>
<option value="<?=$l1[$x]['regioneid']?>"><?=$l1[$x]['regione']?></option>
<?
}
?>
</select>
</p>
<p>
<label for="itinerario"><strong>Itinerario:</strong></label><br />
<select name="itinerari" id="itinerari">
<option value="sel" selected="selected">Seleziona un Itinerario:</option>
</select>
</p>
</form>

Ora il primo menu si popola con tutte le regioni, ma quando vado a selezionare la regione, non si popola il secondo menu.
Non conosco il jquery e per questo motivo non so di preciso dove è l'errore. C'è qualcuno che può aiutarmi?
 

Discussioni simili