У меня в моем php
$sel = " <option> one </option> <option> two </option> <option> thre </option> <option> four </option> ";
скажем, у меня есть встроенный URL = site.php?sel=one
если я не сохранил эти параметры в переменной, я могу сделать это таким образом, чтобы один из параметров был выбран SELECTED, где значение равно $_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>
но проблема в том, что мне нужно сохранить эти параметры в переменной, потому что у меня много опций, и мне нужно многократно вызывать эту переменную.
Есть ли способ сделать этот параметр выбранным, где value = $_GET[sel]
?
Просто используйте массив параметров, чтобы увидеть, какая опция в данный момент выбрана.
$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: я бы определил значение как некоторый идентификатор для каждого элемента, иначе вы можете столкнуться с проблемами, когда два параметра имеют одинаковое строковое представление.
foreach($array as $value=>$name) { if($value == $_GET['sel']) { echo "<option selected='selected' value='".$value."'>".$name."</option>"; } else { echo "<option value='".$value."'>".$name."</option>"; } }
Это простой пример, используя тройной оператор для установки 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>
Вам не хватает котировок для $_GET['sel']
– исправление этого может помочь решить проблему раньше 🙂
foreach ($array as $value => $name) { echo '<option value="' . htmlentities($value) . '"' . (($_GET['sel'] === $value) ? ' selected="selected"') . '>' . htmlentities($name) . '</option>'; }
Это довольно аккуратно и, я думаю, самоочевидно.