2012-10-08 28 views
7

que tengo en mi phphtml opción seleccionado selecto

$sel = " 
    <option> one </option> 
    <option> two </option> 
    <option> thre </option> 
    <option> four </option> 
"; 

Digamos que tengo una línea URL = site.php?sel=one

si no guardan esas opciones en una variable, puedo hacerlo de esta manera para hacer uno de la opción de ser seleccionado cuando el valor es igual a $_GET[sel]

<option <?php if($_GET[sel] == 'one') echo"selected"; ?> > one </option> 
<option <?php if($_GET[sel] == 'two') echo"selected"; ?> > two </option> 
<option <?php if($_GET[sel] == 'three') echo"selected"; ?> > three </option> 
<option <?php if($_GET[sel] == 'four') echo"selected"; ?> > four </option> 

pero el problema es que necesito para salvar esas opciones en una variable porque tengo una gran cantidad de opciones y necesito cal l esa variable muchas veces.

¿Hay alguna manera de seleccionar esa opción donde value = $_GET[sel]?

+0

¿Cómo se generó ese selecto? ¿Está codificado? –

+1

Cuando dices que las estás almacenando en una variable, supongo que te refieres a una matriz, ¿verdad? – BenM

+0

O bien lo que dijo Ben, o supongo que si filma una variable, usó el valor asignado a la opción y no el nombre. Escribiría una función simple para él, y solo lo llamaría cada vez, dejaría que se ejecutara a través de una declaración if else. Le ahorra una gran cantidad de codificación o copia pegar. – Dorvalla

Respuesta

11

Simplemente use la matriz de opciones para ver qué opción está actualmente seleccionada.

$options = array('one', 'two', 'three'); 

$output = ''; 
for($i=0; $i<count($options); $i++) { 
    $output .= '<option ' 
      . ($_GET['sel'] == $options[$i] ? 'selected="selected"' : '') . '>' 
      . $options[$i] 
      . '</option>'; 
} 

Nota al margen: Me defino un valor que haber algún tipo de identificación para cada elemento, de lo contrario es posible que encuentre problemas, cuando dos opciones tienen la misma representación de cadena.

+0

gracias @sirko, pero encontró un error no 'var' y debe ser $ i

+2

Corregido eso. Demasiada codificación de JavaScript en las últimas semanas. – Sirko

0

Estas cotizaciones que falta para $_GET['sel'] - la fijación de esto podría ayudar a resolver su problema cuanto antes :)

6
foreach($array as $value=>$name) 
{ 
    if($value == $_GET['sel']) 
    { 
     echo "<option selected='selected' value='".$value."'>".$name."</option>"; 
    } 
    else 
    { 
     echo "<option value='".$value."'>".$name."</option>"; 
    } 
} 
+0

Eso generará ** dos ** valores para el valor seleccionado. ¿Querías envolver ese segundo eco en un 'else'? – TRiG

+0

Sí, fue mi error ... debería estar en la parte else. –

+0

selected = 'selected' works – kta

0
foreach ($array as $value => $name) { 
    echo '<option value="' . htmlentities($value) . '"' . (($_GET['sel'] === $value) ? ' selected="selected"') . '>' . htmlentities($name) . '</option>'; 
} 

Esto es bastante ordenado, y, creo, explica por sí mismo.

2

esto es simple ejemplo mediante el uso de operador ternario al conjunto seleccionado = seleccionado

<?php $plan = array('1' => 'Green','2'=>'Red'); ?> 
<select class="form-control" title="Choose Plan"> 
<?php foreach ($plan as $key => $value) { ?> 
    <option value="<?php echo $key;?>" <?php echo ($key == '2') ? ' selected="selected"' : '';?>><?php echo $value;?></option> 
<?php } ?> 
</select> 
Cuestiones relacionadas