2012-10-08 27 views
7

mam w phphtml wybierz opcję WYBRANE

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

powiedzmy mam URL inline = site.php?sel=one

jeśli nie zapisać te opcje w zmiennej, można zrobić to w ten sposób aby jedną z opcji można wybrać, gdzie wartość jest równa $_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> 

ale problemem jest to, że trzeba zapisać te opcje w zmiennej, ponieważ mam wiele opcji i muszę cal Ta zmienna wiele razy.

Czy istnieje sposób, aby wybrać tę opcję, gdzie value = $_GET[sel]?

+0

Jak to wybierz generowane? Czy to jest trudne? –

+1

Kiedy mówisz, że przechowujesz je w zmiennej, zakładam, że masz na myśli tablicę, prawda? – BenM

+0

Albo to, co powiedział Ben, albo zakładam, że strzelasz do zmiennej, użyłeś wartości przypisanej do opcji, a nie nazwy. Napisałbym dla niego prostą funkcję i po prostu wywoływałbym ją za każdym razem, niech to będzie przebiegać przez instrukcję if else. Pozwala zaoszczędzić wiele funkcji związanych z kodowaniem lub kopiowaniem. – Dorvalla

Odpowiedz

11

Po prostu użyj tablicy opcji, aby zobaczyć, która opcja jest aktualnie wybrana.

$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: chciałbym zdefiniować wartość jako pewien rodzaj identyfikatora dla każdego elementu, w przeciwnym wypadku może napotkasz problemy, gdy dwie opcje mają taką samą reprezentację ciąg.

+0

dzięki @sirko, ale znalazłem błąd no 'var' i musi to być $ i

+2

Poprawiono that.Too wiele kodu JavaScript w ciągu ostatnich tygodni. – Sirko

0

Brakuje cytaty dla $_GET['sel'] - mocowanie to może pomóc w rozwiązaniu problemu szybciej :)

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

To wypisze ** dwie ** wartości dla wybranej wartości. Czy chciałeś opakować to drugie echo w "else"? – TRiG

+0

Tak, to był mój błąd ... powinien być w innej części. –

+0

selected = 'selected' works – kta

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

To jest dość czysty, i, jak sądzę, oczywiste.

2

To jest prosty przykład za pomocą operatora potrójny zestaw do selected = wybrany

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