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.
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:
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.