PHP: Seite soll in bestimmten Bereich ..

Fragen zu allen anderen Programmiersprachen.
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

PHP: Seite soll in bestimmten Bereich ..

Beitrag 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 :|
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag 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+'))
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Beitrag 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.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag 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>
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Beitrag von c4s »

@TomS
ich bin doch sozusagen in CheckEmail.php.
Wie kann ich von da aus die Seite neuladen?


anbei ein Bild:
Bild
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag 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.
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Beitrag 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:
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag 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)
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Beitrag 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 ;)
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Antworten