Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [Ajax+PHP] Popolare una select da DB

    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!!

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Invece di inserire le option nella select "originale" sostituisci tutta la select ex-novo
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Ciao Andrea!!! Innanzitutto grazie per la risposta, poi volevo chiederti se potevi spiegarmi meglio cosa intendi perché sono veramente duro di comprendonio
    Volevi consigliarmi per caso di fare una modifica nel file php mettendo prima della query una echo con un tag <select> e di chiuderlo dopo la query di modo che mi crea fisicamente la select e poi aggiungerla alla pagina con un document.innerHTML quando nel javascript ricevo la risposta?
    Oppure intendevi di creare un array e di creare la select in javascript?
    Mi sa che nel secondo caso avrei bisogno di un esempio perché non ho idea di come fare

    Grazie mille per la pazienza!!!

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Buona la prima
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Grazie!!! Ora sto rispondendo dal cell,appena proverò ti darò l'esito

  6. #6
    Ho creato un div bnella index dove ho messo al suo interno il campo select,poi nello script php ho fatto quella modifica che la trasforma in una vera e propria select. Quando ricevo i dati sal server ho messo una innerHTML dentro il div sopracitato e funziona tutto alla perfezione.

    Grazie mille per il consiglio!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.