erethyias: Verkettete Auswahllisten mit Informationen aus einer mysql DB

Hallo SELFHTML Community,

ich versuche mich grade an einem Projekt für die Berufsschule.

Auf der index.php ist eine Oberfläche mit Auswahllisten zu sehen;
Ich möchte gerne die ersten zwei Auswahllisten miteinander verketten(ist glaubig der Fachbegriff dafür).

Die Daten werden aus einer mysql Datenbank gelesen.

Abfrage für die Jahre:

$abfrage = "SELECT Date_Format(d_datum ,'%Y') as jahr FROM kopierauftraege Group by jahr";

$db_erg = mysql_query($abfrage);
    if (!$db_erg)
    {
    die('Ihre Abfrage ist nicht zulaessig!:' . mysql_error());
    }

while ($zeile = mysql_fetch_array($db_erg, MYSQL_ASSOC))
{
  echo "<option>". $zeile['jahr'].            "</option>";
}
mysql_free_result($db_erg);

?>

dasselbe in Bunt für die Monate.

Wie verkette ich nun die Daten miteinander so dass wenn ich, das Jahr auswähle (was die erste Auswahlliste ist) er automatisch mir nur die Monate für das Jahr ausgibt welche in der Datenbank vorhanden sind?

Ich habe mir dazu bereits über mehrere Tage folgenden Beitrag "http://aktuell.de.selfhtml.org/artikel/javascript/verkettete-auswahllisten/#variationen" angesehen und komme verzweifelt einfach nicht weiter.

In PHP habe ich folgenden Quellcode:

<p align="center">
<label id="jahrLabel" for="jahr">Jahr:</label>
<select id="jahr" style="width:175px">
  <option value="--">Bitte auswählen</option>
  <?php include "auslese_6.php"; ?>
</select>
<br>
<br>
<label id="monatLabel" for="monat">Monat:</label>
<select id="monat" style="width:175px">
  <option value="--">------</option>
</select>
</p>

<div id="ergebnis"></div>

Aus dem Beitrag von Rodney Rehm habe ich die LinkedSelection 1:1 übernommen.
In dem Beitrag sind die Werte bereits fest in der terminAuswahl.js fest.
Ich hatte bereits versucht diese umzuschreiben, jedoch ohne Erfolg.

Ich hoffe jemand hat einen Lösungsansatz!

Gruß

  1. Hi!

    $abfrage = "SELECT Date_Format(d_datum ,'%Y') as jahr FROM kopierauftraege Group by jahr";
    $db_erg = mysql_query($abfrage);
        if (!$db_erg)
          die('Ihre Abfrage ist nicht zulaessig!:' . mysql_error());

    Wenn MySQL einen Fehler meldet, dann hast du entweder einen Syntaxfehler eingebaut oder MySQL kann aus anderem Grunde grad nicht. Auf keinen Fall hat aber der Anwender etwas verkehrt gemacht, also wirf ihm das bitte nicht vor, schon gar nicht mit solchen technischen Details wie der Fehlermeldung. Diese solltest du loggen oder anderweitig nur dem Administrator zur Verfügung stellen.

    Wie verkette ich nun die Daten miteinander so dass wenn ich, das Jahr auswähle (was die erste Auswahlliste ist) er automatisch mir nur die Monate für das Jahr ausgibt welche in der Datenbank vorhanden sind?

    Wenn du nicht bereits wie im Artikel den gesamten Datenbestand vorab abgefragt mitsenden möchtest, brauchst du eine andere Technik. Ajax wäre das aktuelle Mittel der Wahl, um nach der Auswahl eine gezielte Abfrage nach den Daten auszuführen. Zudem, wenn du nicht unbedingt diese Komponente selbst entwickeln willst/musst, wirst du garantiert in Frameworks fündig.

    Lo!

  2. Mahlzeit erethyias,

    Wie verkette ich nun die Daten miteinander so dass wenn ich, das Jahr auswähle (was die erste Auswahlliste ist) er automatisch mir nur die Monate für das Jahr ausgibt welche in der Datenbank vorhanden sind?

    Die Daten befinden sich in einer Datenbank auf dem Server. Der PHP-Code auf dem Server erzeugt daraus eine gefüllte Jahres-Auswahlliste und eine leere (da noch kein Jahr ausgewählt wurde) Monats-Auswahlliste und schickt das entsprechende HTML an den Browser. Dort wird es dargestellt.

    So weit richtig?

    Wenn jetzt auf dem Client im Browser eine Interaktion stattfindet (also z.B. ein Jahr ausgewählt wird), hast Du genau drei Möglichkeiten:

    1.) Du hast schon alle möglichen Monatslisten direkt mit in das HTML (bzw. genauer: in dort enthaltenem Javascript-Code) eingebaut und kannst diese direkt in die Monats-Auswahlliste laden.

    2.) Du schickst das Formular, in dem sich die Auswahllisten befinden ab, so dass der PHP-Code auf dem Server anhand des ausgewählten Jahres die passende Monats-Auswahlliste erzeugen kann.

    3.) Du betreibst eine Kombination aus beidem (mittels AJAX): Du lädst im Hintergrund die zum ausgewählten Jahr passenden Monate nach und füllst die Monats-Auswahlliste entsprechend.

    Ich habe mir dazu bereits über mehrere Tage folgenden Beitrag "http://aktuell.de.selfhtml.org/artikel/javascript/verkettete-auswahllisten/#variationen" angesehen und komme verzweifelt einfach nicht weiter.

    Was sind Deine Extr^H^H^H^Hkonkreten Probleme dabei?

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:& n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|