ciao ragazzi scusatemi sarà una domanda stupida per voi ma non riesco a capire una cosa..
Sto facendo in modo che l'utente dopo aver selezionato una categoria e un genere tramite dei link (collegati a delle funzioni javascript),mi si popoli una select con una query richiamata asincronamente da AJAX passandogli appunto dei valori che corrispondono alla categoria e al genere selezionato.
Ho fatto tutto finora ma non riesco a capire come popolare questa select dopo aver ricevuto i dati asincronamente.
Vi mostro il codice:
nella index.php ho la mia select e i due link dove l'utente sceglie appunto la categoria e il genere
Codice PHP:
<span style="background-color:#BBB">Categoria ></span>
[url="#"]Film[/url],
[url="#"]SerieTV[/url],
[url="#"]SerieAnimate[/url]
<span style="background-color:#BBB">Genere ></span>
<button type="button" id="bDefault" name="bDefault" onclick="setGenere(1);" disabled="disabled">Default</button>
<button type="button" id="bPersonalizzato" name="bPersonalizzato" onclick="setGenere(2);" disabled="disabled">Personalizzato</button>
<select name="selGenere" id="selGenere" disabled="disabled">
</select>
bene ora lo script javascript una volta che si clicca sul "button" del genere mi richiama asincronamente una pagina php che riceve i due dati e l'ho fatta in questo modo:
Codice PHP:
$typeOfCategory = $_GET['cat'];
$typeOfGenere = $_GET['gen'];
// nel caso siano generi di default allora faccio una query normale
if($typeOfGenere == 1)
$queryGenere = "SELECT ID_Genere,Nome_Genere FROM Genere
INNER JOIN Cat_Gen ON Genere.ID_Genere = Cat_Gen.ID_Gen
INNER JOIN Categoria ON Categoria.ID_Categoria = Cat_Gen.ID_Cat
WHERE Categoria.ID_Categoria = $typeOfCategory";
else if($typeOfGenere== 2)
$queryGenere = "SELECT ID_Genere,Nome_Genere FROM Genere
INNER JOIN Cat_Gen ON Genere.ID_Genere = Cat_Gen.ID_Gen
INNER JOIN Categoria ON Categoria.ID_Categoria = Cat_Gen.ID_Cat
WHERE Categoria.ID_Categoria = $typeOfCategory AND Genere.User_Personalize=$id_utente";
$strSQL = "$queryGenere";
$dbh=mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error()) ;
while ($riga = mysql_fetch_array($dbh)) {
$ID_Genere = $riga['ID_Genere'];
$Nome_Genere = $riga['Nome_Genere'];
echo '<option value= " '.$ID_Genere .' ">' . $Nome_Genere . '</option>';
}
ora la funzione javascript che mi riprende la risposta del server l'ho scritta in questo modo
Codice PHP:
// Eseguita automaticamente quando viene ricevuto un messaggio dal server
function setGenereResponse()
{
//Procediamo solo se la transazione è completata
if(xmlHttp.readyState == 4)
{
//lo status 200 indica che la transazione è stata eseguita con successo
if(xmlHttp.status == 200)
{
//estraiamo l'xml ricevuto dal server
var selectGenResponse = xmlHttp.responseText;
var selGenere = document.getElementById("selGenere");
selGenere.disabled="";
//aggiorniamo il client con i dati ricevuti dal server
selGenere.value=selectGenResponse;
}
else
{
alert("C'è stato un problema nell'accesso al server:" + xmlHttp.statusText);
}
}
}
Ora vi chiedo ma qual è il modo giusto per popolarla dopo aver ricevuto i dati? io ho messo l'istruzione
selGenere.value=selectGenResponse;
ma a quanto pare è errata..
Mi potete cortesemente aiutare? grazie mille!!