Gå til innhold

[Løst]feil i script som lager select meny med årstall


Anbefalte innlegg

Jeg har laget en for-loop som genererer en selectboks med årstall i. Selve for-loopen fungerer, men jeg vil også at året vi er i atomatisk skal være forhåndsvalgt. Det fungerer helt frem til 2009, men når den kommer dit setter den alle de neste årstallene til selected også.

 

code

<select name="aar">

<?php 
$currentyear = date("Y",time());

for ($i = 2007; $i < 2012; $i++){

if($currentyear == $i){

$selected = "selected";}

echo"<option $selected value=\"$i\">$i</option>\n";
}
?>
</select>

 

output

<select name="aar">

<option  value="2007">2007</option>
<option  value="2008">2008</option>
<option selected value="2009">2009</option>
<option selected value="2010">2010</option>
<option selected value="2011">2011</option>

</select>

 

noen som ser hvor feilen ligger?

Lenke til kommentar
Videoannonse
Annonse

Feilen ligger i at du ikke nullstiller $selected. Den beholder dermed verdien fra en tidligere runde i loopen. Personlig ville jeg droppen variablen helt og gått for noe slikt:

<select name="aar">

<?php 
$currentyear = date("Y",time());

for ($i = 2007; $i < 2012; $i++)
echo"<option",(($currentyear == $i) ? ' selected': '')," value=\"$i\">$i</option>\n";
?>
</select>

Lenke til kommentar

ok, det tenkte jeg ikke på...løste det forøvring selv på denne måten:

 

				<?php 
			$currentyear = date("Y",time());

			for ($i = 2007; $i < 2012; $i++){

			if($currentyear == $i){

			echo"<option selected value=\"$i\">$i</option>\n";
			}else {

				echo"<option value=\"$i\">$i</option>\n";

				}


			}
			?>

 

men din er muligens hakket raskere, bare en annen måte å skrive if-test på.

Endret av Tha_Zaynt
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...