php affenformular
Johann
- php
Hallo,
hab ne Frage zum "Affenformular". Ich hab das so verstanden:
meine PHP-Datei:
<html>
Bereich fuer meine Navigation (in html)
<?php
if(!isset $_POST['Feldname']) {
echo <<<LEERESFORMULAR
<form action="diese HTML-Datei" method="post">
<input type="text" name="Feldname">
HTML-Code...
</form>
LEERESFORMULAR;
}else {
if (Fehlerpruefung==true) {
echo <<<FEHLERFORMULAR
HTML-Code
FEHLERFORMULAR;
}else {
echo <<<DATENSPEICHERUNG
HTML-Code
DATENSPEICHERUNG;
}
?>
Bereich fuer footer (in html)
</html>
Wo liegt der/die Fehler. Bisher hat die Pruefung von !isset($_POST['Feldname']) nicht funktioniert. Kann es sein, dass dies nicht erkannt wird, wenn die php-Datei das erste mal aufgerufen wird?
Ist der Ansatz so richtig oder was kann ich anders/besser machen?
Dank und Gruß
Johann
Wo liegt der/die Fehler. Bisher hat die Pruefung von !isset($_POST['Feldname']) nicht funktioniert.
definiere "fehler" und "nicht funktioniert" etwas näher
Kann es sein, dass dies nicht erkannt wird, wenn die php-Datei das erste mal aufgerufen wird?
!isset($_POST['Feldname']) wird true liefern, wenn das formular geladen wird und das $_POST-array leer ist - sollte ansich funktionieren
ggf solltest du ein paar debugausgaben einbauen ;)
Ist der Ansatz so richtig oder was kann ich anders/besser machen?
prinzipiell ist der ansatz in ordnung
Hi,
definiere "fehler" und "nicht funktioniert" etwas näher
Es erscheint nur eine weiße Seite. Hab etwas rumprobiert und denke der Fehler muesste an folgendem Code liegen, denn wenn ich den aus der Datei entferne wird restliche Inhalt wieder angezeigt.
<?php
if(!isset($_POST['name'])){
echo <<<LEERESFORMULAR
<div class="div_wrappers" id="div_anzeige" onMouseOver="wait_menue()">
<span id="span_1"><b>Pflichtangaben:</b></span>
<form action="add.php" method="post">
<table id="table_add_lunch">
<tr>
<td onClick="infoClicked(1)" onMouseOut="itemLostFocus()" width=170>Name:</td><td style="padding-left:5px"><input name="name" type="text" size="19" maxlength="30" value="<?php if (isset($_POST['name'])) echo htmlspecialchars($_POST['name']); ?>"></td>
<tr>
</table>
<div class="formularButtons">
<div style="position: relative; float: left; ">
<input class="button_start" type="reset" value="zurücksetzen">
<input class="button_start" type="submit" value="speichern">
</div>
</div>
</form>
</div>
LEERESFORMULAR;
}
?>
Hoffe der Codeausschnitt wird einigermaßen formatiert dargestellt und ist nicht zu lange.
Hi,
definiere "fehler" und "nicht funktioniert" etwas näher
Es erscheint nur eine weiße Seite.
Du siehst zu selten ins Error-Log des Servers.
echo <<<LEERESFORMULAR
[...]
<td onClick="infoClicked(1)" onMouseOut="itemLostFocus()" width=170>Name:</td><td style="padding-left:5px"><input name="name" type="text" size="19" maxlength="30" value="<?php if (isset($_POST['name'])) echo htmlspecialchars($_POST['name']); ?>"></td>
Dir ist aber schon klar, was die "<<<delimiter"-Schreibweise bedeutet?
Hoffe der Codeausschnitt wird einigermaßen formatiert dargestellt und ist nicht zu lange.
Ja, das passte schon (wenngleich Du mit der Anzahl der Leerzeichen etwas konsistenter umgehen könntest). Weitere Verbesserungsvorschläge findest Du in der Forums-Hilfe.
Cheatah
Hi,
if(!isset($_POST['name'])){
echo <<<LEERESFORMULAR
mal was grundsätzliches: mit dieser Heredoc-Syntax verquirrlst Du aufs heftigste Php-Code und html-output. Imho wird das schnell unübersichtlich, Du solltest sowas sauber trennen: im Php-Teil validierst Du nur die User-Eingaben, später gibst Du abhängig vom Ergebnis das html aus.
Beispiel, schematisch:
<?php
$error = "";
function validate (&$error) {
if (!isset($_POST['name'])) {
$error .= "Name vergessen!";
}
}
validate ($error);
?>
<?php if ($error): ?>
<p><?=$error?></p>
<?php else:?>
<div>
alles ist gut.
</div>
<?php endif?>
Gruesse, Joachim
Hi,
vielen Dank fuer eure Hilfe. Werd jetzt erstmal den Hinweisen nachgehen.
Das Problem lag wohl an der Kombination von Heredoc und dem darin enthaltenen <?php?>.
Du siehst zu selten ins Error-Log des Servers.
Davon wusste ich bislang noch nichts - werd da gleich noch reinschaun.
Johann
Du siehst zu selten ins Error-Log des Servers.
Davon wusste ich bislang noch nichts - werd da gleich noch reinschaun.
du kannst die ausgabe von fehlermeldungen innerhalb des an den browser übermittelten quelltext auch einschalten, das ist vor allem während der entwicklungsphase ratsam, das errorlog sollte parallel dazu deaktiviert werden damit es nicht unötig zumüllt - auf einem produktivsystem dann umgekehrt
Lieber Johann,
<div class="div_wrappers" id="div_anzeige" onMouseOver="wait_menue()">
<span id="span_1"><b>Pflichtangaben:</b></span>
<form action="add.php" method="post">
<table id="table_add_lunch">
<tr>
<td onClick="infoClicked(1)"
bei Deinem Quältext wird mir ja ganz anders...! Ich hatte hier einmal einen Vorschlag für ein Affenformular gemacht. Vielleicht hilft Dir dieser Vorschlag?
Liebe Grüße,
Felix Riesterer.
Hi,
if(!isset $_POST['Feldname']) {
[...]
Wo liegt der/die Fehler. Bisher hat die Pruefung von !isset($_POST['Feldname'])
eine solche Prüfung existiert in Deinem Code nicht.
nicht funktioniert.
Es gibt nach wie vor nur eine Sache, die nicht funktioniert, und das ist die Formulierung "funktioniert nicht". Wie lautet die Fehlerbeschreibung?
Ist der Ansatz so richtig oder was kann ich anders/besser machen?
Man kann den Code ohne eine Duplizierung des Formular-Codes verfassen.
Cheatah
Hallöchen,
mir fallen 2 Syntaxfehler auf:
if(!isset $_POST['Feldname']) {
Hier fehlen zwei Klammern (die Variable, die mit isset geprüft werden soll, muss in Klammern stehen):
if(!isset ($_POST['Feldname'])) {
}else {
if (Fehlerpruefung==true) {
Entweder diese zwei Zeilen zu einem elseif zusammenfassen...
} elseif (Fehlerpruefung==true) {
echo <<<FEHLERFORMULAR
HTML-Code
FEHLERFORMULAR;}else {
echo <<<DATENSPEICHERUNG
HTML-Code
DATENSPEICHERUNG;
}
...oder es fehlt hier die schließende Klammer des else vom ersten if:
}
?>
Bereich fuer footer (in html)
</html>
MfG
vaudi