PHP [allgemein] Seite ins Design inkludieren

rancor

Ensign
Dabei seit
Juli 2005
Beiträge
150
Hi, ich arbeite noch nicht lange mit php und suche nun nach Lösungen für meine größeren Probleme.

Auf Bild Nr.1 ist zu erkennen wie meine Seite aufgebaut ist (index.php)
Bild Nr.1

Die Reihenfolge in der Datei:
<div id='branding'> //Logo
<div id='menu_oben'>
<div id='kasten_links'>
<div id='content'>
<div id='site_info'> //Footer

Das Gästebuch (gb.php) wird z.B. mit "index.php?seite=gb" aufgerufen.

Auf Bild Nr.2 ist zu sehen wie die Seite aussehen soll, (jedoch Footer von mir abgeschnitten:
(Seite wird geladen ohne Fehler)
Bild Nr.2

Jetzt ist es natürlich so, dass ich Benutzereingaben abfangen muss, wie z.B.:
Benutzer klickt auf Button "Gästebuch", damit wird Gästebuch im "Contentbereich" inkludiert und angezeigt. Benutzer schreibt ins GB vergisst aber seinen Namen einzutragen, trifft dies ein wird eine Fehlermeldung ausgegeben und mit "exit();" abgebrochen. Der Abbruch findet dann eben in <div id='content'> statt.

Problem dabei ist, dass dann die index Datei nicht weiter geladen wird und das Design schaut dann so unfertig aus wie auf Bild Nr.3
Bild Nr.3

Ich weis im Moment echt nicht wie ich erreichen kann, dass das komplette Design (index.php) geladen wird aber dennoch nach der Fehlermeldung nicht weiter den Code ausführt.

Danke
Und vllt gibt's ja auch noch eine besser Methode wie man die Content-dateien ins Design inkludieren kann.
 

ManOki

Lt. Commander
Dabei seit
Juni 2008
Beiträge
1.306
vllt solltest du einfach die code teile mit "if (prüfung) then code_ausführen else fehlermeldung" teilen und nicht das gesamte system beenden ;)

EDIT: sowas nennt man schachteln bzw. separieren. kleinere codefragemente sind besser wiederverwendbar und übersichtlicher als ein großes. du hast ja schon angefangen, die ganzen divs einzeln aufzulisten. so könntest du bspw. auch neue funktionen zur prüfung einbauen und automatische fehlermeldungen integrieren. klingt anfangs noch vollkommen übertrieben, aber sobald man das 10x gemacht hat, erkennt man den sinn und die vereinfachung.
 
Zuletzt bearbeitet:

rancor

Ensign
Ersteller dieses Themas
Dabei seit
Juli 2005
Beiträge
150
Danke
Ich bin mir nicht ganz sicher ob ich folgen kann, ich denke ich benutze bereits Verschachtelungen. Beispiel aus meiner gb.php:

...
Code:
//Falls Name oder Email oder Eintrag nicht ausgefüllt:  Ausgabe sowie Fehlermeldung und Abbruch
if($name == "" || $email == ""  || $eintrag == "")
{
	$ausgabe = "Alle Felder müssen ausgefüllt werden."; 
	include 'helfer/ausgabe.html.php';
	exit();
}
...
Code:
$result = mysqli_query($link, $sql);

if (!$result)
{
	$fehler = 'Fehler beim Schreiben der Gästebucheinträge: ' . mysqli_error($link);
	include 'helfer/fehler.html.php';
	exit();
}
...
Code:
if (!mysqli_query($link, $sql))
{
	$fehler = 'Fehler beim Lesen der Gästebucheinträge: ' . mysqli_error($link);
	include 'helfer/fehler.html.php';
	exit();
}

In der Index.php habe ich eigentlich keine Abfragen außer die in Bild Nr.1
Sowie das "obere_menu".

€dit: Ich könnte natürlich die "exit();"'s weglassen aber denn wirft der mir unter Umständen mehrere Fehlermeldungen aus.
 
Zuletzt bearbeitet: (€dit)

ManOki

Lt. Commander
Dabei seit
Juni 2008
Beiträge
1.306
du könntest bspw "include 'helfer/fehler.html.php';" als methode fehlerAnzeigen separieren, die dann nur beim ersten aufruf die codezeile ausführt.

das sind zwar nur kleine tips, aber ich vermute einfach mal, dass dein programm auch nur dementsprechend ist.

falls du dich weiter interessiert, empfehle ich dir nach größeren frameworks zu suchen, die meist bereits eine gute struktur besitzen. allerdings solltest du beachten: mehr aufwand -> mehr nutzen
ich kenne zwar php nicht besonders, aber mit * on rails habe ich bereits gute erfahrungen gemacht, in deinem fall also php on rails.
 

rancor

Ensign
Ersteller dieses Themas
Dabei seit
Juli 2005
Beiträge
150
oh man wie peinlich, ich benutze zwar in meinem Projekt if's und else's jedoch hatte ich die nie verschachtelt. Jetzt da ich es korrigiert und die "exits()" rausgekickt habe funtzt es natürlich so wie's soll.

Manchmal braucht man einfach nur einen Denkanstoß.

Dank dir
 
Top