For next Schleife geht ins Endlose

SwingerLive

Mitglied
Hallo,

ich haben eine kleine Schleife, die mir ein Pulldown Menü generiert, und zwar
vom heutigen Jahr (2004) 60 Jahre zurück. Hier der Code:

<select name="vonjahr">
<?
$zeit =time();
?><option value=""></option><? $jahr = date("Y", $zeit);
for($x = 0; $x < 60; $x++)
{
echo "<OPTION value=\"$jahr\"";
if ($vonjahrausbildung1 == "$jahr") echo "selected";
echo ">$jahr</option>";
$jahr=$jahr-1;
}
?>
</select>



Diese Schleife benötige ich insgesamt 26 mal, ich gebe dem <select name="vonjahr">
natürlich jedesmal eine andere Variable an. Und nun kommt der Punkt wo ich absolut
nicht mehr weiterweis. Nachdem das 8.te Pulldownmenü erzeugt wurde, geht die
For Next Schleife in eine Endlosschleife über. Ist aber genau der gleiche Code wie bei allen anderen Schleifen.

Hat das was mit der PHP Version zu zun die auf dem Webserver installiert ist? denn
wenn ich den absolut gleichen Script auf einen anderen Webserver laufen lasse, dann
geht das ohne Probleme.

Hier die beiden PHP Versionen:

1. PHP Version 4.3.1 (Hier geht die Schleife in die Endlosschleife über)
2. PHP Version 4.3.8 (Hier läuft der Script einwandfrei)

Kann mir da jemand weiterhelfen


Gruß

Andreas
 
Wenn Du diese Schleife 26 mal benötigst, wäre es sicherlich sinnvoll, diese in eine Funktion zu packen:

PHP:
    function erzeuge_auswahlbox($name, $selected)
    {
    	echo '<select name="', $name, '"><option value=""></option>';
    
    	$zeit = time();
    	$jahr = date("Y", $zeit);
    
    	for($I = 0; $I < 60; $I++) {
    		echo '<option value="', $jahr, '"';
    		if ($selected == $jahr) echo ' selected="selected"';
    		echo '>', $jahr, '</option>';
    		$jahr--;
    	}
    	
    	echo '</select>';
    }

Aufrufen kannst Du diese Funktion z.B. einfach mit erzeuge_auswahlbox("vonjahr", $vonjahrausbildung1);

Schau mal, ob das Dein Problem löst.
 
CodAv hat gesagt.:
Wenn Du diese Schleife 26 mal benötigst, wäre es sicherlich sinnvoll, diese in eine Funktion zu packen:


Aufrufen kannst Du diese Funktion z.B. einfach mit erzeuge_auswahlbox("vonjahr", $vonjahrausbildung1);

Schau mal, ob das Dein Problem löst.


Danke dir für deine schnelle Antwort. Habe es eben umgebaut, und siehe
da, es funktiniert. Mich würden nur noch interessieren warum bei einem Provider
daraus eine Endlosschleife wird, und beim anderen nicht?

Gruß

Andreas
 
Die Frage nach dem Warum lässt sich anhand dieses einen Codeschnipsels schwer beantworten. Ich vermute, dass es an einem PHP-Bug oder einem zwischen diesen Versionen geänderten Feature, oder auch an einer unterschiedlichen PHP-Konfiguration liegen wird, ein kleiner Fehler im Code ist natürlich auch möglich. Das ist der Grund, warum man oft benutzte Passagen besser in Funktionen oder Klassen verfrachtet, je nach Anwendungsgebiet und Art des Codes.
 
Ok, danke dir für deine Hilfe. Ich bin gerade dabei meine Monatsangabe ebenfalls in eine
Funktion zu packen:

HTML:
<select name="schulstudiumvonmonat">
                <option value=""></option>
<?if ($schulstudiumvonmonat) echo "<option value=\"$schulstudiumvonmonat\" selected>$schulstudiumvonmonat</option>";?>
				<option value="Jan">Jan</option>
                <option value="Feb">Feb</option>
                <option value="Mar">Mar</option>
                <option value="Apr">Apr</option>
                <option value="Mai">Mai</option>
                <option value="Jun">Jun</option>
                <option value="Jul">Jul</option>
                <option value="Aug">Aug</option>
                <option value="Sep">Sep</option>
                <option value="Okt">Okt</option>
                <option value="Nov">Nov</option>
                <option value="Dez">Dez</option>
              </select>


PHP:
function erzeuge_monatbox($name, $selected)
    {
        echo '<select name="', $name, '"><option value=""></option>';
       if ($selected) echo "<option value=\"$selected\" selected>$selected</option>";?>
				<option value="Jan">Jan</option>
                <option value="Feb">Feb</option>
                <option value="Mar">Mar</option>
                <option value="Apr">Apr</option>
                <option value="Mai">Mai</option>
                <option value="Jun">Jun</option>
                <option value="Jul">Jul</option>
                <option value="Aug">Aug</option>
                <option value="Sep">Sep</option>
                <option value="Okt">Okt</option>
                <option value="Nov">Nov</option>
                <option value="Dez">Dez</option>
			  </select>
          <?}?>


Gruß

Andreas
 
Zurück