2010-03-17 8 views
8
<select name="select"> 

</select> 

Desidero popolare il tag sopra con i valori del database.Utilizzo di PHP per popolare uno</select>?

Ho scritto codice php fino a questo.

while($row=mysql_fetch_array($result)) 
{ 

} 

$ row sta raggiungendo il recupero valori corretti .. come aggiungere alla <select>

prega di aiuto ... Sono nuovo di programmazione

risposta

8

Che dire qualcosa di simile:

echo '<select name="select">'; 
while($row=mysql_fetch_array($result)) 
{ 
    echo '<option value="' . htmlspecialchars($row['column_for_value']) . '">' 
     . htmlspecialchars($row['column_for_label']) 
     . '</option>'; 
} 
echo '</select>'; 

Naturalmente, spetta a voi decidere quali elementi da $row deve essere utilizzato per il valore e il testo di ogni <option>


Basta fare in modo stai sfuggendo ai dati che provengono dal tuo DB, specialmente se può contenere HTML; mentre stai emettendo HTML, questo può essere fatto con htmlspecialchars o htmlentities.

Nota che potrebbero essere necessari un paio di parametri aggiuntivi che non ho utilizzato nel mio esempio, impostandoli possono essere utili, a seconda del set di caratteri che stai utilizzando.

+0

risposta molto buona CHE MI HA AIUTATO – humphrey

0
echo '<select>'; 
while($row=mysql_fetch_array($result)) { 
    echo '<option>'.$row['whatever_index'].'</option>'; 
} 
echo '</select>'; 

Sostituire 'whatever_index' con la colonna il nome che stai cercando.

+0

Penso che hai dimenticato il valore di attributo – Kevin

+0

Se non viene specificato alcun attributo value, verrà presentato il testo tra /usato. –

3

Si può vedere che cosa è disponibile da utilizzare in questo modo nel mentre:

var_dump($result); 
exit; 

che stamperà il primo risultato e il suo contenuto di array. Quindi puoi vedere quale campo vuoi usare per popolare l'opzione. Da lì, si potrebbe fare qualcosa di simile:

foreach ($result['field'] as $field) { 
    print '<option value="'.$field.'">$field</option>'; 
} 

Naturalmente questo è un esempio molto semplice, e come altri hanno notato si consiglia di pulire i dati prima di metterlo in una forma.

+1

+1 per usare un array, non le funzioni di recupero mysql, all'interno del foreach. –

3

$selected_value="selected_value"; 
echo '<select name="select">'; 
while($row=mysql_fetch_array($result)) 
{ 
    if($selected_value==htmlspecialchars($row['column_for_value'])) 
    $selected=' selected'; 
    else 
    $selected=''; 
    echo '<option value="'.htmlspecialchars($row['column_for_value']).'"'.$selected.'>' 
    .htmlspecialchars($row['column_for_label']). 
    '</option>'; 
} 
echo '</select>'; 

Alcuni Oltre a codice Pascal MARTIN, per la selezione automatica di un certo valore predefinito

1
echo "<select>"; 
while($option = mysql_fetch_array($result)) { 
    echo "<option>".htmlspecialchars($option['column'])."</option>"; 
} 
echo "</select>"; 
3

ho editied l'ultima voce a questo e funziona perfettamente. L'unico fastidio che ho ora è una volta che l'utente ha inviato il modulo a discesa diventa nero ... Qualcuno sa una soluzione semplice

echo '<select name="course" id="course" >'; 
       while($option = mysql_fetch_array($course_results)) { 
echo "<option value=".htmlspecialchars($option['cid']).">".htmlspecialchars($option['cname'])."</option>"; 
} 
echo "</select>"; 
2

Tutte le risposte di cui sopra funzioneranno, ma non sono una corretta e richiedono lavoro extra. Non dovresti usare echo per produrre sullo schermo e non devi. L'esempio seguente presuppone che si stiano utilizzando oggetti contenenti dati, ma si ottiene l'idea.

<select name="sales_person"> 
     <?php foreach ($sales_people as $sales_person){?> 
      <option value="<?=$sales_person->first_name?> <?=$sales_person->last_name?>"><?=$sales_person->first_name?> <?=$sales_person->last_name?></option> 
     <?php }?> 
     </select> 

Il punto di essere non devi fare eco l'html

Problemi correlati