ugrás a tartalomhoz

select option for ciklusban

phpista · 2006. Ápr. 2. (V), 11.55
Hogyan lehet azt megoldani, hogy van egy select és az option-t for ciklusban íratom ki (adott esetben az évet) úgy, hogy az aktuális év legyen mindig az első helyen.
  1. echo "<select name=\"ev\">";  
  2. $currentEv = date("Y");  
  3.   for ($i=2003;$i<2011;$i++) {  
  4.    if ($currentEv == $i) {  
  5.     echo "<option value=" . $currentEv . ">" . $currentEv;  
  6.    }  
  7.    else {  
  8.     echo "<option value=" . $i . ">" . $i;  
  9.    }  
  10.   }  
  11. echo "</select>";  
Válaszokat előre is köszönöm!
 
1

Pl.

Anonymous · 2006. Ápr. 2. (V), 12.10
  1. for ($i = 2003; $i <= 2011; $i++) {  
  2.   $curr = (($i == date("Y")) ? 'selected="selected"' : '');         
  3.   echo '<option value="'.$i.'"'.$curr.'>'.$i.'</option>'."\n";  
  4. }  
3

Tényleg

phpista · 2006. Ápr. 2. (V), 12.17
Hát köszönöm. Agyaltam már egy ideje, pedig tök egyszerű! Lehet, hogy már fáradt vagyok így vasárnap :))
2

Pontosabban...

-zsolti- · 2006. Ápr. 2. (V), 12.16
...így (az előző törölhető, én voltam):
  1. for ($i = 2003; $i < 2011; $i++) {  
  2.   $curr = ($i == date("Y") ? ' selected="selected"' : '');         
  3.   echo '<option value="'.$i.'"'.$curr.'>'.$i.'</option>'."\n";  
  4. }  
Tehát elfelejtetted lezárni az option tag-et, egy bizonyos elem pedig akkor lesz selected, ha beleírod még a selected="selected" részt.
4

Ide írom már..

phpista · 2006. Ápr. 2. (V), 12.22
a teljes jó kódot mások számára is:
  1. <?php  
  2. echo "<select name=\"ev\">";  
  3.     $currentEv = date("Y");  
  4.       for ($i=2003;$i<2011;$i++) {  
  5.         if ($currentEv == $i) {  
  6.           echo "<option value=" . $currentEv . " selected>" . $currentEv;  
  7.         }  
  8.         else {  
  9.            echo "<option value=" . $i . ">" . $i;  
  10.         }  
  11.       }  
  12. echo "</select>";  
  13.               ?>  
És köszönöm mindenkinek!