• User Newbie

    problemi con le select dinamiche

    Ciao a tutti sono nuovo del forum speriamo che possa contribuire pure io
    ho un problema con le select dinameche ho letto tanto in giro ho visto che ci sono tantissimi esempi .Il mio problema è che sono neofito sia in php che in javascript cmq lasciando stare le mie lacune sto interfacciando un database e ho il problema di select dinamiche cioè la prima select deve essere tratta da una query quando apro il menu a tendina e scelgo la voce che mi interessa vorrei poter memorizzare il dato che io seleziono in una variabile dove grazie a questa variabile faccio una seconda query mettendola nella seconda select
    grazie anticipatamente scusate se mi sono ingarbugliato un po
    cmq ( gia sono riuscito a connettermi nel db sono riuscito a farmi dare la prima select con i nomi della tabella clienti) il seguito .... manca


  • User

    Ciao PallaPazza ho avuto proprio in questi giorni un problema analogo anche se un po' piu' avanzato.
    Vediamo se pero' ho capito:
    Hai due select:
    1° select gia' riempita con i dati che prendi da un Database (chiamiamola provincia)
    2° select inizialmente vuota che si riempie a seconda di cosa scelgo nella prima select (chiamiamola comune)

    E' corretto ?
    In base alla provincia scelta mostri solo i comuni di quella determinata provincia.

    Per risolvere questo problema senza lasciare dati in giro la mia soluzione e' stata quella di utilizzare AJAX per richiamare uno script php esterno che, al variare della prima select (onchange) chiama uno script JS il quale esegue lo script php con i dati scelti nella prima select.

    Spero di esserti stato d'aiuto, seppur teoricamente ma resto a disposizione per eventuali aiuti!


  • ModSenior

    Ciao pallapazza, ti do il mio benvenuto nel forum GT 🙂

    Sposto il thread nell'area apposita, dove sicuramente riceverai degli ottimi consigli 😉


  • User Newbie

    leofire ti ringrazio di avermi risposto cmq il problema che mi pongo io è quello che devo interrogare il database la prima volta e il risultato lo vado a mettere nella prima select e poi dalla selezione della prima select mi calcolo un'altra query per riempire la seconda select non so se sono stato chiaro .Cioè il problema cruciale per me è questo supponiamo che ho una pagina php dove ho una select che all'interno ci sono dei campi tipo questo
    <option value="prova">campo1</option>

    quando io vado a fare la selezione voglio che nella stessa pagina php mi possa memorizzare il campo value in una variabile che chiamero $x
    dove se io nella stessa pagina do print $x mi deve restituire quello che io ho selezionato . spero di essere stato chiaro premetto che php e html lo conosco un po ma javascript lo sconosco!!! grazie


  • User

    Appunto e' come una selezione provincia--->comune ossia inizialmente avrai una select riempita da una query al DB dove l'utente scegliera' la provincia, dopodiche' farai una richiesta al DB con la provincia scelta per selezionare i comuni associati a quella provincia ed inserirli nella seconda select.

    Per fare cio' prova a dare un'occhiata qui:
    http://www.w3schools.com/ajax/ajax_source.asp

    Cerca di capire il codice ed applicalo alla tua situazione (vedrai che esegue un'altra pagina asp ma e' lo stesso se chiami una pagina php e dalla pagina php richiamata esegui la select che ti interessa. Il risultato sara' quello di riempire la seconda select!). Se ci sono problemi dimmi che cerco di aiutarti meglio.


  • User Newbie

    Ho dato una lettura alla pagina da te indicata cmq asp è molto diverso da php
    ho visto che in php in tanti ci hanno provato a fare questa cosa ma in pochi ci sono riusciti e quelli che c'e' lhanno fatta hanno utilizzato funzioni difficilissime in javascript cmq io ho trovato questa soluzione che funziona a metà e dico a metà perchè non riesco a fare funzionare onchange di javascript allora ho usato per adesso un form che mi invia i dati su una pagina e poi da questa pagina mi richiamo la pagina iniziale riinviandomi i dati una sorta di reflesh ma usando una pagina di appoggio cmq posto il codice vediamo se qualcuno mi sa aiutare per eliminare il form e far funzionare onchange!!!! grazie
    [php]

    <script language="javascript">

    function inviaCambiamenti(){
    document.form1.action = "<?php echo $PHP_SELF; ?>";
    document.form1.submit();
    }

    </script>

    <form method=post action=xx.php>
    <select name="regione" onChange="inviaCambiamenti()">

    <?
    $nome=$_GET['regione'];
    $db_host = "localhost";
    $db_database = "nome_db";
    $xxx =mysql_connect($db_host,"username","password") or die("Connessione non riuscita: " . mysql_error());
    mysql_select_db($db_database,$xxx) or die("Selezione del database non riuscita");

    $query="SELECT * FROM tabella";
    $result = mysql_query($query);
    // echo "<option value="">Seleziona</option>";
    while($row = mysql_fetch_assoc($result))
    {
    if(!empty($regione))
    {
    if ($row[nome]<>$regione)
    {
    echo '<option value="'.$row[regione].'" >'.$row[regione].'</option>';
    }
    else
    {
    echo '<option value="'.$row[regione].'" SELECTED>'.$row[regione].'</option>';
    }
    }
    else
    {
    echo '<option value="'.$row[regione].'">'.$row[regione].'</option>';
    }
    }
    ?>
    </select>
    <INPUT TYPE=SUBMIT VALUE=submit>
    <select name="città">
    <?
    $query="SELECT * FROM clienti WHERE nome='$regione'";
    $result = mysql_query($query);
    echo "<option value="">Seleziona</option>";
    while($row = mysql_fetch_assoc($result))
    {
    if(!empty($città))
    {
    if ($row[città]<>$città)
    {
    echo '<option value="'.$row[città].'" >'.$row[città].'</option>';
    }
    else
    {
    echo '<option value="'.$row[città].'" SELECTED>'.$row[città].'</option>';
    }
    }
    else
    {
    echo '<option value="'.$row[città].'">'.$row[città].'</option>';
    }
    }

    ?>
    </select>

    [/php]

    la pagina che mi richiamo col form xx.php il codice è questo :
    [PHP]
    <?php
    $pro=$_POST["regione"];
    header("Location: x3.php?regione=$pro");
    ?>
    aspetto vostre notizie grazie!!!
    allora on il form appena clicco ricerca le select dinamiche funzionano
    ma su onchange no !!!
    [/PHP]


  • Super User

    Se vuoi fare un lavoro pulito dei usare AJAX, un esempio da me realizzato lo trovi in questo topic


  • User Newbie

    ciao Gorka ti ringrazio per l'esempi che hai messo ma io il mio lavoro è un tantino piu complesso vengo e mi spiego!! allora l'esempio di regione e province è molto banale in quanto ogni regione ha delle determinate provincie quindi quando vai a fare la selezione della regione con lo switch vai a prendere le provincie che gli appartengono invece io devo implementare questa roba qua con il db cioè per fare un esempio devo fare mettere nella prima select il cognome e nella seconda select mi devono comparire tutti i nomi che hanno quel cognome!! il discorso è che da un giorno all'altro il cliente nel db puo inserire diversi cognomi e nomi quindi non ho un set di dati statici ma dinamici
    è come se nella regione sicilia oggi ho 9 province domani me ne trovo 15.
    Cmq penso che l'esempio che hai riportato in AJAX lo potrei modificare per risolvere il problema che ho ma il fatto è che non conosco questo linguaggio quindi le cose si complicano . cmq per quanto ho scritto sopra basta eliminare la riga [HTML] <INPUT TYPE=SUBMIT VALUE=submit> [/HTML] per eliminare il pulsante di ricerca e modificare [HTML]<select name="xnome" onChange="submit()";>[/HTML] per far funzinare le select dinamiche senzaa usare il bottone !!! cmq se c'e' qualcuno che ne capisce di javascript vorrei sapere tanto perche quando uso la onchange="miafunzione" non mi passa i dati!!! ciao e grazie ancora per l'interessamento!!!


  • Super User

    E' chiaro che il mio script così com'è non poteva andar bene, però se ti applichi con alcune modifiche lo rendi adeguato al tuo caso.
    Ad esempio, nel file PHP al posto dello switch devi mettere lo script che estrae i dati dal db partendo dal cognome.


  • User Newbie

    SONO CONTENTO CHE HO TROVATO UNA SOLUZIONE FACILE è NELLO STESSO TEMPO POTENTE VOGLIO POSTARE IL CODICE CHE HO FATTO POICHE IN PHP FINO AD ORA NON HO TROVATO NESSUNO CHE è RIUSCITO A FARE QUESTA COSA HO LETTO MIGLIAIA DI FORUM METTO A DISPOSIZIONE LA SOLUZIONE TROVATA è normale che con questa soluzione si possono creare tutte le select dinamiche che si vogliono senza ricorrere a javascript o altri linguaggi !!! VIVA L'OPEN SOURCE!!!!!!!
    METTO IL SEGUENTE ESEMPIO NELLA PRIMA SELECT MI TIRO FUORI DAL DB
    LA MACCHINA E NELLA SECONDA SELECT PER OGNI MACCHINA SCELTA MI DA IL TIPO DI AUTOMOBILE CHE HO SCELTO . CLASSICO ESEMPIO DI SELECT DINAMICHE!! ECCO IL CODICE

    [PHP]
    <FORM action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <select name="auto" onChange="submit()";>
    <?

    $auto = $_POST['auto'];
    $db_host = "localhost";
    $db_database = "ILNOMEDELTUODB";
    $xxx =mysql_connect($db_host,"mettere_login","mettere_la_passw") or die("Connessione non riuscita: " . mysql_error());
    mysql_select_db($db_database,$xxx) or die("Selezione del database non riuscita");

    $query="SELECT * FROM concessionaria";
    $result = mysql_query($query);
    while($row = mysql_fetch_assoc($result))
    {
    if(!empty($auto))
    {
    if ($row[auto]<>$auto)
    {
    echo '<option value="'.$row[auto].'" >'.$row[auto].'</option>';
    }
    else
    {
    echo '<option value="'.$row[auto].'" SELECTED>'.$row[auto].'</option>';
    }
    }
    else
    {
    echo '<option value="'.$row[auto].'">'.$row[auto].'</option>';
    }
    }
    ?>
    </select>

    <select name="tipo">
    <?
    $query="SELECT * FROM concessionaria WHERE nome='$auto'";
    $result = mysql_query($query);
    while($row = mysql_fetch_assoc($result))
    {
    if(!empty($tipo))
    {
    if ($row[tipo]<>$tipo)
    {
    echo '<option value="'.$row[tipo].'" >'.$row[tipo].'</option>';
    }
    else
    {
    echo '<option value="'.$row[tipo].'" SELECTED>'.$row[tipo].'</option>';
    }
    }
    else
    {
    echo '<option value="'.$row[tipo].'">'.$row[tipo].'</option>';
    }
    }

    ?>
    </select>
    [/PHP]


  • Super User

    Ciao pallapazza,
    possibilmente evita di usare il maiuscolo nei tuoi posts:
    è contro la netiquette, ovvero l'insieme delle regole di comportamento sul web 😉
    Ciao!


  • User Newbie

    mi scuso con il forum non lo sapevo che non si poteva scrivere maiscolo
    !!!!


  • Super User

    Non è vietato, ma è una buona maniera 😉