• Super User

    Creare select con value="selected"

    Ciao a tutti. Ecco il mio quesito che può sembrare facile, ma io non riesco proprio. Un utente si registra ed inserisce tramite un elenco select (preso da un'altra tabella del db) il nome della città. Successivamente vuole modificare il campo quindi vorrei che lui vedesse cosa aveva scelto prima. Mi spiego meglio con un esempio:

    Registrazione ---> Catania
    Modifica: oltre a tutto l'elenco vorrei che comparisse come "selected" il valore di Catania e poi il resto.

    E' fattibile?

    Grazie 🙂


  • ModSenior

    Ricavato il valore dal database, basta inserire il valore di partenza avente stesso valore:

    Esempio pratico:

    [php]
    // Supponiamo questo sia il recupero dal database
    $query = mysql_query(".........");
    $row = mysql_fetch_array($query);
    [/php]

    Il select lo faremo cosi

    
    <form id="form1" name="form1" method="post" action="">
      <select name="select" id="select">
        <option value="<?=$row['value']?>" selected="selected"><?=$row['etichetta']?></option>
        <option value="Valore1">1</option>
        <option value="Valore2">2</option>
        </select>
    </form>
    
    

  • Super User

    Thedarkita, ti ringrazio per la risposta, ma vorrei anche far visualizzare tramite un while credo anche tutte le altre città che prelevo dal db... non so se sono stato chiaro, e mettere in selected solo quella che l'utente ha scelto...


  • ModSenior

    Se hai effettuato 2 query diverse(almeno da come ho capito io)
    Avrai una variabile avente come valore la città scelta precedentemente.

    Quindi sarebbe sufficiente fare:
    [php]
    while($lista = mysql_fetch_array($query_lista))
    {
    echo '<option value="'.$lista['value'].'"'.(($lista['etichetta'] == $sceltaprecedente) ? ' selected="selected"' : '').'>'.$lista['etichetta'].'</option>';
    }
    [/php]


  • Super User

    Spetta, sto facendo un pò di confusione io. Allora io ho un db chiamato 'provincie' con questa suddivione:

    sigla | nome
    AG | Agrigento
    CT | Catania
    ecc...

    Poi ho una tabella users con tanti dati tra cui anche 'provincia'.
    Nella fase di registrazione non c'è problema, faccio un ciclo molto semplice e stampo nelle option tutte le provincie e poi l'users ne sceglierà una.

    Ecco il codice:

    
    $sql = "SELECT sigla,nome FROM provincie ORDER BY nome";
    $result = mysql_query($sql);             
    echo"<select name='provincia_nascita'>";
    while($row = mysql_fetch_array($result))
    {
        print("<option value='".$row['sigla']."'");
        print(">".$row['nome']."</option>");
    }
    echo '</select>
    
    

    Adesso quando vado sul file modifica.php in cui l'users vorrebbe modificare la provincia, come faccio a far comparire come selezionata la provincia precedentemente scelta e poi tutte le altre..?

    Adesso credo sia stato più chiaro. :mmm:


  • ModSenior

    Con questo codice dovrebbe funzionare:
    [php]
    while($lista = mysql_fetch_array(mysql_query("SELECT sigla,nome FROM provincie ORDER BY nome")))
    {
    echo '<option value="'.$lista['sigla'].'"'.(($lista['sigla'] == $sceltaprecedente) ? ' selected="selected"' : '').'>'.$lista['nome'].'</option>';
    }
    [/php]

    Devi solo assegnare a $sceltaprecedente la sigla della scelta effettuata precedentemente


  • Super User

    Thedarkita, mi va in loop...


  • ModSenior

    Il ciclo mi sembra corretto, non saprei perchè vada in loop...


  • Super User

    c'è un altro modo per fare ciò che ho chiesto?
    Non credo che mai nessuno abbia fatto una cosa del genere...


  • ModSenior

    Oltre al ciclo che ti stampi le option, sctampi una option impostata come selected che abbia come value e nome i parametri impostati in precedenza...
    Solo che il valore che hai scelto prima te lo ritroverai 2 volte, visto che viene stampato pure nel ciclo...


  • Super User

    Si, il problema è che non mi fa visualizzare nulla perchè va in loop...


  • Super User

    Altrimenti quale sarebbe l'altro consiglio? Lasciare l'input vuoto per le provincie e le città? Non credo che sia una buona idea, che dite?


  • User Newbie

    Ciao raga, anche a me va in loop, però ho sostituito questa:
    while($lista = mysql_fetch_array(mysql_query("SELECT sigla,nome FROM provincie ORDER BY nome")))
    {

    con questa:

    $query = mysql_query("SELECT sigla,nome FROM provincie ORDER BY nome");
    while( $lista = mysql_fetch_array($query))
    {
    ......
    }

    Chi scopre l'arcano del perchè la prima riga va in loop?
    Ciao