web-dev-qa-db-fra.com

html select option SELECTED

J'ai dans mon php

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

disons que j'ai une URL en ligne = site.php?sel=one

si je n'ai pas enregistré ces options dans une variable, je peux le faire de cette façon pour que l'une des options soit SELECTED où la valeur est égale à $_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>

mais le problème est que je dois enregistrer ces options dans une variable car j'ai beaucoup d'options et j'ai besoin d'appeler cette variable plusieurs fois.

Existe-t-il un moyen de sélectionner cette option là où value = $_GET[sel]?

10
Jam Ville

Il suffit d’utiliser le tableau d’options pour voir quelle option est actuellement sélectionnée.

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

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

Note: Je définirais une valeur comme une sorte d'identifiant pour chaque élément, sinon vous pourriez rencontrer des problèmes lorsque deux options ont la même représentation de chaîne.

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

Ceci est un exemple simple en utilisant l’opérateur ternaire pour définir selected = selected

<?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>
2
Muhammad Fahad

Vous manquez des guillemets pour $_GET['sel'] - résoudre ce problème pourrait vous aider à résoudre votre problème plus tôt :)

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

Ceci est assez soigné et, je pense, explicite.

0
TRiG