ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
839
839
EMPFEHLEN
-
Hallo,
ich habe ein Formular, welches einem Nutzer eine Frage stellen lässt. Falls bei der Formularüberprüfung ein Fehler bemerkt wird, wird eine Variante des gleichen Formulars gezeigt, bei dem per POST die zuvor eingegebenen Werte eingefügt wurden. Jetzt kann der Benutzer seine Eingabe korrigieren und erneut abschicken.
Dies funktioniert bei den Input-Feldern, aber nicht bei textarea. Dort wird nichts gesendet.
Das erste Formular (funktioniert)
Wenn unter ?action=neu die Fehlerüberprüfung einen Fehler erkennt wird folgende Funktion ausgelöst:PHP-Code:<form action="index.php" method="post">
<h2>'.$txt['13'].'</h2>
<div>
<label for="name">'.$txt['08'].'</label>
<input type="text" name="name" id="name">
<label for="email">'.$txt['09'].'</label>
<input type="text" name="email" id="email">
<label for="frage">'.$txt['10'].'</label>
<textarea name="frage" rows="5" cols="50" id="frage"></textarea>
<span class="text">'.$txt['15'].'</span>
<input type="hidden" name="action" value="neu" class="n">
<input type="submit" name="submit" value="'.$txt['11'].'" class="button1">
<input type="reset" name="submit" value="'.$txt['12'].'" class="button2">
<div class="ende"></div>
</div>
</form>
Mein Problem ist jetzt, dass bei diesem Formular !isset( $_POST['frage']) true ist. Aber nur, wenn der Text bei der Fehlerprüfung nach absenden des ersten Formulars nicht richtig ist und verbessert werden muss!PHP-Code:function inputerror($error,$nr) { #$nr gibt an, an welcher Formularstelle ein Fehler ist, $error ist der Fehlertext
switch ($nr) {
case 1:
$css1='style="background-color: ff0; color: ff0000;"';
break;
case 2:
$css2='style="background-color: ff0; color: ff0000;';
break;
case 3:
$css3='style="background-color: ff0; color: ff0000;';
break;
}
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
</head>
<body>
<form action="index.php" method="post">
<h2 style="color: ff0000;">'.$error.'</h2>
<div>
<label for="name">'.$txt['08'].'</label>
<input '.$css1.' type="text" name="name" id="name" value="'.input($_POST['name']).'">
<label for="email">'.$txt['09'].'</label>
<input '.$css2.' type="text" name="email" id="email" value="'.input($_POST['email']).'">
<label for="frage">'.$txt['10'].'</label>
<textarea '.$css3.' name="frage" rows="5" cols="50" id="frage">'.$_POST['frage'].'</textarea>
<span class="text">'.$txt['15'].'</span>
<input type="hidden" name="action" value="neu" class="n">
<input type="submit" name="submit" value="'.$txt['11'].'" class="button1">
<input type="reset" name="submit" value="'.$txt['12'].'" class="button2">
<div class="ende"></div>
</div>
</form>
</body>
</html>';
}
Im Forum bin ich leider über die Suche auf keine passende Lösung gestoßen.
Ich hoffe es weiß jemand Rat oder hat einen hilfreichen Link.
Gruß, acquireGebildet ist, wer weiß, wo er findet, was er nicht weiß. - Georg Simmel
-
01.05.08 14:44 #2kalle123456 Tutorials.de Gastzugang
Hallo,
sorry verstehe dein Script nicht ganz, poste es doch mal komplett. Warum schreibst du alles doppelt und nicht einfach so z.B.
PHP-Code:<input '.$css1.' type="text" name="name" id="name" value="'.(isset($_POST['name'])) ? $_POST['name'] : ''.'">
-
Das Hauptscript
Die Funktion, in der das Formular nochmal ist (daher doppelt) aus der functions.php:PHP-Code:<?php
ob_start();
require("sqlconfig.php");
require("txt.php");
require("var.php");
include("functions.php");
db_conn($dbName);
// Header auch in function inputerror
$header='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>'.$title.'</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" type=text/css rel=stylesheet>
</head>
<body>';
if ($a=='fehler') {
}
elseif ($a=='neu') {
if(get_magic_quotes_gpc()) { // Backslashes entfernen, falls PHP Automatik an
array_stripslashes($_GET);
array_stripslashes($_POST);
array_stripslashes($_COOKIE);
}
$datum = time();
$browser = getenv("HTTP_USER_AGENT");
$ip = getenv("REMOTE_ADDR");
if(!isset($_POST['name'], $_POST['email'], $_POST['frage'])) { die($txt['e06'].$txt['16']); }
if(trim($_POST['name']) == "") {
die(inputerror($txt['e02'],1)); }
$_POST['email'] = str_replace(" ", "", $_POST['email']);
if (trim($_POST['email']) != "") {
if (checkEmail(trim($_POST['email']))) {}
else { die(inputerror($txt['e04'],2)); }}
$_POST['email'] = input($_POST['email']);
if(trim($_POST['frage']) == "") {
die(inputerror($txt['e03'],3)); }
else {
if(strlen($_POST['frage']) < 10) {
die(inputerror($txt['e03'],3)); }
}
$_POST['name'] = input($_POST['name']);
$browser = input($browser);
$ip = input($ip);
$frage = wordwrap($_POST['frage'],$einstellungen['max_word'],' ',1);
$frage = input($frage);
$sql = "INSERT INTO $table VALUES('', '".mysql_real_escape_string($_POST['name'])."', '".mysql_real_escape_string($_POST['email'])."', '".mysql_real_escape_string($frage)."', '', '$datum', '$browser', '$ip')"; //zuvor: addslashes() statt mysql_real_escape_string
mysql_query($sql) OR die(MysqlError());
echo $header.'
<h2 class="antw">'.$txt['14'].'</h2>';
} /* neu ENDE */
else {
echo $header.'
<a name="neu"></a>
<form action="index.php" method="post">
<h2>'.$txt['13'].'</h2>
<div>
<label for="name">'.$txt['08'].'</label>
<input type="text" name="name" id="name">
<label for="email">'.$txt['09'].'</label>
<input type="text" name="email" id="email">
<label for="frage">'.$txt['10'].'</label>
<textarea name="frage" rows="5" cols="50" id="frage"></textarea>
<span class="text">'.$txt['15'].'</span>
<input type="hidden" name="a" value="neueFrage" class="n">
<input type="submit" name="submit" value="'.$txt['11'].'" class="button1">
<input type="reset" name="submit" value="'.$txt['12'].'" class="button2">
<div class="ende"></div>
</div>
</form>';
}
// HTML-Seitenende - auch in function inputerror!
echo '
</body>
</html>';
db_close();
?>
PHP-Code:function inputerror($error,$nr) { #$nr gibt an, an welcher Formularstelle ein Fehler ist, $error ist der Fehlertext
switch ($nr) {
case 1:
$css1='style="background-color: ff0; color: ff0000;"';
break;
case 2:
$css2='style="background-color: ff0; color: ff0000;';
break;
case 3:
$css3='style="background-color: ff0; color: ff0000;';
break;
}
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
</head>
<body>
<form action="index.php" method="post">
<h2 style="color: ff0000;">'.$error.'</h2>
<div>
<label for="name">'.$txt['08'].'</label>
<input '.$css1.' type="text" name="name" id="name" value="'.input($_POST['name']).'">
<label for="email">'.$txt['09'].'</label>
<input '.$css2.' type="text" name="email" id="email" value="'.input($_POST['email']).'">
<label for="frage">'.$txt['10'].'</label>
<textarea '.$css3.' name="frage" rows="5" cols="50" id="frage">'.$_POST['frage'].'</textarea>
<span class="text">'.$txt['15'].'</span>
<input type="hidden" name="action" value="neu" class="n">
<input type="submit" name="submit" value="'.$txt['11'].'" class="button1">
<input type="reset" name="submit" value="'.$txt['12'].'" class="button2">
<div class="ende"></div>
</div>
</form>
</body>
</html>';
}
Gebildet ist, wer weiß, wo er findet, was er nicht weiß. - Georg Simmel
Ähnliche Themen
-
POST per Header senden
Von einfach nur crack im Forum PHPAntworten: 38Letzter Beitrag: 03.06.09, 22:29 -
Button zum senden funktioniert nicht
Von counteract im Forum HTML & XHTMLAntworten: 4Letzter Beitrag: 05.08.07, 10:59 -
Outlook 2000 - Senden/Empfangen funktioniert nicht mehr
Von ziriander im Forum Microsoft WindowsAntworten: 2Letzter Beitrag: 18.07.07, 00:19 -
Senden (GMX-Mail, Onlineformulare, Bildupload) funktioniert nicht. Hilfe!!
Von sebastian73 im Forum Internet, DSL & FlatrateAntworten: 0Letzter Beitrag: 30.05.06, 19:36 -
UDP - senden/empfangen funktioniert nicht
Von matt im Forum C/C++Antworten: 8Letzter Beitrag: 23.10.03, 13:14





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren