Mailinglisten-Archive |
Hallo Marita, Am Dienstag, 22. Mai 2007 schrieb Marita Betz: > Lutz Zetzsche schrieb: > >Ein Zugriff auf die Datenbank ist nur nötig, wenn Du z.B. die > > Checkboxen automatisch ausgeben bzw. die übergebenen Werte mit > > Werten aus der Datenbank abgleichen möchtest und wenn Du mit den > > Werten in der Datenbank suchen möchtest. > > Für die erste Ausgabe muss ich, so wie ich das sehe, noch nicht auf > die Datenbank zugreifen, weil da muss ich ja nur ausgeben welche > Kategorien, z. B. Hotel, Pension der Besucher gewählt hat. wenn Du die Kategorien für die Checkboxen nicht aus der Datenbank holst, mußt jeder, der Daten in die Datenbank einpflegt, immer daran denken, daß u.U. die Kategorienliste im Skript angepasst werden muß. Holst Du die Kategorien jedoch aus der Datenbank, muß später nichts mehr am Skript anpasst werden. Dies ist insbesondere wichtig, wenn der Redakteur weder Zugriff auf das Skript hat, noch die nötigen Programmierkenntnisse besitzt! Es geht hier um die saubere Trennung von Inhalten und Programmierung, genauso wie ja auch Inhalte und Darstellung sauber getrennt sein sollten. > Aber dann soll ja noch die Liste mit den Ergebnissen gezeigt werden > mit Anschrift, Straße, Plz, Ort, Tel.-Nr. und da muss ich ja dann > doch mit der Datenbank abgleichen, welches Objekt die Kategorie drin > hat. > > Und genau diese Syntax von diesem Abgleich ist mir noch nicht ganz > klar > > So funktioniert das doch bestimmt noch nicht oder? > > > Select from tbl_haupt where tbl_haupt[ID] == tbloe_objektart[hauptID] > AND $Hotel['Hotel Riegsee'] > > ??? Die Syntax hat Ronny ja schon korrigiert, wie es aber tatsächlich aufgrund der Datenbankstruktur aussehen müßte, muß ich mir später mal in Ruhe ansehen. :-) > Das Problem ist ja, dass die Objektart nicht in der tbl_haupt drin > ist, sondern in der tbloe_objektart. > > Die Verbindung ist bei der tbl_haupt die ID und in der > tbloe_objektart die hauptID. > > Was ist in diesem Fall eigentlich besser, einen Join zu setzen oder > es mit where zu machen. Ich muss ja die dritte Tabelle > tbloe_kontaktmoeglichkeiten auch noch mit einbinden, weil da ja die > Tel.-Nr. usw. drin sind. Auch hier ist wieder die tbl_haupt[Id] und > die tbloe_kontaktmoeglichkeiten[hauptID] die Verbindung. Ein Join über mehr als zwei Tabellen geht ganz schön auf die Performanz. Mehrere Selects abzusetzen, um bestimmte Daten nachzuholen, kann oft sinnvoller sein. > Nur weiss ich nicht, wie ich dieses oder ein anderes PEAR-Paket > aufrufen kann. > > Ich habe jetzt gerade mal in meinem PHP-Buch nachgesehen, eigentlich > müsste ich das über require_once ("Cache-Lite.php"); einbinden können > oder? Wenn include_path richtig gesetzt ist, sollte es mit folgendem Befehl gehen: require_once('Cache/Lite.php'); Mehr dazu findest Du in der Doku des Pakets, u.a. hier: htp://pear.php.net/manual/en/package.caching.cache-lite.intro.php > Ich habe gerade was gefunden, dass es noch mehr so Cache-Programme > gibt, z. B. > > APC (Alternative PHP Cache, Freeware) > ZPS (Zend Performance Suite, kommerziell) > afterBurner (Freeware) > > Kennt jemand die zugehörigen Webseiten? http://www.google.de/ ;-) Allerdings sind das andere Caches als PEAR::Cache oder PEAR::Cache_Lite. Während Du die PEAR-Pakete in Dein PHP-Skript einbindest und dann nach eigenen Vorgaben Funktionsaufrufe etc. cachst, setzen die drei von Dir genannten Caches an ganz anderer Stelle an. Sie werden in PHP reinkompiliert und beschleunigen die Ausführung Deiner Skripte z.B. dadurch, daß die Skripte vorkompiliert werden. Das ist etwas anderes, als die PEAR-Pakete. > > Ganz einfach: In der WHERE-Bedingung gibst Du nur die Felder und > > Werte an, mit denen gefiltert werden soll bzw. die übergeben worden > > (und erlaubt) sind. > > Beispiel? Na, z.B. das SELECT, welches Ronny Dir korrigiert hat. :-) Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive