PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : formular überprüfung



jochenjjj
16-11-2003, 14:14
hi zusammen
mein problem ist folgendes:
Der Submit Button muss 2 Aufgaben übernehmen.
1.das formular wird an sich selber referenziert und dann mit if bedingungen werden die felder abfragt mit empty.
2.Wenn alle Felder ausgefüllt wurden soll er auf die nächste seite springen(action=seite.php)

wie mache ich das oder habt ihr eine andere idee wie man formulare einfach für den user überprüfen lasst.

mfg jochen

Jana
17-11-2003, 07:19
Diese Frage hatten wir schon oft.
Formular:


<form action="anmeldung_check.html" method="post">

<table width="100%" align="top" border="0" cellpadding="0" cellspacing="0">

<tr>
<td class="tbl_anmeldung_capt">
* Anrede
</td>
<td class="tpl_anmeldung_form">
<input type="radio" name="form[Anrede]" value="Herr" checked> Herr&nbsp;&nbsp;
<input type="radio" name="form[Anrede]" value="Frau"> Frau
</td>
</tr>
.........

Abfrage:


<?php


$fields = array(
Email => 'E-Mail',

Strasse_p => 'Strasse (privat)',

PLZ_p => 'PLZ (privat)',

Ort_p => 'Ort (privat)',

Telefon_p => 'Telefon (privat)',

Funktion => 'Sonstige Angaben'
);



$fillfields = array('Anrede', 'Vorname', 'Nachname', 'Email', 'Strasse', 'PLZ', 'Ort');


$failedfields = array();
foreach ($fillfields as $fillfield) {
if (!$form[$fillfield]) {
if ($fields[$fillfield]) {
array_push($failedfields, $fields[$fillfield]);
} else {
array_push($failedfields, $fillfield);
}
}
}

?>


<div id="lay100" class="lay100">

<?php
if (count($failedfields) > 0) {
print "Folgende Angaben fehlen:<br><br>\n";
foreach ($failedfields as $f) {
print "* " . $f . "<br>\n";
}
print "<br>Bitte gehen Sie zurück und füllen Sie das Formular vollständig aus.<br>\n";
}
else {
print "<form action=\"anmeldung_send.html\" method=\"post\">\n";

print "<table width=\"100%\" align=\"top\" border=\"0\">\n";

foreach ($form as $field => $value) {
print " <tr>\n";
print " <td class=\"lay100a\" width=\"35%\">\n";
if ($fields[$field]) {
print " <b>" . $fields[$field] . "</b>\n";
}
else {
print " <b>" . $field . "</b>\n";
}
print " </td>\n";
print " <td class=\"lay100b\">\n";
print " " . $value . "\n";
print " <input type=\"hidden\" name=\"form[" . $field . "]\" value=\"" . $value . "\">\n";
print " </td>\n";
print " </tr>\n";
}
print "</table><br>\n";
print "<input type=\"submit\" value=\"Anmeldung versenden\">\n";
print "</form>\n";
}
?>

<br><br><br><br>
</div>


</body>
</html>

saryy
27-04-2009, 13:23
Hey..
hab kurz ne frage auch zu Formular überprüfen. Und zwar hat unser Lehrer folgende Lösung zu der Aufgabenstellung, die PLZ solle nur ziffern enthalten, gegeben:

if(document.Formular.plz.value.charAt(0)<"0"||document.Formular.plz.value.charAt(0)>"9")
{merker=1};
if(document.Formular.plz.value.charAt(1)<"0"||document.Formular.plz.value.charAt(1)>"9")
{merker=1};
if(document.Formular.plz.value.charAt(2)<"0"||document.Formular.plz.value.charAt(2)>"9")
{merker=1};
if(document.Formular.plz.value.charAt(3)<"0"||document.Formular.plz.value.charAt(3)>"9")
{merker=1};
if(document.Formular.plz.value.charAt(4)<"0"||document.Formular.plz.value.charAt(4)>"9")
{merker=1};
if(document.Formular.plz.value.charAt(5)<"0"||document.Formular.plz.value.charAt(5)>"9")
{merker=1};

if(merker==1)
{alert("Falsche PLZ");
return false
}

also 1.) Was stellt der marker da, und wieso muss um diesen eine geschwungene Klammer?
2.) Wieso kommt bei merker GLEICH immer nur ein gleichheitszeichen und nicht 2 wie bei dem letzten?

Viel Dank schon mal im vorraus :)

MFG sarina

ContainerDriver
27-04-2009, 16:34
Hallo,

1. schau z.B. mal hier: http://www.php-einfach.de/php-tutorial/php-if-anweisung.php.
2. steht auch in dem Link von 1. (kurz: = entspricht einer Zuweisung, == einem Vergleich).

Gruß, Florian

jan61
27-04-2009, 18:35
Moin,

kurz noch was zu der vom Lehrer vorgeschlagenen Lösung: Sowas ist höchst ineffektiv und fehlerträchtig (siehe z. B. "docu ment" nach dem "||" - typischer Copy&Paste-Fehler).

1. Das kann man in einer Schleife über alle Stellen der PLZ machen, dann braucht man die if-Abfrage nur einmal.
2. Sollte man zuerst mal prüfen, ob die PLZ überhaupt 5 Stellen hat (wieso wird eigentlich Stelle 0...5 geprüft? - das sind 6 Stellen)
3. Die PLZ ist ungültig, wenn mindestens eine Stelle nicht numerisch ist - warum dann noch weitermachen mit der nächsten Stelle?

So fände ich es besser (ungetestet):


merker=0;
if (strlen(document.Formular.plz.value) != 5)
merker=1;
else {
for (i=0; i<5; i++) {
c=document.Formular.plz.value.charAt(i);
if (c<"0" || c>"9") {
merker=1;
break;
}
}
}
Jan

uzumakinaruto
29-04-2009, 18:43
solch "wichtige" abfragen würde ich nie in js machen da der benutzer js deaktiviert haben könnte.

ich würde alle pflichtfelder einfach in php durchgehen und danach die entscheidugn fällen (action=seite.php)


if (empty($_POST['name']) or ...) {
echo 'Bitte fuelle alle Felder aus die mit einem * (Sternchen) gekennzeichnet sind!';
} else {
$sql = "......"; # daten verarbeiten
header('Location: ?action=seite.php'); #weiterleitung nach seite.php
}