Hallo Leute, ich möchte 3 Auswahllisten realisieren: Jahr -> Monat -> Tag so ähnlich wie wenn ich im Netz irgend ein Sop besuche und dort zB. Hardware -> Speicher - DDR2 -> usw. auswähle. In einer Datenbank sin zum Datum immer Werte gespeichert. Es sollen auch nur die Werte zur Auswahl stehen die auch in der DB stehen. Die Abfrage nach dem Jahr ist kein Problemm nur tue ich mich sehr schwer mit dem nächsten Schritt. Wie kann ich die Abfrage nach dem Monat jetzt realisieren ohne das die Seite neu läd? Mir ist wichtig, das in der Liste nur Werte auftauchen die in der DB auch vorhanden sind. Jahr -> Monat -> Tag so ähnlich wie wenn ich im Netz irgend ein Sop besuche und dort zB. Hardware -> Speicher - DDR2 -> usw. auswähle. Wie realisiert man sowas? Ich finde keinen richtigen Ansatz oder ist die Sachlage doch Größer als ich denke? hier noch mal der Testcode von auswahl.php: //kann ich auch den Parameter der aktuellen PHP Datei auch übergeben? zb. zu auswahl.php? echo ('<form action="anfrage.php" method="POST">'); echo ("<select name='Jahr' size='1' tabindex='1' onChange='this.form.submit()'>"); //mittels Java bei Auswahl senden while($Datum = mysql_fetch_array($Wetterdaten)) { $Jahr[] = date("Y",strtotime($Datum['Datum'])); #$Monat[] = date("m",strtotime($Datum['Datum'])); #$Tag[] = date("d",strtotime($Datum['Datum'])); } $arr = array_count_values($Jahr); // zähler für alle Verschiedenen Werte, in der Form [2007]=>200; [2005]=>1 usw. $ar = array_keys($arr); // erzeugen eines neue Arrays in der Form [0]=>2007; [1]=>2005 usw. foreach($ar as $wert) echo ("<option value=$wert>$wert</option>"); echo ("</select>"); echo('</form>'); Gruß Peter
Ganz verstanden habe ich das nicht. Sind grundsätzlich alle Daten auswählbar, oder ist ein betimmtes Datum nicht auswählbar, wenn dazu keine Infos in der DB sind? Wenn das so ist wirst du nur mit PHP nichts werden, da muss dann was dynamisches wie Java Script her.
Hallo, Man kann etwas "fertiges" nehmen und sich dann damit abquälen. strus: struts4php (php5) ajax: http://www.ajax-info.de/uebersicht-ajax-frameworks/php-frameworks oder selber machen... PHP lädt zum unsturkturierten Programmieren ein. Man kann über eval() vieles erreichen was in Richtung selbstmodifizierender Code und regelbasiertes Programmieren geht. Deine Fragestellung ist dazu zu offen... >kann ich auch den Parameter der aktuellen PHP Datei auch übergeben? >zb. zu auswahl.php? Eben genau sowas geht mit PHP. Beispiel aus dem Manual: // Das ist KORREKT. if ($bedingung) { include $datei; } else { include $andere_datei; } Das führt zu unstrukturierten Programmen (->Murks).
Du moechtest also Inhalt auf einer Seite dynamisch anzeigen, je nach Auswahl des Benutzers, ohne das die Seite neu vom Server geladen wird? Dann brauchst du auch eine clientseitige Programmiersprache wie JavaScript. Theoretisch koennte man auch mit CSS etwas basteln, dass immer nur die richtige Auswahlliste sichtbar ist - wird aber aufwendig, dass auch in Klicki-Bunti-Internetprogrammen zum Laufen zu bekommen (in standardkonformen Browsern wie FF ist das kein Problem...)
Hallo, Es soll ein bestimmtes Datum nicht auswählbar sein, wenn dazu keine Infos in der DB sind. Wie wäre denn der Ansatz mit Javascript? Das hat doch aber dann wieder den Nachteil, dass einige die Seite nicht benutzen können, oder? Welche serverseitige Lösung gibt es? Danke.
Dafür gibt es keine serverseitige Lösung mit deiner Forderung, die Seite nur einmal laden zu müssen! Ich weiß zwar nicht, welchen Umfang der Datenbestand hat, aber die Übertragung könnte mitunter ziemlich groß werden bei einer Java Script Anwendung. Du musst schließlich jede abhängige Kombination abdecken. Sprich du musst bei dieser Art der Lösung schon mal vorneweg jedes zulässige Datum übertragen.
Wie werden denn solche Auswahllisten in Shops usw. realisiert? Da wird doch auch eine Datenbank überprüft, oder?
Ist möglich, muss aber nicht sein. Bei Shops ist die Datentiefe aber auch überschaubar. Weiß gerade nicht welchen Shop du meinst, aber du kannst dir ja den Seitenquelltext mal ansehen, dann weißt du ja wie sie es gemacht haben.
Falls du das vom Prinzip her wie z.B. bei der Markenauswahl auf mobile.de meinst, habe ich das folgendermaßen gemacht (wie schon beschrieben geht das wohl nur mit Javascript): Die Daten mittels php (ich habs mit perl gemacht) abholen, und ein Javascript-Array mit den Daten erstellen. Für den Jahresauswahlfeld in etwa so:
1 | function liste_aendern(nr) { |
2 | for (var j = document.formular.meineDaten.length - 1; j >= 0; j--) { |
3 | document.formular.meineDaten.options[j] = null; |
4 | }
|
5 | |
6 | // Diese Liste muss mittels Datenbankabfrage generiert werden
|
7 | var listen = new Array(2); |
8 | listen[2005] = new Array(); |
9 | listen[2006] = new Array(); |
10 | listen[2005][0] = "1, abc"; |
11 | listen[2005][1] = "2, def"; |
12 | listen[2006][0] = "1, uvw"; |
13 | listen[2006][1] = "2, xvy"; |
14 | |
15 | for (j = 0; j < listen[nr].length; j++) { |
16 | var daten = listen[nr][j].split(','); |
17 | NeuerEintrag = new Option(daten[1], daten[0], false, true); |
18 | document.formular.meineDaten.options[document.formular.meineDaten.length] = NeuerEintrag; |
19 | }
|
20 | }
|
In deinem Jahres-Selectfeld dann bei Änderung die Funktion aufrufen: onChange="liste_aendern(this.form.Jahr.options[this.form.Jahr.options.se lectedIndex].value)" Bei Änderungen wird dann das select-Feld "meineDaten" mit den zugehörigen Daten gefüllt. Hängt von der Datenmenge ab ob das so zu gebrauchen ist. Bei Mobile.de stehen die Modelldaten in einer 16kB großen Textdatei.
Wenn du unbedingt Daten vom Server nachladen musst, schau dir mal das XMLHttpRequest Objekt für JavaScript an. Grober Ablauf: - Benutzer feuert durch Auswahl in der ersten Box ein Event. - Zugehöriger Eventhandler wirft sowas wie 'Loading' auf den Schirm, ruft mittels XMLHttpRequest ein paar Daten vom Server ab, wartet auf die Ankunft der Daten und fügt sie in die richtige Liste ein. Danach das 'Loading' wieder wegnehmen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.