- Home
- Categorie
- Coding e Sistemistica
- Coding
- Creare select con value="selected"
-
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
-
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>
-
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...
-
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]
-
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.
-
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
-
Thedarkita, mi va in loop...
-
Il ciclo mi sembra corretto, non saprei perchè vada in loop...
-
c'è un altro modo per fare ciò che ho chiesto?
Non credo che mai nessuno abbia fatto una cosa del genere...
-
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...
-
Si, il problema è che non mi fa visualizzare nulla perchè va in loop...
-
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?
-
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