Ingo: Formularcheck

Hallo,
ich habe das Problem das ein...hm  mist wie soll ichs erklären...am besten erstma die grobe struktur meiner der Seite in der reihenfolge von oben nach unten.

1. Javascript check von formularfeldern a la
 function chkFormular()
 {
 if(document.formular.email.value == "")  {
   alert("Bitte eine E-Mail Adresse eingeben.");
   document.formular.titel.focus();
   return false;
  }

2. dann PHP mit html anteil

if(!isset($submit))
{
-formularfeld mit submitbutton
}
else
{
-mysql-insert der formulardaten
-das formular wurde ausgefüllt html ausgabe
}

tja mein problem ist das die eingabe falls sie falsch ist, also das alert erscheint, trotzdem eingetragen wird, da ja submit nach abschicken  aktiviert ist und in die else bedingung gesprungen wird.
nun habe ich versucht  in die JS if bedingungen einen php teil einzufügen <?unset($submit);?> , aber wenn ich dann auf submit drücke wird ja JS aufgerufen und irgendwie schert sich PHP ja nicht darum ob es in einer JS bedingung ist oder nicht, jedenfalls wird es dann auch bei richtigen eingaben ins formular ausgeführt und es geht dann ja nicht in die else bedingung.
Hat irgendwer eine Idee wie ich das Problem lösen kann ohne  2 dateien zu machen (habe nämlich mehrere dateien mit der struktur), oder das formularfeld mit php abzufragen ???

  1. Hallo,

    Sobald HTML-Seite an den Benutzer ausgeliefert wird, kann kein PHP-Code mehr ausgeführt werden. Überprüfe die Daten doch einfach nochmal in PHP, wenn die Seite abgeschickt wurde. Ist sie dann ok, wird in die Datenbank eingetragen, ansonsten geht es auf eine Fehlerseite oder ähnliches.
    Gruß,
    Henning

    --
    Gruß aus Braunschweig
  2. Hallo Ingo,

    1. Javascript check von formularfeldern a la

    wie wird denn die Funktion aufgerufen?

    if(!isset($submit))

    ich will doch mal hoffen $_POST["submit"] (bzw. $_GET["submit"])

    {
    -formularfeld mit submitbutton

    aber bitte die schon eingegebenen Sachen wieder ins Formular schreiben, und eine Fehlermeldung ausgeben :-)

    }
    else
    {

    if(datenallerichtig){

    -mysql-insert der formulardaten
    -das formular wurde ausgefüllt html ausgabe

    }
    else{
    -formularfeld ausgeben (s.o.)
    }

    }

    tja mein problem ist das die eingabe falls sie falsch ist, also das alert erscheint, trotzdem eingetragen wird, da ja submit nach abschicken  aktiviert ist und in die else bedingung gesprungen wird.

    du kennst das überprüfungsbeispiel aus selfhtml?

    irgendwie schert sich PHP ja nicht darum ob es in einer JS bedingung ist oder nicht,

    logisch, php läuft auf dem Server ab und js auf dem Browser des users - php weiß nichts von js und umgekehrt.

    Grüße aus Nürnberg
    Tobias

      1. Javascript check von formularfeldern a la
        wie wird denn die Funktion aufgerufen?

      <FORM ACTION="<?=$PHP_SELF?>" METHOD="post" name="formular" onSubmit="return chkFormular()">

      if(!isset($submit))
      ich will doch mal hoffen $_POST["submit"] (bzw. $_GET["submit"])

      Hm das macht sonst probleme ??? Hat das nich mit irgendwelchen globals zu tun ??

      -formularfeld ausgeben (s.o.)

      wie  meinste denn das genau soll dann ins else nen unsetsubmit und dann seite neu aufgerufen werden ??

      du kennst das überprüfungsbeispiel aus selfhtml?

      joa meines is so ca.

      1. Hallo Ingo,

        <FORM ACTION="<?=$PHP_SELF?>" METHOD="post" name="formular" onSubmit="return chkFormular()">

        mhh... sollte eigentlich funktionieren. Kann man sich das ganze irgendwo ansehen?
        nur so am rande: statt <?=$PHP_SELF?> besser <?php echo $_SERVER["PHP_SELF"]; ?> (kann sonst mit diversen Einstellungen kollidieren)

        ich will doch mal hoffen $_POST["submit"] (bzw. $_GET["submit"])
        Hm das macht sonst probleme ???

        muss nicht, kann aber.

        Hat das nich mit irgendwelchen globals zu tun ??

        ja, wenn register_globals auf off steht, funktioniert deine Methode nicht.

        -formularfeld ausgeben (s.o.)
        wie  meinste denn das genau soll dann ins else nen unsetsubmit und dann seite neu aufgerufen werden ??

        du solltest mit php nochmal eine überprüfung machen, bevor du das ganze endgültig speicherst.

        Grüße aus Nürnberg
        Tobias

        1. Hm also anschauen kann man das nirgends is noch net fertig so richtig.
          Ich müßte es nur hinbekommen das submit als nicht geklickt gilt wenn ein fehler auftritt dann hätte ich das Problem nicht mehr....ach ja wie is das denn mein server schaltet bald globals off ...ganz kurz , in welchen zusammenhang verwende ich post und get ???

          <?php echo $_SERVER["PHP_SELF"]; ?>

          muß da ein echo hin ?? weil soll ja nicht ausgegeben werden.

          1. Hallo Ingo,

            ach ja wie is das denn mein server schaltet bald globals off ...ganz kurz , in welchen zusammenhang verwende ich post und get ???

            $_POST[] und $_GET[] brauchst du immer dann, wenn du per post bzw. per get was von einer zur anderen Seite übergibst. (da gibt es aber noch mehr: $_COOKIE[] für Cookies, $_FILE[] für Dateiuploads, $_SERVER[] für Servervariablen (z.B. PHP_SELF) und $_ENV[] für Umgebungsvariablen)

            <?php echo $_SERVER["PHP_SELF"]; ?>
            muß da ein echo hin ??

            dein = bewirkt ja auch nichts anderes.

            weil soll ja nicht ausgegeben werden.

            natürlich, das echo bewirkt ja nur, dass es im Quellcode steht, ob es dann im Browser auch erscheint, hängt dann davon ab wo in der Datei das steht.

            Grüße aus Nürnberg
            Tobias