2010-09-19 25 views
11

Tengo un siguiente pieza de la plantilla:Cómo establecer el valor seleccionado del cuadro de selección HTML con PHP

<select name="interest"> 
    <option value="seo">SEO и Блоговодство</option> 
    <option value="auto">Авто</option> 
    <option value="business">Бизнес</option> 
    <option value="design">Дизайн</option> 
    ... 

y almacenar valor resultante en $result['interest'].

¿Cómo puedo marcar el elemento option como se seleccionó con PHP?

Gracias!

Respuesta

27

la forma manual .....

<select name="interest"> 
    <option value="seo"<?php if($result['interest'] == 'seo'): ?> selected="selected"<?php endif; ?>>SEO и Блоговодство</option> 
    ..... 

La mejor manera sería colocar a través de los intereses

$interests = array(
    'seo' => 'SEO и Блоговодство', 
    'auto' => 'Авто', 
    .... 
); 

<select name="interest"> 
<?php foreach($interests as $var => $interest): ?> 
<option value="<?php echo $var ?>"<?php if($var == $result['interest']): ?> selected="selected"<?php endif; ?>><?php echo $interest ?></option> 
<?php endforeach; ?> 
</select> 
+1

¡No olvides escapar de tu HTML! 'htmlspecialchars ($ var)' es su amigo http://stackoverflow.com/questions/6249151/how-to-properly-escape-html-form-input-default-values-in-php – edhurtig

3
<select name="interest"> 
    <option value="seo"<?php if($result['interest'] == 'seo'){ echo ' selected="selected"'; } ?>>SEO</option> 
    <option value="auto"<?php if($result['interest'] == 'auto'){ echo ' selected="selected"'; } ?>>Auto</option> 
    <option value="business"<?php if($result['interest'] == 'business'){ echo ' selected="selected"'; } ?>>Business</option> 
    <option value="design"<?php if($result['interest'] == 'design'){ echo ' selected="selected"'; } ?>>Design</option> 
</select> 
10
<?php 
$interests = array('seo' => 'SEO и Блоговодство', 'auto' => 'Aвто', 'business' => 'Бизнес', ...); 
?> 
<select name="interest"> 
<?php 
foreach($interests as $k => $v) { 
?> 
    <option value="<?php echo $k; ?>" <?php if($k == $result['interest']) ?> selected="selected" <?php } ?>><?php echo $v;?></option> 
<?php 
} 
?> 
</select> 
+1

'+ 1' más limpio que mi solución – sshow

+1

haciéndose eco de la html sólo parece erróneo yo – Galen

0
<select name="interest"> 
<option value="seo" <?php echo $result['interest'] == 'seo' ? 'selected' : ''?> >SEO и Блоговодство</option> 
<option value="auto" <?php echo $result['interest'] == 'auto' ? 'selected' : ''?>>Авто</option> 
<option value="business" <?php echo $result['interest'] == 'business' ? 'selected' : ''?>>Бизнес</option> 
<option value="design" <?php echo $result['interest'] == 'design' ? 'selected' : ''?>>Дизайн</option> 
3
<?php 
$list='<select name="interest"> 
    <option value="seo">SEO и Блоговодство</option> 
    <option value="auto">Авто</option> 
    <option value="business">Бизнес</option> 
    <option value="design">Дизайн</option> 
    ...'; 
echo str_replace('value="' . $result['interest'] . '"','value="' . $result['interest'] . '" selected',$list); 

?> Esto implica hacer una cadena que contenga su lista, luego usar la función de reemplazo de cadena para encontrar la opción correcta y agregar seleccionada a la etiqueta. Si usas XHTML necesitarás usar selected = "selected".

http://sandbox.onlinephpfunctions.com/code/37eb8f5a213fe5a252cd4da6712f3db0c5558ae3

+0

Me gusta este enfoque . Gracias. para compartir. –

1

que necesita para obtener PHP para insertar el atributo selected="selected" para la etiqueta apropiada <option>, así:

<?php $result=$userRow['ad_type']; ?> 
      <select class="form-control" name="ad_type"> 
       <option <?php if($result == 'text'){ echo ' selected="selected"'; } ?> value="text">Text</option> 
       <option <?php if($result == 'image'){ echo ' selected="selected"'; } ?> value="image">Image</option> 
       <option <?php if($result == 'video'){ echo ' selected="selected"'; } ?> value="video">Video</option> 
       <option <?php if($result == 'htmladsense'){ echo ' selected="selected"'; } ?> value="htmladsense">Html Adsense</option> 
      </select> 
+0

Parece una buena primera respuesta, pero he editado su respuesta para proporcionar una explicación de los cambios. [Esto] (http://stackoverflow.com/help/how-to- answer) podría valer la pena leerlo. –

+0

Cuando responda preguntas, no solo publique la respuesta. Proporcione más información acerca de su solución – tarzanbappa

+0

Gracias @AlastairBrown. Lo siento, es mi primera vez aquí para publicar respuestas. La próxima vez lo tendré en mente. –

Cuestiones relacionadas