Sven Rautenberg: Inhalt via XMLHttpRequest tauschen -> Datenbankzugriff PHP

Beitrag lesen

Moin!

ich schreibe derzeit an einer Bildergalerie. Beim Laden der landing page (bestehend aus einem Login-Formular) werden, sofern Javascript eingeschaltet ist, hidden input fields mit JS relevanten Daten gefüllt und im nachfolgenden Skript (PHP), nach erfolgreichem Login, in eine Session geschrieben. D.h. ich weiß jederzeit, ob Javascript eingeschaltet ist und kann dementsprechend verschiedene Versionen meiner Seiten bereitstellen.

Kannst du machen, solltest du aber lassen. Wenn du mit Javascript automatisch und grundsätzlich an deine Bedienelemente Aktionen ranhängst, und die Bedienelemente so gestaltest, dass sie auch ohne Javascript eine sinnvolle Aktion ausführen, brauchst du keine zwei Seitenversionen zu beachten.

Die per Javascript gestarteten Aktionen verhindern dann einfach, dass die Standard-Aktion, die sich aus dem HTML ergibt, ausgeführt wird, um nicht doppelte Arbeit zu tun.

Nun zu meinem Problem:

Beim Laden des Userbereichs wird ein Datenbankobjekt in PHP erstellt.

Dieses Objekt lebt nicht lange - nur bis zum Skriptende dieses einen Seiten-Requests. Du musst das Objekt also sowieso bei reiner HTML-Navigation für jeden Request neu erstellen.

Wenn ich nun den Inhalt dynamisch per Javascript tausche, steht dieses Objekt im angeforderten PHP-Skript natürlich nicht mehr zur Verfügung, da das zu ladende PHP-Skript in den bereits verarbeiteten Userbereich geladen wird.

Hier ist dein Denkfehler: Dein Request (egal ob Ajax oder sonstwie) erfordert DB-Zugriff, also mach dir das Objekt neu und greife auf die DB zu.

Somit habe ich keinen Zugriff auf meine Datenbank.

Deine eigene Schuld. :)

Derzeit verwende ich folgende Lösung: Die einzelnen Inhalte meiner Seite (PHP-Skripte, die Datenbankzugriff benötigen) werden geparsed und mittels ob_start(), ob_get_contents() in den Cache geschrieben. Aus dem Cache wird dann eine HTML-Seite erstellt und auf dem Server abgelegt. Diese kann ich per XMLHttpRequest laden.

Üble Bastel-Lösung! :(

- Sven Rautenberg