Eingaben in Textfelder halten
justus
- php
Hi!
Habe eine Formular erstellt was in eine Datenbank eingelesen wird.
Ich möchte nun nach dem Klick auf den submit-button, dass alle Einträge die ich gemacht habe, in dem jeweiligen Textfeld stehen bleiben.
Der jetzige Zustand ist, dass ich nach dem Klick auf Submit alle Textboxen geleert habe, da (so denke ich mir das) das Formular neu geladen wird.
Hoffe ihr könnt mir helfen.
MFG
Hallo,
mir fallen dazu 2 Möglichkeiten ein:
1. du überträgst die Daten via Ajax
2. du rufst das Formular nach dem absendenerneut auf und füllst es einfach wieder mit den Daten die du in die datenbank geschrieben hast
Gruß
Ole
Moin!
mir fallen dazu 2 Möglichkeiten ein:
- du überträgst die Daten via Ajax
- du rufst das Formular nach dem absendenerneut auf und füllst es einfach wieder mit den Daten die du in die datenbank geschrieben hast
1. ist ne nette Idee, nachdem man 2. realisiert hat.
Mahlzeit justus,
Ich möchte nun nach dem Klick auf den submit-button, dass alle Einträge die ich gemacht habe, in dem jeweiligen Textfeld stehen bleiben.
Dann sorge dafür, dass die Eingabeelemente mit entsprechenden Werten vorbelegt sind, wenn das Formular nach dem Abschicken wieder aufgerufen wird (Stichwort "Affenformular").
Der jetzige Zustand ist, dass ich nach dem Klick auf Submit alle Textboxen geleert habe, da (so denke ich mir das) das Formular neu geladen wird.
Das kommt darauf an, was Du in Deinem <form>-Element als Ziel für das Formular angegeben hast: wenn dort das aktuelle Skript oder nichts drin steht, wird das Formular in der Tat "an sich selbst" abgeschickt (Stichwort wie oben "Affenformular"). Du kannst in dem Fall die Werte doch einfach nehmen und die Eingabeelemente entsprechend vorbelegen.
MfG,
EKKi
Hallo.
»» Ich möchte nun nach dem Klick auf den submit-button, dass alle Einträge die ich gemacht habe, in dem jeweiligen Textfeld stehen bleiben.
Dann sorge dafür, dass die Eingabeelemente mit entsprechenden Werten vorbelegt sind, wenn das Formular nach dem Abschicken wieder aufgerufen wird (Stichwort "Affenformular").
»» Der jetzige Zustand ist, dass ich nach dem Klick auf Submit alle Textboxen geleert habe, da (so denke ich mir das) das Formular neu geladen wird.
Das kommt darauf an, was Du in Deinem <form>-Element als Ziel für das Formular angegeben hast: wenn dort das aktuelle Skript oder nichts drin steht, wird das Formular in der Tat "an sich selbst" abgeschickt (Stichwort wie oben "Affenformular"). Du kannst in dem Fall die Werte doch einfach nehmen und die Eingabeelemente entsprechend vorbelegen.
Habe damit ein kleines Problem wie justus vielleicht auch. Wenn ich die Eingabeelemente mit Werten vorbelege, was ich folgendermaßen mache:
echo "<td>"."\n<textarea name='comment_box".$k."' id='inp".$k."' disabled='disabled' cols='50' rows='2' value="<?php echo $_POST['comment_box'.$k]; ?>"></textarea>"."</td>"."</tr>";
dann gibt man mir folgendes aus:
Parse error: syntax error, unexpected '?'
Die Zeile ist in php eingebettet sodass ich(denk ich) statt
value="<?php echo $_POST['comment_box'.$k]; ?>"
auch value=" echo $_POST['comment_box'.$k];"
schreiben könnte, jedoch sagt er mir dann unexpected echo. lass ich dieses weg kommt unexpected variable.
Was mach ich falsch?
MfG peacock
Mahlzeit peacock,
dann gibt man mir folgendes aus:
Parse error: syntax error, unexpected '?'
Natürlich. Das würde ich auch, wenn ich ein PHP-Interpreter wäre. Schauen wir doch mal, was genau Du da überhaupt machst:
echo
Aha. Du willst also etwas ausgeben.
"<td>"
Aha. Also einen festen String ...
.
... verkettet mit ...
"\n<textarea name='comment_box"
... einem weiteren festen String. Dass das sinnlos ist, ist offensichtlich. Wieso schreibst Du es nicht gleich als "<td>\n<textarea name='comment_box"? Aber weiter im Text:
.$k
... verkettet mit einer Variable. Du berücksichtigst hier in keinster Weise, dass Du Dich bei der Ausgabe im Kontext HTML befindest. Sobald der Inhalt der Variablen HTML-spezifische Zeichen wie <, >, " oder ' enthält, könnte Dein HTML-Code invalide werden - hast Du das mal überprüft? Du solltest Dich dringend über htmlspecialchars() informieren. Aber weiter im Text:
."' id='inp".$k."' disabled='disabled' cols='50' rows='2' value="
... verkettet mit einem weiteren festen String, einer Variable (s.o.) und noch einem String.
<?php
Huch? Was soll ich armer PHP-Interpreter denn damit anfangen? Keine Ahnung, was das soll. Schmeiß' ich doch einfach mal 'nen Fehler, dass ich damit nichts anfangen kann (siehe ganz oben!).
echo
Huch? Noch ein echo-Befehl? Aber der vorherige war doch noch gar nicht beendet?
$_POST['comment_box'.$k]; ?>"></textarea>"."</td>"."</tr>";
usw.
Die Zeile ist in php eingebettet
Was bedeutet Deiner Meinung nach "in PHP eingebettet"? Du weißt schon, wie syntaktisch korrekte PHP-Anweisungen auszusehen haben?
sodass ich(denk ich) statt
value="<?php echo $_POST['comment_box'.$k]; ?>"
auch value=" echo $_POST['comment_box'.$k];"
schreiben könnte,
Nein, könntest Du nicht. Informiere Dich zu den Grundlagen der Syntax von PHP.
jedoch sagt er mir dann unexpected echo.
Natürlich. Schließlich hat das echo dort ja auch nichts zu suchen, da das vorherige ja noch nicht beendet ist.
lass ich dieses weg kommt unexpected variable.
Natürlich. Informiere Dich über die korrekte Syntax von echo und die richtige Verwendung von Strings.
Was mach ich falsch?
Vieles. Fang vorne an und überspringe nicht so viele Kapitel beim Lernen. Verwende keinen Code, den Du nicht verstehst.
MfG,
EKKi
hi,
Habe damit ein kleines Problem wie justus vielleicht auch. Wenn ich die Eingabeelemente mit Werten vorbelege, was ich folgendermaßen mache:
Ich hab mir vor einiger Zeit ein kleines helferlein für dieses Problem geschrieben, vielleicht hilft es dir ja:
// Affenformalität
function aForm($val,$default='') { return isset($_POST[$val]) ? $_POST[$val] : $default ; }
Ins HTML schreibst du dann einfach:
<input type="text" name="beispielname" value="
<?php echo htmlspecialchars(aForm('beispielname','Defaulttext')); ?>
" />
Der erste Parameter beim Funktionsaufruf bekommt den „namen“ des Input/Textarea-Feldes, damit PHP weiss, wo er den Wert einzufügen hat.
Wenn du keinen Defaulttext haben möchtest, löschst du einfach den 2ten Parameter beim Funktionsaufruf.
<?php echo htmlspecialchars(aForm('beispielname')); ?>
mfg
Ich hab mir vor einiger Zeit ein kleines helferlein für dieses Problem geschrieben, vielleicht hilft es dir ja:
Hi.
ich hab dieses "kleine Helferlein" mal ausprobiert, doch leider hat es nicht richtig funktioniert. Ich kann ja mal posten, wie ich es umgesetzt habe.
function aForm($result,$default='') { return isset($_POST[$result]) ? $_POST[$result] : $default ; };
...
<td><textarea name=<?php echo "'comment_box".$k."' id='inp".$k."'"; ?>
value='"<?php echo htmlspecialchars(aForm("comment_box".$k)); ?>"' disabled='disabled' cols='50' rows='2'></textarea></td></tr><?php
...
$result = $_POST['comment_box'.$k];
...
?>
Ich habe auch folgendes ausprobiert:
function aForm('comment_box'.$k,$default='') { return isset($_POST['comment_box'.$k]) ? $_POST['comment_box'.$k] : $default ; };
...
<td><textarea name=<?php echo "'comment_box".$k."' id='inp".$k."'"; ?>
value='"<?php echo htmlspecialchars(aForm("comment_box".$k)); ?>"' disabled='disabled' cols='50' rows='2'></textarea></td></tr><?php
...
?>
Aber leider war auch das ohne Erfolg...
Ich hoffe mir kann jemand helfen!!
Mfg
Mahlzeit justus,
doch leider hat es nicht richtig funktioniert.
"Funktioniert nicht" funktioniert nicht. Was ist passiert? Welche Fehlermeldungen gab es? Wie sieht der HTML-Quelltext aus? Was ist mit Debug-Ausgaben? Warum gehst Du davon aus, dass Deine Leser funktionierende Glaskugeln besitzen?
<td><textarea name=<?php echo "'comment_box".$k."' id='inp".$k."'"; ?>
Räume Dein HTML/PHP-Codegewusel auf ... da blickt man ja erst auf den dritten Blick durch!
value='"<?php echo htmlspecialchars(aForm("comment_box".$k)); ?>"'
Was sollen hier die doppelten Anführungszeichen ('" und "')? Hast Du Dir den HTML-Quelltext, der im Browser ankommt, mal angeschaut?
Ich habe auch folgendes ausprobiert:
Du solltest Dir dringend die Grundlagen zur Funktionsdeklaration in PHP zu Gemüte führen.
function aForm('comment_box'.$k,$default='') { return isset($_POST['comment_box'.$k]) ? $_POST['comment_box'.$k] : $default ; };
Das KANN so gar nicht klappen. Versuche zu verstehen, wie die Parameterübergabe funktioniert. Mache Dir die Geltungsbereiche von Variablen klar.
Ich hoffe mir kann jemand helfen!!
Du selbst. Indem Du Deinen Lesern hilfst, Dein Problem zu verstehen, so dass sie Dir hilfreiche Lösungstipps geben können ...
MfG,
EKKi
"Funktioniert nicht" funktioniert nicht. Was ist passiert? Welche Fehlermeldungen gab es? Wie sieht der HTML-Quelltext aus? Was ist mit Debug-Ausgaben?
Ich würde dir gerne eine Beschreibung des Fehlers schreiben, aber es gab KEINE Fehlermeldung! Wenn ich es so ablaufen lasse, dann reagiert das Script, wie vorher, als ich die Funktion noch nicht drin hatte.
Wie sieht der HTML-Quelltext aus?
Ich habe mir auch den Quelltext mal angeschaut. Nach dem Klicken auf einen Submit-Button, wird der Text den ich in die textarea eingeben habe, in den value der textarea eingelesen, allerdings zeigt er mir dennoch ein leeres Textfeld an.
MFG
Mahlzeit justus,
Ich würde dir gerne eine Beschreibung des Fehlers schreiben, aber es gab KEINE Fehlermeldung!
Dann gab es keinen Fehler. Wie sehen error_reporting() und display_errors aus?
Wenn ich es so ablaufen lasse, dann reagiert das Script, wie vorher, als ich die Funktion noch nicht drin hatte.
Aber irgendwas MUSS doch passieren, wenn die Funktion aufgerufen wird ...
»» Wie sieht der HTML-Quelltext aus?
Ich habe mir auch den Quelltext mal angeschaut.
Aha. Und was ist Dir aufgefallen? Warum gehst Du nicht auf meinen Hinweis mit der merkwürdigen Anführungszeichenkonstruktion ein?
Nach dem Klicken auf einen Submit-Button, wird der Text den ich in die textarea eingeben habe, in den value der textarea eingelesen,
Was meinst Du mit "wird eingelesen"? Wird das Formular abgeschickt (das tut ein Submit-Button normalerweise)? Ist anschließend der eingegebene Wert vorhanden? Wird er im HTML-Quelltext wieder angezeigt?
Fragen über Fragen ...
allerdings zeigt er mir dennoch ein leeres Textfeld an.
Um welches Textfeld geht es jetzt? Das, was Du oben erwähnt hast, das "eingelesen" wird? Wann ist das jetzt auf einmal leer?
Du solltest Deine Problembeschreibungen nachvollziehbarer gestalten, so dass auch Leser ohne funktionierende Glaskugeln und ohne freie Sicht auf Deinen Monitor verstehen können, was Du meinst. Alternativ könntest Du auch ein Online-Beispiel bereitstellen, wo man Dein Problem nachstellen kann.
MfG,
EKKi
hi,
zwar hat ja EKKi es auf den Punkt gebracht, aber hier noch ein Tipp am Rande:
function aForm($result,$default='') { return isset($_POST[$result]) ? $_POST[$result] : $default ; };
Bevor du anfängst, Funktionen, die du nicht kennst, umzuschreiben, probiere sie erstmal in der Originalfassung, um zu verstehen, wie diese funktionieren.
Erstelle eine neue PHP-Ressource, füge den von mir geposteten Code rein, baue ein Form um das input und einen Submit-Button und spiele damit ein wenig herum.
mfg