PHP eleganteste Lösung für

Metzlor

Lt. Commander
Registriert
Juni 2006
Beiträge
1.101
Hallo,

ich habe eine html Seite mit einem Menükopf ähnlich eines Lokalen Programmes.
Wenn ich jetzt oben einen Menüknopf drücke, soll sich die untere Seite ändern, da SQL abfragen ausgeführt werden, brauche ich PHP.
Was unten aus Sql angezeigt wird, ist sehr wenig, es wäre möglich beim Programmstart alles aus PHP in Javascript zu übergeben.

Mit freundlichen Grüßen
Metzlor
 
Ich mutmaße mal: Willst du wissen, ob man PHP-Ausdrücke in Javascript-Code verwenden kann? Ja, das geht prinzipiell. Oder willst du wissen, wie du den Inhalt ohne Neuladen ändern kannst? Dann brauchst du AJAX.
 
Oh sry,

wie kann ich dies am elegantesten lösen, das ich nicht immer die gesamte Seite neu laden muß?
 
Wie davediehose schon schrieb - das geht mit AJAX (+PHP & MySQL). Wieviel Erfahrung mit JS hast du denn?
 
Da wirst du wohl AJAX brauchen, falls du es nicht doch noch anders achen möchtest. Musst dich mal einlesen, das ist schon ne Baustelle für sich und nicht ganz trivial, aber machbar. Leider ist es technisch die einzige Möglichkeit, bei PHP einen ganzen Reload der Seite zu umgehen.

Weniger elegant, aber auch machbar wäre es, anfangs einmal alle SQL-Daten auszulesen und komplett in JS-Arrays zu schreiben. Das ginge schon, ich würde es aber nur empfehlen, falls du wirklich nur kleine Datenmengen hast. Du baust ja dann quasi einmal am Anfang eine "monolithische" JS-Laufzeit und versteckst bzw. zeigst immer nur die Inhalte, die grade ausgewählt sind.
Ist nicht grad das, wozu JS gedacht ist, aber was ist das schon :) evtl gibt es da sogar Frameworks, die dich unterstützen können.
 
Zuletzt bearbeitet:
Wenn du noch nie mit AJAX gearbeitet und auch keine Lust hast, es nun intensiv zu lernen, solltest du auf ein Framework zurückgreifen. Mit jQuery ist es nicht einfach, aber sehr viel einfacher, AJAX-Anwendungen zu basteln.
 
Öhm ich weiß jetzt nich ob ich was übersehen hab, aber ich finde die einfachste Lösung wäre:
2 Frames, oben das Menü und unten die Hauptseite
Bei den Links im Menü ist es soweit ich weiß möglich als target den Framenamen des unteren Teils einzutragen. Dann öffnet sich im unteren Frame der Link (kannst ja unten immer die gleiche Seite aufrufen (also wie nen reload) und nur per $_SESSION die Variablen an die untere Seite übergeben.
 
te one schrieb:
Öhm ich weiß jetzt nich ob ich was übersehen hab, aber ich finde die einfachste Lösung wäre:
2 Frames, oben das Menü und unten die Hauptseite
Bei den Links im Menü ist es soweit ich weiß möglich als target den Framenamen des unteren Teils einzutragen. Dann öffnet sich im unteren Frame der Link (kannst ja unten immer die gleiche Seite aufrufen (also wie nen reload) und nur per $_SESSION die Variablen an die untere Seite übergeben.

Frames? Bitte nicht...
 
Frage: wozu?

Wenn es dir nur darum geht, dass du bspw. dein oberes Menü nicht auf jeder einzelnen Unterseite einfügen musst, wäre dir evtl. auch mit include(); geholfen.
 
@te one
Frames waren in den 90ern mal hip :) Abgesehen von diesem eher oberflächlichen Argument haben Frames aber auch einige technische Nachteile.

Zum Beispiel ist es mit Frames schwieriger, Unterseiten zu bookmarken und diese anzuspringen (Navigation kann z.B. fehlen). Auch ist der Umgang mit Formularen hinsichtlich eines dynamischen Seitenaufbaus (z.B. mit PHP) komplizierter, alles was über ein paar dynamische GET-Argumente hinausgeht wird schwierig. Von daher machen Frames, wenn überhaupt, nur bei statischen Seiten irgendeinen Sinn.
 
alles was über ein paar dynamische GET-Argumente hinausgeht wird schwierig.

Normale POST Geschichten sind auch mit Frames nicht "schwierig", geschweige denn die Übertragung über Sessions.

Auch wenn Frames absolut nicht mehr üblich sind - ohne viel Erfahrung mit JS & Co ist die Frames-Lösung für Metzlor vielleicht nicht die schönste Variante, aber die absolut einfachste. ;)
 
Ein bisschen Mehraufwand zahlt sich da schon aus. Man will doch auch ne halbwegs schöne Lösung, und man kann dabei noch was lernen.
 
Naja ich denke das mit den Frames wäre schon mal nen anfang der funktionieren würde.

Natürlich geht das ganze auch schöner. Aber da ich selbst nur Frames hinbekomme kann ich dazu nix sagen^^ :D
 
Danke für die Antworten. Die Seite ist eine Nachbildung eines Desktop Programmes, oben ist das Menü, dort kann ich dann Tages, Wochen, Monats und Jahresberichte auswählen, unten soll dann je nachdem was ich oben ausgewählt habe, eine Art Kalender erscheinen, wo man einen Tag, bzw. 1 Woche, einen Monat oder ein Jahr auswählen kann, und auf der Rechten Seite noch Berichte. Wenn ich ein Datum ausgewählt habe und dann einen Bericht auswähle, wird per Crystal reports export ein PDF erzeugt, und eine neue Seite wird geöffnet, wo ein Link zu dem PDF ist.
Das mit dem Crystal reports ist schon fertig, muß nur noch die Übergabe des Datums einbauen.
Was mir jetzt bei der Hauptseite fehlt, ist das sich die verschiedenen Fenster mit dem Datum anzeige. Die Berichte können sich auch ändern, weil die Crystal reports berichte, tlw. nach Stunden, tlw. nach Datum gruppiert sind, das habe ich bisher mit php gelöst.

json mit prototyp und scriptacolous
Das sagt mir im moment nix.

Mir ist gerade eine Idee gekommen, das Menü könnte ich oben per Include einfügen. und dann für jeden Button eine komplette Seite laden. Die Seite hat sehr wenig Besucher, und das Menü ist sehr klein (kleiner 10 kb). So könnte ich alles mit PHP lösen, was auch am besten wäre, denn wenn javascript deaktiviert ist, würde die Seite sonst nicht funktionieren. Gerade weil es weniger Besucher sind, soll die Seite daher auch bei jedem funktionieren, ich glaube das wäre die beste und einfachste Möglichkeit.
 
Zuletzt bearbeitet:
Zurück
Oben