2012-10-08 14 views
7

ho in phpHTML selezionato

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

diciamo che ho un URL in linea = site.php?sel=one

se non ho salvato queste opzioni in una variabile, posso farlo in questo modo per fare una delle opzioni selezionabili dove il valore è pari 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> 

ma il problema è, ho bisogno di salvare le opzioni in una variabile perché ho un sacco di opzioni e ho bisogno di cal Quella variabile molte volte.

C'è un modo per rendere selezionata quell'opzione dove value = $_GET[sel]?

+0

Come è che selezionare generato? È hard-coded? –

+1

Quando dici che li stai immagazzinando in una variabile, presumo tu intenda un array, giusto? – BenM

+0

O quello che Ben ha detto, o mi sembra che se spari a una variabile, hai usato il valore assegnato all'opzione e non il nome. Vorrei scrivere una funzione semplice per questo, e basta chiamarlo ogni volta, lasciarlo scorrere attraverso un'istruzione if else. Salva un sacco di codice o copia incolla. – Dorvalla

risposta

11

Basta usare la matrice di opzioni, per vedere, quale opzione è attualmente selezionata.

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

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

Sidenote: io definisco un valore per essere una sorta di id per ogni elemento, altrimenti si può incorrere in problemi, quando due opzioni hanno la stessa rappresentazione di stringa.

+0

grazie @sirko, ma ho trovato qualche errore no 'var' e deve essere $ i

+2

corretto. Troppo codifica JavaScript nelle ultime settimane. – Sirko

0

Ti manca citazioni per $_GET['sel'] - fissare questo potrebbe contribuire a risolvere il problema prima :)

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

Questo produrrà ** due ** valori per il valore selezionato. Intendevi avvolgere quel secondo eco in un 'else'? – TRiG

+0

Sì, è stato un mio errore ... dovrebbe essere in un'altra parte. –

+0

selezionato = opere 'selezionate' – kta

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

Questo è abbastanza pulito, e, credo, auto-esplicativo.

2

questo è semplice esempio usando operatore ternario al set selezionato = selezionato

<?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> 
Problemi correlati