Bei aufrufender php-Datei DIV einblenden
ingobar
- php
Hallo zusammen,
kann mir jemand eine hilfreichen Tipp geben, wie man folgendes löst:
Ich schicke von einer php-Datei per POST die Daten an eine zweite php-Datei, die die empfangenen Daten in eine DB einpflegt. Jetzt würde ich gerne dem User ein Feedback geben, dass das geklappt. Wie erreicht man das?
Ich habe bis jetzt das Formular und die empfangene php-Datei. In der Formular-Seite habe ich ein DIV, das ich dann bei erfolgreicher Abarbeitung einblenden würde. Allerdings habe ich nun zwei Probleme:
1. Die aufrufende Formularseite verschwindet. Wie kann ich das verhindern?
2. Ich weiß nicht, wie ich dann die DIV einblenden kann.
Irgendwie habe ich ja das Gefühl, dass ich irgendwie mit meinem Ansatz auf dem Holzweg bin. Wenn ja, dann wäre ich um einen Link oder einem hilfreichen Lösungshinweis sehr dankbar.
*wunder*
wohlmöglich verstehe ich dein problem nicht genau oder der weg ist dir zu einfach.
nach erfolgreicher DB-eintragung rbauchst du ja nur eine check-variable setzen und diese dann später abfragen. sofern diese gesetzt ist, gibst du eben deine mitteilung aus.
quasi nach dem schema:
$query = "mysql_query("INSERT ...");
IF($query) {
$ok = true;
} else {
$ok = false;
}
und dann zur ausgabe einfach:
if($ok) {
echo "Alles klar, Daten wurden erfolgreich eingetragen!";
}
war's das, was du meinst?
paeda
if($ok) {
echo "Alles klar, Daten wurden erfolgreich eingetragen!";
}
Nicht genau. Ich versuchs nochmal:
Ich habe die Datei user.php die unter anderem folgendes enthält:
<form method="post" action="user_save_data.php">
<table cellspacing="0" cellpadding="0" border="0" id="lehrer" align="center">
<tr><th colspan="2">Ihre Daten</th></tr>
<tr><td>Name: </td><td><input type="text" size="30" name="l_name" value="Bartling"></td></tr>
<tr><td>Vorname:</td><td><input type="text" size="30" name="l_vorname" value="Ingo"></td></tr>
<tr><th colspan="2" id="footer"><input type="submit" value="Speichern"></th></tr>
</table>
</form>
<div id="feedback" style="visibility:visible">
<h4>Rückmeldung</h4>
</p><textarea id="feedback_data" cols="25" rows="5">Ihre Daten wurden gespeichert.</textarea></p>
<input type="button" value="Okay">
<div>
Diese ruft dann die user_save_data.php auf, die die Daten in die DB schreibt.
Wenn das erfolgreich war, soll sie dies wieder an die user.php melden, worauf das entsprechende angezeigt wird.
Wenn ich dich jetzt richtig verstehe, benötige ich keine zwei Dateien, sondern mache in einer. Richtig? Ich schicke die Daten per POST an user.php?
if($ok) {
echo "Alles klar, Daten wurden erfolgreich eingetragen!";
}Nicht genau. Ich versuchs nochmal:
Ich habe die Datei user.php die unter anderem folgendes enthält:
(...)
Diese ruft dann die user_save_data.php auf, die die Daten in die DB schreibt.Wenn das erfolgreich war, soll sie dies wieder an die user.php melden, worauf das entsprechende angezeigt wird.
Dann mach' das was paeda vorschlug...
aus der user.php löscht du den "feedback"-Teil:
[code="html"]
<div id="feedback" style="visibility:visible">
<h4>Rückmeldung</h4>
</p><textarea id="feedback_data" cols="25" rows="5">Ihre Daten wurden gespeichert.</textarea></p>
<input type="button" value="Okay">
<div>
[/code]
ans Ender der user_save_data.php schreibst du sowas wie
[code=php]
if($ok) {
include('user.php');
echo ('<div id="feedback" style="visibility:visible">'."\n");
echo ('<h4>Rückmeldung</h4>'."\n");
echo ('</p><textarea id="feedback_data" cols="25" rows="5">Ihre Daten wurden gespeichert.</textarea></p>'."\n");
echo ('<input type="button" value="Okay">'."\n");
echo ('<div>'."\n");
} else {
include('user.php');
echo ('<div id="feedback" style="visibility:visible">'."\n");
echo ('<h4>Rückmeldung</h4>'."\n");
echo ('</p><textarea id="feedback_data" cols="25" rows="5">Das war wohl nichts, das Speichern ist fehlgeschlagen.</textarea></p>'."\n");
echo ('<input type="button" value="Okay">'."\n");
echo ('<div>'."\n");
}
[/code]
Je nach Aufbau der beiden Dateien kann das allerdings zu fehlerhaftem HTML führen (z.B. Code nach dem </html>)
Wenn ich dich jetzt richtig verstehe, benötige ich keine zwei Dateien, sondern mache in einer. Richtig? Ich schicke die Daten per POST an user.php?
Das geht natürlich auch, an der entsprechenden Stelle prüfst du erst, ob Daten gesendet wurden und anschließend speicherst du sie und prüfst ob diese erfolgreich gespeichert sind.
echo $begrüßung;
Ich schicke von einer php-Datei per POST die Daten an eine zweite php-Datei, die die empfangenen Daten in eine DB einpflegt. Jetzt würde ich gerne dem User ein Feedback geben, dass das geklappt. Wie erreicht man das?
Das Spiel zwischen Browser und Server heißt Request-Response. Der Browser schickt einen Request zum Server, der Server schickt daraufhin einen Response (die zur angeforderten Ressource gehörenden Daten) zurück.
Ich habe bis jetzt das Formular und die empfangene php-Datei. In der Formular-Seite habe ich ein DIV, das ich dann bei erfolgreicher Abarbeitung einblenden würde.
Allerdings habe ich nun zwei Probleme:
- Die aufrufende Formularseite verschwindet. Wie kann ich das verhindern?
Manchmal sendet der Browser in dem Request ein paar Formulardaten mit. Das ändert aber nichts am grundlegenden Spiel. Der Server antwortet auch auf einen solchen Reuest mit einem Response. Und die Browser erwarten das auch so. Auf einen Request kommt ein Response, der anstelle des vorhergehenden Response angezeigt wird.
- Ich weiß nicht, wie ich dann die DIV einblenden kann.
Und dann gibt es noch AJAX, das macht dieses Spiel im Hintergrund. Damit ist es möglich, nur Teile einer angezeigten Seite durch neue Inhalte auszutauschen.
echo "$verabschiedung $name";