Combobox mit Jahreszahlen füllen

phpameise

Mitglied
Liebe Experten und Hobbie Programmierer,
kann mir einer helfen? Ich habe ein Formular mit MySQL Datenbankanbindung erstellt. Alle Felder laufen prima. Auch die Comboboxen funktionieren. Ich fülle sie zum Teil mit Daten aus bestimmten Tabellen und schreibe dann den vom User ausgewählten Wert in eine User Tabelle. Der User hat dann die Möglichkeit seine Auswahl nach einem erneuten Login zu verändern und erneut abzuspeichern:

Bsp Haarfarbe:
PHP:
<td width="26%"><select name="Haarfarbe" class="" id="Haarfarbe">
<option value="0" selected>Bitte ausw&auml;hlen</option>
<?php
do {
?>
<option value="<?php echo $row_Haarfarbe_Satz['Farbe']?>"<?php if (!(strcmp($row_Haarfarbe_Satz['Farbe'], $row_settings['Haarfarbe']))) {echo "selected=\"selected\"";} ?>><?php echo $row_Haarfarbe_Satz['Farbe']?></option>
<?php
} while ($row_Haarfarbe_Satz = mysql_fetch_assoc($Haarfarbe_Satz));
$rows = mysql_num_rows($Haarfarbe_Satz);
if($rows > 0) {
mysql_data_seek($Haarfarbe_Satz, 0);
$row_Haarfarbe_Satz = mysql_fetch_assoc($Haarfarbe_Satz);
}
?>
</select></td>
...mysql_query("UPDATE tblTestPersonal SET
`Haarfarbe` = '$data[Haarfarbe]'
WHERE id='$_SESSION[user_id]'
") or die(mysql_error());....
Das funktioniert alles perfekt.

Jetzt habe ich eine Combobox die nicht aus einr Tabelle gefüllt wird. Es ist die Combobox GeburtsJahr.
Der Nutzer soll mindestens 14 Jahre alt sein und die dort angebotenen Jahreszahlen verändern sich natürlich im laufe der Jahre automatisch.
Das geht auch.
PHP:
<select name="GeburtsJahr" class="pflichtfelder" id="GeburtsJahr">
<option value="<?php
// Jahres-Auswahlliste
$Jahre = 100; // Anzahl der Jahre
$ThisYear = date("Y")-14;
for ($i = 1; $i < $Jahre; $i++) {
echo "<option value=\"$ThisYear\">$ThisYear</option>\r";
$ThisYear--;
}
?>">
</option>
</select>

Jetz aber der Punkt an dem ich Hilfe brauche:
Wie kann ich die Combobox ähnlich der Haarfarbe mit dem bereits durch den Benutzer eingestellten Wert starten und dennoch die Jahreszahlformel oben einbinden, damit der User theoretisch sein Geburtsjahr korrigieren kann.
Hat jemand Lust mir zu helfen? Danke
 
Das Feld, das bei einem Select-Tag ausgewählt ist, bestimmt man durch das Attribut "selected" im jeweiligen Option-Tag.

Somit muss du in der Schleife überprüfen, ob der Wert aus deiner DB mit $ThisYear übereinstimmt.
 
Mit der Haarfarbe und "selected" habe ich es hinbekommen. Aber wie ich in die ganze Grammatik diese "ThisYear" Formel einbinden kann - keine Ahnung. Danke trotzdem.
 
Du musst einfach bei jedem Durchgang in der Schleife diese Bedingung prüfen.

Also:
PHP:
<?php
  
  if ($thisYear == $yearSavedInDatabase)
  {
     /* <option> mit selected-Attribut ausgeben */
  }
  else
  {
    /* <option> _ohne_ selected-Attribut ausgeben */
  }

?>

Den Code für den else-Zweig hast du ja bereits.
 
Da ist wohl noch was komplett daneben?
PHP:
<select name="GeburtsJahr" id="GeburtsJahr">
 <?php
// Jahres-Auswahlliste
$Jahre = 100; // Anzahl der Jahre
$ThisYear = date("Y")-14;
for ($i = 1; $i < $Jahre; $i++)
if ($ThisYear == $row_settings['GeburtsJahr'])
{
echo "<option selected value=\"$ThisYear\">$ThisYear</option>\r";
$ThisYear--;
} else {
echo "<option value=\"$ThisYear\">$ThisYear</option>\r";
$ThisYear--;
}
?>

</select>
 
Du hat nur die Klammern der For-Schleife vergessen:
PHP:
<select name="GeburtsJahr" id="GeburtsJahr">
 <?php
// Jahres-Auswahlliste
$Jahre = 100; // Anzahl der Jahre
$ThisYear = date("Y")-14;
for ($i = 1; $i < $Jahre; $i++)
{
  if ($ThisYear == $row_settings['GeburtsJahr'])
  {
    echo "<option selected=\"selected\" value=\"$ThisYear\">$ThisYear</option>\r";

  }
  else
  {
    echo "<option value=\"$ThisYear\">$ThisYear</option>\r";  
  }
  $ThisYear--;
}
?>
</select>

Nächstes Mal, bitte deinen Code in sog. Code-Tags einfügen, z.B. [code=php]-Code-[/code] für PHP.
 
Zurück