Dropdown Monatsauswähl

Walemann

Mitglied
Hallo Zusammen,
habe ein kleines Problem auf das ich nich komme oder ich steh einfach auf dem Schlauch.
Ich habe ein PulldownMenü um den Monat auszuwählen.
Quelltext
PHP:
<?php
$monate = array(Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember); 
$monateanzahl = count($monate);

		echo'<select name="monat">';
    echo'<option value=""selected>--</option> '; 
    for( $i=0; $i<=$monateanzahl; $i++ ) {
    if($_POST['monat'] == $i) {
            echo '<option value="'.$monate[$i].'" selected>'.$monate[$i].'</option>';
    }
    else {
            echo '<option value="'.$monate[$i].'">'.$monate[$i].'</option>';
    }
    }
    echo'</select>';
?>
wenn ich dieses Script verwende wird der erste Monat aus dem array nicht aufgeführt dafür ist nach dem Dezember ein leeres Auswahlfeld.
kann mir jemand helfen meinen Fehler zu finden. oder hat jemand eine andere idee.

MFG Fabian
 
Count gibt die Anzahl der Einträge zurück, ergo 12.

Ein Array startet bei 0, sprich deine for() Schleife zählt von 0-12, das ergibt 13 Einträge. ;)
 
Nach kleinem Stoß auf den Hinterkopf:
Hier das Script:
PHP:
<?php
$monate = array('--', Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember); 
$monateanzahl = count($monate);

		echo'<select name="monat">';
    for( $i=0; $i<=$monateanzahl-1; $i++ ) {
    if($_POST['monat'] == $i) {
            echo '<option value="'.$i.'" selected>'.$monate[$i].'</option>';
    }
    else {
            echo '<option value="'.$i.'">'.$monate[$i].'</option>';
    }
    }
    echo'</select>';
?>

Danke schön
MFG Fabian
 
Warum überhaupt count() einsetzen?
In dem Fall handelt es sich doch um eine fixe Anzahl von Monaten, die sich nicht wirklich ändert. Da könntest du doch auch direkt mit einem fixen Wert arbeiten? Viel wird es sich nicht auf die Laufzeit auswirken, aber ein "sinnloser" Funktionsaufruf weniger.
 
kleiner statt kleiner gleich würde Dein Problem auch lösen. Wobei es halt unschön ist das Januar dann Stelle 0 hat. count() könnte man sich hier wirklich schenken

PHP:
$monate = array(Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember); 
$monateanzahl = count($monate);

        echo'<select name="monat">';
    echo'<option value=""selected>--</option> '; 
    for( $i=0; $i<$monateanzahl; $i++ ) {
    if($_POST['monat'] == $i) {
            echo '<option value="'.$monate[$i].'" selected>'.$monate[$i].'</option>';
    }
    else {
            echo '<option value="'.$monate[$i].'">'.$monate[$i].'</option>';
    }
    }
    echo'</select>';
?>
 
Zuletzt bearbeitet:
PHP:
$monate = array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"); 
echo '<select name="monat">';
echo '<option value="">--</option>';
foreach ($monate as $monat) {
  echo '<option value="'.$monat.'" '.($_POST["monat"]==$monat?"selected":"").'>'.$monat.'</option>';
}
evtl noch kompakter. Desweiteren sollten in dem Array Strings in Anführungszeichen gesetzt werden.
 
Hallo alle miteinander,
Ich habe bewusst diese variante mit dem Count gewählt das ich dieses Script auch für andere Felder übernehmen kann ohne das ich an die menge der Felder denken muss.

Ich möchte wenn nichts eingetragen ist immer die variable 0 bekommen deshalb fange ich auch bei '0' an und nicht bei '1'.

Diese variante habe ich gewählt:
PHP:
echo '<option value="'.$i.'">'.$monate[$i].'</option>';
Damit ich eine Zahl und kein Wort als variable erhalte.
So kann ich alle meine felderabfragen gleich machen. Außer ich habe einen denkfehler.

So sieht mein fertiges script aus.
PHP:
$error1 .= "<div class='errormessages'>Bitte ein Monat auswählen!</div>"; 
if(isset($_POST['submit'])) {
if($_POST['monat'] == "0") $error['monat'] = $error1 ;

if (isset ($error['monat'])) { echo $error1; } 

$monate = array('--', Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember); 
$monateanzahl = count($monate);

		echo'<select name="monat" ';
    if (isset($error['monat'])) {
    echo 'id="errorfeld" ';
    } 
    echo'>';
    for( $i=0; $i<=$monateanzahl-1; $i++ ) {
    if($_POST['monat'] == $i) {
            echo '<option value="'.$i.'" selected>'.$monate[$i].'</option>';
    }
    else {
            echo '<option value="'.$i.'">'.$monate[$i].'</option>';
    }
    }
    echo'</select>';

aber die kompakte Version von hubeR83 muss ich mir mal noch genauer anschauen.

MFG Fabian
 
Zurück