nach überprüfung textfelder alle textfelder leer!

Brauni

Erfahrenes Mitglied
hallo

Ich habe eine Formular wo sich user registrieren können. Beim form = action="test.php" lade ich meine php Datei die überprüft, ob alle Pflichtfelder ausgefüllt wurden.
Wenn ja speichert er denb Datensatz in der DB wenn nicht dann springt er mit folgendem Befehl zurück

<script language="JavaScript" type="text/javascript">
<!--
history.back();
//-->
</script>

und schreibt eine Fehlermeldung hin, dass nicht alle Pflichtfelder ausgefüllt worden sind.
Problem ist nur, dass dann alle Inhalte der Eingabefelder gelöscht worden sind.
Gibt es dazu eine Lösung oder muss ich dies anders überprüfen?
 
du kannst es auch anders machen, indem du sowas in der Art hast:
<form action="formular.php?action=senden ...>
und dann überprüfst du
if($_GET['action'] == 'senden') {
//Felder kontrollieren und in array $fehler schreiben
}
so und wenn dann etwas in $fehler gesetzt ist soll das normale Formular ausgegeben werden mit den entsprechenden Fehlern und wenn action = 'senden' ist und keine $fehler gesetzt sind, kannst du die Daten weiterverarbeiten...
 
es gibt da mehrere Lösungsansätze.

entweder mit JS.

Hier prüfst Du VOR dem absenden

Code:
 <form name="engabefeld "method='post' action="test.php" onsubmit='inhaltstest()'>

In der Funktion "Inhalttest" prüfts du halt den Inhalt der Felder.


Mit PHP

Die Funkrion "history.back();"
ist bei der PHP-geschichte etwas schlecht.

Nach der Prüfung musst Du du bei einem Fehler das Formulat neu generieren idm in die Felder Value trägst du die übergebenen Werte schon ein.


Wenn Du mal schnell deinenn Formular-Quellcode und das test.php zeigst könnte man das bestimmt recht zügig anpasssen.

MfG
 
@hondocrx
JS wäre cool aber wie genau weis ich nicht wie man das überprüft etc.

formular.php
PHP:
<form action=test.php method=get>

  <table width="528" border="0">
      <tr>
        <td colspan="2"><strong>Vorname:*</strong></td>
        <td width=195><input size=15 type=text name=vorname> </td>
        <td width=190> </td>
      </tr>
      <tr>
        <td colspan="2"><strong>Nachname:*</strong></td>
        <td><input size=15 type=text name=nachname > </td>
        <td></td>
      </tr>
      <tr>
</table>


test.php
PHP:
    if($vorname != "" and $nachname != "" )
    {

            $queryy = "insert into user (vorname, nachname) values ('$vorname', '$nachname')";
            $result5 = mysql_db_query("usr_web225_1", $queryy);

            $num2 = mysql_affected_rows();

            if ($num2>0)
            {
                $_SESSION["status"] = "<strong>Sie wurden erfolgreich regestriert!</strong>";
                header ("Location: asdf.php");
            }
    }
    else
    {
            $_SESSION["status"] = "<strong>Bitte alle Pflichtfelder ausfüllen!</strong>";
            ?>
            <script language="JavaScript" type="text/javascript">
            <!--
            history.back();
            //-->
            </script>
            <?php
    }
 
Zuletzt bearbeitet:
Hi,

Kleiner Tipp: Vergiss JS mit history.back();
Das wird von jedem Browser (abhängig von den Settings) anders interpretiert...

Die einzige Wasserdichte Lösung:
Formulardaten in ein Session-Array packen und mitführen..

D.h.:
1: User überträgt Formular
2: Du rufst die selbe Seite beim Submit erneut auf (einfach action=form.php)
3: Du packst beim Submit die Daten in die Sessions (am elegantesten mit einem array) und prüfst auch gleich, ob die Daten korrekt sind
4: Wenn Fehler==false leitest Du den User mit header(location:...) auf die bestätigungs-seite weiter. Dort liest du die session variablen einfach wieder aus und packst sie in deinen Datenspeicher..

Beim Formular setzt du den Standard-Value der Textfelder einfach auf die entsprechende Session-Variable -> fertig.

So ist es absolut wasserdicht..

Vielleicht kann mir im Gegenzug irgendwer bei meinem Antialising Problem helfen

LG
Mike
 
einfacher JS-Test
Besser ist aber php

MfG

Code:
<html>
<head>
<title></title>

</head>



<script language="JavaScript">
<!--
function test() {

var vn = document.formular.vorname.value;
var nn = document.formular.nachname.value;

if(vn != "" && nn !="")
  {
  return true;
  }
else
  {
  alert("Bitte alle Felder ausfüllen");
  return false;
  }
}
//-->
</script>
<noscript></noscript>

<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">

<form name  = "formular" action="test.php" method="GET" onSubmit="return test()">

  <table width="528" border="0">
      <tr>
        <td colspan="2"><strong>Vorname:*</strong></td>
        <td width=195><input size=15 type=text name=vorname> </td>
        <td width=190> </td>
      </tr>
      <tr>
        <td colspan="2"><strong>Nachname:*</strong></td>
        <td><input size=15 type=text name=nachname > </td>
        <td><input type="Submit" name="" value="abschicken"></td>
      </tr>
      <tr>
</table

</body>
</html>
 
Irgendwie hab ich das gefühl, du meinst was ganz anderes.
Dein Quelltext:
HTML:
<input size=15 type=text name=vorname>
bestätigt meine Vermutung.

Du willst deinen Feldern einen Vorgabewert geben, das machst du mit dem value-Attribut von html.
Deine Werte sollen nach dem Abschicken noch verfügbar sein?
Dann probiers mal so:
PHP:
<input size=15 type="text" name="vorname" value="<?php echo($_POST['vorname']); ?>" />
 
hm... bringt bei history.back aber auch nichts, da die POST Variablen natürlich futsch sind...

Außer ich versteh da auch was ganz falsch... :)
 
Zurück