php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.12.2008, 20:06  
Neuer Benutzer
 
Registriert seit: 26.06.2008
Beiträge: 16
derneue2008 befindet sich auf einem aufstrebenden Ast
Standard

hm, ok ich hab jetzt step by step gesehen,

wenn ich zuerst bei CC drücke, cc1 zb, dann merkt er sich das, dann filtert er auch echt einrichtungen die nur zur cc1 gehören, das klappt bis hierher, aber wenn ich jetzt bei einrichtung auswähle, dann spuckt er alle arbeitsbereich aus, genau das bei letzte arbeitsbereich muss bei der sql abfrage modifiziert werden damit er dann auch nur aus einrichtungen eingrenzt, von center zur einrichtung klappt es noch wunderbar weil es in eine tabelle drin ist, dagegen ist arbeitsbereich in eine andere tabelle (lab_inst), deshalb filtert der nicht richtig und spuckt alles aus egal was ich dann bei einrichtung auswähle, ich weiss nicht welche sql abfrage ich dahin schreibe damit er richtig filtert

bin echt noob, danke dir für die Hilfe, ich bin mir sicher du kannst es sofort lösen =o)
derneue2008 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 06.12.2008, 20:31  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

"er" merkt sich da garnichts.
Zitat:
Jedes Mal, wenn das Formular abgeschickt wird (ob durch den submit-Button oder durch javascript-submit(), egal) sendet der Browser alle benannten, gültigen Elemente des Formulars als Name=Wert Paare an den Webserver. Daraus, und nur daraus, baut PHP für diesen Durchlauf des Skripts das Feld _POST zusammen.
PHP macht aufgrund der _POST Daten etwas und schickt eine neue HTML Seite mit einem neuen Formular an den Browser.

Gehen wir es mal von Anfang an durch. Du rufst das Skript das erste Mal auf, das erste <select> wird mit den DB-Daten gefüllt, der Rest ist erstmal egal.
Du wählst im ersten <select> CC01 aus. Der Browser sendet die Anfrage mit select_centren=CC01&select_einrichtung=&select_arbeitsbereich= ab. PHP macht daraus
PHP-Code:
$_POST = array(
  
'select_centren' => 'CC01',
  
'select_einrichtung' => '',
  
'select_arbeitsbereich' => ''
); 
und dann wird Dein Skript abgearbeitet - von oben nach unten. Das erste <select> wird <option value="" selected="selected> und den Daten aus der DB gefüllt.
$_POST['select_centren'] ist gleich 'CC01' also wird das zweite <select> mit <option value="" selected="selected> und dem Ergebnis der Abfrage
Code:
SELECT DISTINCT einrichtung ... WHERE cc='CC01' ...
gefüllt. Das dritte <select> ist hier egal.
So, diese Ausgabe ersetzt die bisherige Seite im Browser. Die Standardwerte der ersten beiden <select> Elemente sind "". Wird das Formular wieder abgeschickt, macht der Browser wieder genau das gleiche: Das aktuelle Formular nehmen, die bennanten, gültigen Elemente als Name=Wert Paare an den Webserver senden. Und das ist nach den Voreinstellungen select_centren=&select_einrichtung=&select_arbeitsbereich=
Und PHP macht daraus
PHP-Code:
$_POST = array(
  
'select_centren' => '',
  
'select_einrichtung' => '',
  
'select_arbeitsbereich' => ''
); 
Und dann wird Dein Skript abgearbeitet - wieder von oben nach unten. Das erste <select> wird <option value="" selected="selected> und den Daten aus der DB gefüllt.
$_POST['select_centren'] ist gleich ''. Also wird das zweite <select> mit <option value="" selected="selected> und dem Ergebnis der Abfrage
Code:
SELECT DISTINCT einrichtung ... WHERE cc='' ...
gefüllt.
usw usw. Es ist immer das selbe Spiel. Browser stellt Seite dar, Browser sendet Anfrage samt aktuellen Daten an den Webserver, PHP macht was mit den Daten und sendet Antwort, Browser ersetzt Seite durch Antwort.
Was Du jetzt willst (es gibt andere Möglichkeiten, aber bleiben wir bei der hier) ist, dass bereits ausgewählte Daten im neuen Formular als Standardwert markiert werden. Wenn der Benutzer also nichts am neuen Formular ändert (einen anderen Wert auswählt) wird wieder der bisherige Wert als Name=Wert Paar an den Webserver geschickt.
Zitat:
Wenn also $_POST['select_centren'] gesetzt ist, musst Du schon in der ersten while-Schleife überprüfen, ob $rows["CC"]===$_POST['select_centren'] ist. Und wenn das der Fall ist, genau dieses <option> Element mit selected="selected" versehen. Genauso dann mit $rows["einrichtung"] in der nächsten while-Schleife.
David ist offline  
Alt 06.12.2008, 23:44  
Neuer Benutzer
 
Registriert seit: 26.06.2008
Beiträge: 16
derneue2008 befindet sich auf einem aufstrebenden Ast
Standard

hi David,

ich danke dir für die ausführliche erklärung, ich verstehe jetzt mehr php,

aber was ich will habe ich schlecht erklärt, deshalb hast du noch nicht verstanden, wenn ich jetzt CC1 auswählen, kann ich bei einrichtung nur noch einrichtungen auswählen die nur in CC1 drin sind, also das kann er jetzt, aber wenn ich jetzt weiter nachdem ich schon einrichtung ausgewählt habe, will ich arbeitsbereich auswählen, aber nur diese arbeitsbereich von der einrichtung die ich ausgewählt habe, jetzt momentan spuckt er alle arbeitsbereiche rein was ich nicht will, ich will dass er bei arbeitsbereich nur die anzeigt die zur einrichtung1 gehört und andere z.b. arbeitsbereiche von einrichtung2 nicht anzeigt.

jetzt hoffe ich dass du mehr verstehst was ich meine.

=o)
derneue2008 ist offline  
Alt 06.12.2008, 23:50  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Na dann zeig mir mal den jetzigen Code mit den oben besprochenen Änderungen.
Ohne die ...sorry, sehe ich einfach nicht, wie das klappen soll.
David ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:24 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum