Antworten auf deine Fragen:
Neues Thema erstellen

php - mit echo-Befehl auf gleicher Seite bleiben

sunny_76m

Hat es drauf

Hallo Zusammen,
bin gerade beim Entwurf einer Homepage, auf die unter Anderem auch ein Kontaktformular soll, welches ich mit php gelöst habe.

Der User gibt Daten in ein Formular ein und bestimmte Felder müssen dabei ausgefüllt sein, ansonsten kommt eine Warnmeldung, verbunden mit einem "historycallback", wo wieder zu dem Eingabeformular zurückgelinkt wird.

Derzeit ist es so, dass diese Warnmeldung (dass nicht alle Felder ausgefüllt sind) auf einer neuen Seite geöffnet wird, dieses möchte ich ändern, so dass das Ziel dieser Meldung ein Div-Tag ist, nämlich der, in dem auch das Formlar ausgefüllt wird.

Hier mal ein Auszug aus dem Code, der zu der Warnmeldung verweist:
Code:
<?php

$Empfaenger = "xyz@website.de";

if($_REQUEST['Send'])
{
   if(empty($_REQUEST['Name']) || empty($_REQUEST['Vorname']) ||  empty($_REQUEST['Email']))
   {
      echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle Felder aus!";
   }
   else
.
.
.
Das ganze steht in einer separaten Auswertungsdatei.

Bei html gibt es ja die Möglichkeit >>> target="_parent" <<< anzugeben... doch bei php??


Wäre schön, wenn mir hier jemand weiterhelfen könnte... mit php steh ich nämlich noch total am Anfang.

Danke schon mal...
 
Zuletzt bearbeitet:

r3nt5ch3r

~ Allround pG ~

AW: php - mit echo-Befehl auf gleicher Seite bleiben

...Ziel dieser (Fehler-)Meldung ein Div-Tag[...], nämlich der, in dem auch das Formlar ausgefüllt wird.
So hab ma dein Problem aus dem "Blabla" extrahiert^^

Verstehen tue ichs aber immer noch net. Gehen wir mal davon aus, dass du den ganzen HTML-Code per PHP ausgeben lässt, dann ist es doch kein Problem eine Meldung in einem bestimmten Div-Layer ausgeben zu lassen!?

Bei html gibt es ja die Möglichkeit >>> target="_parent" <<< anzugeben... doch bei php??
Redest du jetzt von Frames?!
 

sunny_76m

Hat es drauf

AW: php - mit echo-Befehl auf gleicher Seite bleiben

Redest du jetzt von Frames?!

Nein, gemeint sind DIV-Tags, wie sie entstehen wenn eine Seite im Photoshop gesliced wurde.

In so einem Div-Tag steht das Formular drinnen, das vom User ausgefüllt werden soll.

Und wenn der User ein Pflichtfeld nicht ausgefüllt hat, dann kommt die beschriebene Warnmeldung - und selbige habe ich derzeit eben auf einer neuen Seite, und nicht im selben Div-Tag wie das Formular ist.

Hoffe das erklärt mein Problem etwas besser, weiß nicht wie ich es sonst ausdrücken soll.
 
M

MaedeG

Guest

AW: php - mit echo-Befehl auf gleicher Seite bleiben

Eine Möglichkeit wäre, den <Form>-Tag so zu gestalten, dass die Action auf die aktive Datei verweist.

z.B.

In der Datei -> formular.php steht folgendes:
HTML:
<!--Some other Code-->
<form action="formular.php" method="post">
<input type="text" name="vorname" /><?php echo $error_vorname; ?>
...
</form>
<!--Some other Code-->
Dann werden die echo's auf der selben Seite wiedergegeben, auf der sich das Formular befindet.

mfg: Maede
 
Zuletzt bearbeitet von einem Moderator:

r3nt5ch3r

~ Allround pG ~

AW: php - mit echo-Befehl auf gleicher Seite bleiben

Nein, gemeint sind DIV-Tags, wie sie entstehen wenn eine Seite im Photoshop gesliced wurde.

Das wär schön^^

In so einem Div-Tag steht das Formular drinnen, das vom User ausgefüllt werden soll.

Und wenn der User ein Pflichtfeld nicht ausgefüllt hat, dann kommt die beschriebene Warnmeldung - und selbige habe ich derzeit eben auf einer neuen Seite, und nicht im selben Div-Tag wie das Formular ist.

Hoffe das erklärt mein Problem etwas besser, weiß nicht wie ich es sonst ausdrücken soll.

Ja schon viel besser. Also du brauchst eine (1x) Datei die das Formular anzeigt und auswertet (sofern es abgesandt wurde).
Der obere Block der Datei sollte die Auswertung beinhalten und die eventuellen Fehler erzeugen. Der untere Teil dient dann nur der Anzeige des Formulars und der Fehler.
 

sunny_76m

Hat es drauf

AW: php - mit echo-Befehl auf gleicher Seite bleiben

Eine Möglichkeit wäre, den <Form>-Tag so zu gestalten, dass die Action auf die aktive Datei verweist.

z.B.

In der Datei -> formular.php steht folgendes:
HTML:
<!--Some other Code-->
<form action="formular.php" method="post">
<input type="text" name="vorname" /><?php echo $error_vorname; ?>
...
</form>
<!--Some other Code-->
Dann werden die echo's auf der selben Seite wiedergegeben, auf der sich das Formular befindet.

mfg: Maede

Das werde ich ausprobieren... bin grad nicht am Rechner mit den Daten, aber nachher wieder...

Wie ist das... das $error_vorname... brauche ich da was spezielles sonst noch dazu? Also z.B. in der Auswertungs-php???


Also du brauchst eine (1x) Datei die das Formular anzeigt und auswertet (sofern es abgesandt wurde).
Der obere Block der Datei sollte die Auswertung beinhalten und die eventuellen Fehler erzeugen. Der untere Teil dient dann nur der Anzeige des Formulars und der Fehler.

Ja, ich habe 1 Datei in der unter anderem Die Daten für das Formular drinnen sind. (Also das was den Bereich <form></form> angeht... und dann separat noch eine Auswertungsdatei. Und in der letztgenannten steht derzeit der im ersten Post geschriebene php-Code. Der Fehlercode erscheint momentan, wenn ich mit nem unfertig ausgefüllten Formular auf "Absenden" gehe.

Der obere Block der Datei sollte die Auswertung beinhalten und die eventuellen Fehler erzeugen. Der untere Teil dient dann nur der Anzeige des Formulars und der Fehler.

Den Teil deiner Antwort hab ich jetzt ehrlich gesagt nicht so recht verstanden. Könntest du mir das bitte noch n bisschen genauer erklären?
 

r3nt5ch3r

~ Allround pG ~

AW: php - mit echo-Befehl auf gleicher Seite bleiben

Naja im oberen Teil der Datei, prüfst du erstma ob das Formular abgeschickt wurde, ob alle Daten vollständig sind (falls nicht Fehler erzeugen) - im unteren Teil dann nur die reine Ausgabe des Formulars und der Fehler.
(Trennung von Logik & Layout)
 

sunny_76m

Hat es drauf

AW: php - mit echo-Befehl auf gleicher Seite bleiben

@MaedeG
ich hab das mit dem <?php echo $error_vorname; ?>


versucht - vermutlich brauche ich da aber zusätzlich noch was anderes... entweder in der Datei, die das Formular enthält, oder aber in der Auswertungsdatei...

Wäre nett wenn du mir das etwas genauer erklären könntest!
 
M

MaedeG

Guest

AW: php - mit echo-Befehl auf gleicher Seite bleiben

Wie ist das... das $error_vorname... brauche ich da was spezielles sonst noch dazu? Also z.B. in der Auswertungs-php???

Genau! Das Formularscript könnte z.B. so aussehen:
HTML:
<?php
if (isset($_POST['senden'])) {
  if (empty($_POST['vorname'])) {
    $error_vorname = "Das Feld Vorname ist leer, bitte geben Sie etwas an!";
  } else {
    <!--Hier kommt dann der Absendecode rein-->
  }
}
?>
<form action="formular.php" method="post">
<input type="text" name="vorname" /><?php echo $error_vorname; ?>
<input type="submit" name="senden" />
</form>
Im PhP-Bereich wird nach dem drücken des Submitbuttons das Feld "Vorname" überprüft, ob es leer ist. Ist diese Feld leer wird eine "$error_vorname" erstellt und unten im "<Form>-Tag" ausgegeben,
ansonsten wird das Formular abgesendet.

mfg: Maede
 

sunny_76m

Hat es drauf

AW: php - mit echo-Befehl auf gleicher Seite bleiben

jetzt kriege ich nur noch ne weiße Seite als Fehlermeldung beim abschicken des - unvollständig - ausgefüllten Formulars.

Also noch mal im einzelnen:

ich hab eine Datei mit dem Formular... <form>....</form>
Da kommt hinter den Variablennamen das echo $error...

und dann gibt es noch die Auswertungsdatei, da setze ich das

$error_vorname = "Das Feld Vorname ist leer, bitte geben Sie etwas an!";

richtig?

Was mache ich da falsch, bzw. woran hakt das???

Übrigens wäre mir auch schon geholfen, wenn ich es schaffen würde dass die Fehlermeldung in nem neuen Fenster oder Tab angezeigt werden würde... ich will halt einfach nicht, dass mir das das Design der Seite zerschießt.
 
M

MaedeG

Guest

AW: php - mit echo-Befehl auf gleicher Seite bleiben

Du musst die PhP-Abfrage in der selben Datei ausführen, wo auch der HTML-Code also "<Form>-Tag" angegeben wurde und in der <form action=""> musst du auf diese Datei verweisen.

Kurz: Du schreibst alles in die Datei formular.php und im <form action=""> schreibst du den Namen dieser Datei, also formular.php rein.

Das sollte so eigendlich einwandfrei funktionieren!

mfg: Maede
 
Zuletzt bearbeitet von einem Moderator:

sunny_76m

Hat es drauf

AW: php - mit echo-Befehl auf gleicher Seite bleiben

Ich muss das erst mal durchdenken noch mal...

SO funktioniert es bisher leider nicht - ich komme aber nicht drauf, wo der Haken liegt bei mir. Werd mich da morgen noch mal dran setzen...

Danke aber schon mal an MaedeG und r3nt5ch3r - melde mich da morgen noch mal dazu, dann mit klarerem Kopf hoffe ich.
 

LongDonGold

The-one-Darksite-of-Life

AW: php - mit echo-Befehl auf gleicher Seite bleiben

Dein Code
Code:
<?php

$Empfaenger = "xyz@website.de";

if($_REQUEST['Send'])
{
   if(empty($_REQUEST['Name']) || empty($_REQUEST['Vorname']) ||  empty($_REQUEST['Email']))
   {
      echo"Bitte gehen Sie <a href=\":history.back();\">zurück</a> und füllen Sie alle Felder aus!";
   }
   else
Geänderter Code:

Code:
<?php

$Empfaenger = "xyz@website.de";

if($_REQUEST['Send'])
{
   if(empty($_REQUEST['Name']) || empty($_REQUEST['Vorname']) ||  empty($_REQUEST['Email']))
}
      echo 'Bitte gehen Sie <a href=\":history.back();\">zurück</a> und füllen Sie alle Felder aus!';
   }
}
Nur ein Beispiel ;)
 
Zuletzt bearbeitet:
M

MaedeG

Guest

AW: php - mit echo-Befehl auf gleicher Seite bleiben

So ich hab hier mal schnell was zusammengebastelt, hoffe du kommst jetzt draus. Alles was im unteren Quellcode steht ist in einer einzigen Datei, welche "formular.php" heisst!

PHP:
<?php
if (isset($_POST['senden'])) {
  if (empty($_POST['name'])) {
    $error_name = "Bitte geben Sie Ihren Namen an, danke!\n";
  }
  if (empty($_POST['vorname'])) {
    $error_vorname = "Bitte geben Sie Ihren Vornamen an, danke!\n";
  }
  if (empty($_POST['email'])) {
    $error_email = "Bitte geben Sie Ihren eMail an, danke!\n";
  } else {
    $mailbody = $_POST['name'] . $_POST['vorname'] . $_POST['email'];
    $mailto = "deine eMail";
    $betreff = "einen Betreff angeben";
    if (@mail($mailto, $betreff, $mailbody, "From: " . $_POST['email'])) {
     echo "Die Nachricht wurde erfolgreich weitergeleitet!";
    } else {
     echo "Leider gab es einen Sendefehler!<br><a href=\"javascript:history.back();\">zurück</a>";
    }
  }
}
?>
<form action="formular.php" method="post">
<div id="form">
  <div><input type="text" name="name" /><?php echo $error_name; ?></div>
  <div><input type="text" name="vorname" /><?php echo $error_vorname; ?></div>
  <div><input type="text" name="email" /><?php echo $error_email; ?></div>
  <div><input type="submit" name="senden" value="senden" /></div>
</div>
</form>
mfg: Maede
 
Zuletzt bearbeitet von einem Moderator:

sunny_76m

Hat es drauf

AW: php - mit echo-Befehl auf gleicher Seite bleiben

@LongDonGold
Das einzige, was mir als Änderung bei deinem Code auffällt, ist die geschlossene geschweifte Klammer am Ende.

Das ist mir klar, dass die Klammer am Ende auch wieder geschlossen werden muss, NUR geht der Code bei mir noch weiter, eben mit else ... etc.
Oder habe ich da noch eine weitere Änderung übersehen??

@MaedeG
Danke schön für die Mühen!!
Ich habe deine Code ausprobiert und das funktioniert soweit... solange man das nicht in einem Div-Tag packt. Dort passiert dann nämlich das Selbe, was mir auch mit meinem bisherigen Code passiert:
Sobald ich auf "Senden" klicke - und dabei das Formular NICHT KOMPLETT ausgefüllt habe, komme ich auf eine neue Seite, die in deinem Fall NUR NOCH den php-Teil enthält und eben an den entsprechenden Feldern die Meldung dazu, dass diese nicht ausgefüllt sind.
In meinem Fall war es dann so, dass eben eine neue Seite aufging mit Hintergrund weiß und links oben der Meldung man solle doch alle Felder ausfüllen.

Zugegeben... DEINE VERSION gefällt mir besser, dass einem Die Felder sozusagen angezeigt werden, welche noch auszufüllen sind... allerdings, ich bräuchte das in meine Seite eingepackt, eben in diesem Div-Tag, in dem auch das Formulat drinnen steht.


@r3nt5ch3r
Entschuldige bitte, ich komme einfach nicht mit bei der Erklärung von dir.
Oder hast du auch gemeint, ich solle das Formular und die Auswertung des Formulars in EINE DATEI machen, so wie MaedeG das jetzt auch aufgezeigt hat?? DAS erscheint mir mittlerer Weile allerdings wirklich besser.


Also, kann mir vielleicht noch jemand einen Tipp geben, wie ich mein Problem in den Griff bekommen könnte?
 

sunny_76m

Hat es drauf

AW: php - mit echo-Befehl auf gleicher Seite bleiben

Das ist doch bei meine Formular der Fall? Oder verstehe ich was falsch?^^

mfg: Maede

Oh... ich glaube DAS lag jetzt an mir.... ich hab anscheinend was anderes in dieser Datei noch vergessen... hbs gerade noch mal neu versucht und jetzt klappt es... Na dann steht ja nix im Weg... werd mich gleich mal an die Arbeit machen und das in meine Seite einarbeiten.

Vielen herzlichen Dank dafür!!
 
M

MaedeG

Guest

AW: php - mit echo-Befehl auf gleicher Seite bleiben

Kein Problem, immer gerne^^

mfg: Maede
 

agielen

Aktives Mitglied

AW: php - mit echo-Befehl auf gleicher Seite bleiben

@MaedeG

Besten Dank!! Das war endlich nach langer Suche im Netz die richtige Lösung, die ich gefunden habe. Das hat mir sehr geholfen. Hätte ich doch gleich mal hier auf PSD geschaut. *haha*, manchmal liegt das Gute so nah ;)
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.611
Beiträge
1.538.341
Mitglieder
67.524
Neuestes Mitglied
BSKGA
Oben