• User Attivo

    Visualizzare dati MySQL in un form. Come si fa?

    Ciao a tutti 🙂

    Ho un piccolo problema...
    Ho realizzato un form HTML all'interno del quale devo visualizzare dei dati precedentemente salvati su database MySQL.

    Si tratta in pratica di un form per la modifica di dati del profilo salvati al momento della registrazione sul sito.

    Il problema sta nel fatto che SELECT visualizza il dato già salvato per 2 volte e in maniera non ordinata.

    Eccovi il codice e poi faccio un esempio per farvi capire meglio.

    
    //Prendo i dati MySQL già salvati.
    $prelievo = mysql_query("SELECT anno,mese,giorno FROM utenti WHERE id= '".$id_utente."' ") or die ("Errore nella lettura del database.");
    $array_lettura=mysql_fetch_row($prelievo);
    $anno=$array_lettura[0];
    
    //<select size="anno" name="anno">
    	        <option SELECTED VALUE="<?php echo $anno; ?>"><?php echo $anno;?></option>
    	        <option VALUE="1900">1900</option>
            	<option VALUE="1901">1901</option>
            	<option VALUE="1902">1902</option>
            	<option VALUE="1903">1903</option>
    </select>
    
    

    Se per esempio $anno è uguale a "1903" avrò un doppio errore perchè verrà visualizzato 1903 al caricamento della pagina come scelta di default del SELECT e verrà visualizzato anche nel menu vero e proprio del SELECT visto che una OPTION contiene "1903".

    Dove sbaglio? :mmm:
    Forse c'è un altro metodo per risolvere la cosa?

    Insomma, a me serve visualizzare nel form i dati già salvati per poterli aggiornare.

    Qualche idea?

    Aspetto vostri suggerimenti 😄

    Grazie, ciao :gthi:


  • User

    Quello che ti accade è più che giustificato dal fatto che inserisci 2 volte il valore in questione, la prima come valore selezionato e la seconda come option. Per evitare ciò devi effettuare dei controlli. Riempire le option come fai tu è poco pratico, ti consiglio di effettuare un ciclo che automatizzi la cosa. Qualcosa del tipo:

    [PHP]
    <select size="anno" name="anno">
    <option SELECTED VALUE="<?php echo $anno; ?>"><?php echo $anno;?></option>
    <?php
    for ($a = 1900; $a < 2011; $a++) {
    if ($a != $anno) {
    echo '<option VALUE="'.$a.'">'.$a.'</option>';
    }
    }
    ?>
    </select>
    [/PHP]

    Sarebbe ancora meglio non cablare a codice il valore 2011 ed ottenerlo dinamicamente utilizzando qualche funzione PHP per le date.


  • User Attivo

    Ho risolto così:

    
    //Prendo i dati MySQL già salvati. 
    $prelievo =  mysql_query("SELECT anno,mese,giorno FROM utenti WHERE id= '".$id_utente."' ") or die ("Errore nella lettura del database."); 
    $array_lettura=mysql_fetch_row($prelievo); 
    $anno=$array_lettura[0]; 
    
    <select name="anno"> 
                <option VALUE="1900" <?php if ($anno == 1900) echo "SELECTED"; ?>>1900</option> 
                <option VALUE="1901" <?php if ($anno == 1901) echo "SELECTED"; ?>>1901</option> 
                <option VALUE="1902" <?php if ($anno == 1902) echo "SELECTED"; ?>>1902</option> 
                <option VALUE="1903" <?php if ($anno == 1903) echo "SELECTED"; ?>>1903</option> 
    </select> 
    
    

    Grazie comunque :wink3:


  • User

    Puoi fare anche così:

    [PHP]
    <select size="anno" name="anno">
    <?php
    for ($a = 1900; $a < 2011; $a++) {
    if ($a != $anno) {
    echo '<option VALUE="'.$a.'">'.$a.'</option>';
    } else {
    echo '<option VALUE="'.$a.'" selected>'.$a.'</option>';
    }
    }
    ?>
    </select>
    [/PHP]


  • User Attivo

    @deramer said:

    Puoi fare anche così:

    [PHP]
    <select size="anno" name="anno">
    <?php
    for ($a = 1900; $a < 2011; $a++) {
    if ($a != $anno) {
    echo '<option VALUE="'.$a.'">'.$a.'</option>';
    } else {
    echo '<option VALUE="'.$a.'" selected>'.$a.'</option>';
    }
    }
    ?>
    </select>
    [/PHP]

    Giusto, grazie ancora :gthi: