Seite 1 von 1

PHP: Seite soll in bestimmten Bereich ..

Verfasst: 07.10.2008 13:59
von c4s
Ja ich weiß, meine Titel sind immer ein wenig verzwickt..;)
Also ich habe eine Index-Seite, die per Parameter (z.B.
index.php?site=2) in einen Div-Bereich die benötigte Seite lädt (mit
include) - also nix besonderes..
Die Seite ist nun ein Kontakt-Formular und sendet anschließend die
eingegebenen Daten wieder per Parameter an das per action="" definierte
Php-Check-Script.
Bis hierhin funktioniert alles prima.

Nun gibt mein Script entsprechende Meldungen von sich wie "E-Mail-
Adresse ist fehlerhaft" usw mit echo-Befehl. Dies führt aber dazu, dass
eine komplett neue Seite angezeigt wird mit eben nur dieser Meldung.

Was ich möchte ist aber, dass das vorherige Layout bleibt und die
Meldung nur in den Div-Bereich geladen wird (also dahin, wo davor das
Kontakt-Formular war)..

Ich verstehe es nicht :|

Verfasst: 07.10.2008 15:05
von STARGÅTE
wenn ich dich richtig verstanden habe, willst du die automatische PHP-Fehlerausgabe, ausschalten und eingeen machen ?

dann einfach ein @ vor die Function

zB:

Code: Alles auswählen

if ($File = @fopen('Test.txt', 'a+'))

Verfasst: 07.10.2008 17:33
von c4s
Nein. Die Fehlerausgabe war nur ein Beispiel..;)
Es geht mir darum, dass die Meldung bzw eine neue Seite, die von einer
includierten Seite geladen wurde, an die Stelle ausgegeben wird (in
dem Falle ein Div-Bereich), wo eben die dynamischen Seiten reingeladen
werden sollen.
Da (vermute ich zumindest) die aufrufende Seite schon eine geladene ist,
hat sie nicht das Recht layout-bestimmende Befehle (wie: "zeige Seite in
dem Bereich") auszuführen..


Ach schon wieder so kompliziert. Ich versuchs mal mit gleich ein
erklärendes Bild einzufügen.

Verfasst: 07.10.2008 17:52
von TomS

Code: Alles auswählen

<!-- html code hier für design -->
<DIV> 
<?php
    include($file);
?>
</DIV>
<!-- restlicher Code des Designs -->
Du musst also die komplette Seite nochmal neu laden und den Text halt dynamisch einfügen.

z.B so:

Code: Alles auswählen

<DIV>
<?php 
IF ($_POST['email']) {
    IF (Check_Data() = TRUE) {
        include($file);
    } ELSE {
        echo 'Daten fehlerhaft: E-Mail-Adresse existiert bereits.';
    }
} ELSE {
echo '
<form action="'.$_SERVER['PHP_SELF'].'">
<input type="text" name="email">
<input type="submit" name="submit" value="OK">
</form>';
}
?>
</DIV>

Verfasst: 07.10.2008 18:09
von c4s
@TomS
ich bin doch sozusagen in CheckEmail.php.
Wie kann ich von da aus die Seite neuladen?


anbei ein Bild:
Bild

Verfasst: 07.10.2008 19:03
von TomS
Dann muss in der checkmail.php auch das ganze Zeug mit dem Design geladen werden. Deswegen ist es imho Schmarrn, mehrere Dateien zu haben. Eine index.php, wo alle Funktionen included werden ( checkmail() etc...)

Gugg dir nochmal den Code von mir an.
Wenn man auf "Kontaktformular" klickt, wird mein Code in dem DIV ausgeführt. Das Formular sendet die Daten an sich selbst. Deswegen ist auch das Design vorhanden und keine weiße Seite.

Verfasst: 07.10.2008 20:55
von c4s
Ahh - danke.
Werde ich morgen mal probieren. Wie du sicherlich schon bemerkt hast,
kenne ich mich (noch) nicht all zu gut mit php aus.
Ich muss wohl dann erstmal noch rausfinden, wie ich Funktionen mache etc.

Ich melde mich dann, wenn ich es probiert habe..
mfg c4s



edit:
Ich habe mir das jetzt nochmal durch den Kopf gehen lassen. Prinzipiell
verstehe ich deinen Vorschlag aber irgendwie doch wieder nicht mit der
Variablenübergabe.

Momentan wähle ich ja die Contact-Seite folgendermaßen aus:
> meineseite.de/index.php?seite=contact
und wenn ich nun das beinhaltende Formular ausfühle werden die Daten
an index.php geschickt?! Also:
> meineseite.de/index.php?email=ab@c.de

Wie komme ich nun mit einer Fehler- bzw. Erfolgsmeldung zu der Seite
contact.php ?


Ich bitte um Entschuldigung, wenn ich zu doof dafür bin .. :oops: :wink:

Verfasst: 07.10.2008 21:49
von TomS

Code: Alles auswählen

<form action="meineseite.de/index.php" method="get">
<input type="hidden" name="seite" value="contact">
<input type="text" name="email">
</form>
Ich würde aber Post verwenden, anstatt Get.
Dann haste das URL-Problem nicht, und die E-Mail-Adresse taucht nicht in der Browserhistory auf (ist dann richtig fatal, wenn du Passwörter abfrägst)

Verfasst: 18.10.2008 00:00
von c4s
Oh, ganz vergessen..
Ich wollt nur nochmal schnell erklären, wie ich es jetzt gelöst habe:
Wie schon von dir vorgeschlagen habe ich die beiden Dateien "Formular"
bzw. "EmailSenden" in eine einzelne Datei "Kontakt" verpackt.
Die berühmte Meldung über Erfolg bzw Niederlage wird einfach, wenn
benötigt, per freigelassene Action-Anweisung (also Action="") an das Ende
des Formulares ausgegeben, sodass kein neues Fenster nötig ist.

So funktioniert alles bestens und du TomS hast mich wenigstens auf den
richtigen Weg gebracht - Danke nochmal ;)