Sascha: Formularprüfung- aber wie?

Hallo Leute,

ich habe in einer PHP-Seite folgendes Suchformular eingebunden, nun möchte ich sozusagen eine Formularprüfung irgendwie einbauen, weiss aber leider nicht wie ich das bewerkstelligen soll ...

Nach absenden des Formulars werden dann die Daten aus einer MySQL DB ausgelesen und in die Webseite geladen.

Nun würde ich das gerne so haben:

1 Suchbegriff alleine ist nicht das Problem
so ab 2 Suchbegriffe aber kommt ja noch der Operator UND / ODER ins Spiel, das gleiche bei 3 Suchbegriffen.
Nun ist das Problem, wenn jemand so schlau ist, und zwar alle 3 Felder mit Suchbegriffen bestückt, aber keinen Operator auswählt, das es zu einem Problem kommt, weil diese Angaben einfach fehlen.
Nun wäre es denke ich mal am einfachsten, wenn man dem Formular vor es abgesendet wird, auf solche Eingabefehler hin überprüft.
Es soll z.B. wieviel Wörter angeben wurden, und wenn mehr als 1 Wort dann soll geprüft werden, ob die Operatoren ausgewählt wurden, ansonsten soll das Formular neu geladen werden ...
Desweiteren wäre es vielleicht sinnvoll zu prüfen, wenn nur 1 Wort angegeben wurde, das es auch im Formularfeld für den ersten Suchbegriff drin ist, und nicht in Feld 3 oder so ...

Mehr kann mir bei diesem Problem weiterhelfen, bzw. mal ein Beispiel dazu liefern, wie man soetwas realisieren kann, falls dieses möglich ist. Am besten das ganze in HTML / PHP und Notfalls in Perl-CGI, aber nicht in JAVA / JAVA Script o.ä. ...

Hier mal mein Suchformularscript, zur Verdeutlichung:

<?php
require("config-softdatabase.php4");

echo "<h1><font color="#FFFF00" face="Arial">Suchen</font></h1>
<form method="POST" action="index.php4">
<input type=hidden name="session" value="gefunden_mich.php4">
    <p><font face="Arial" color="#FFFF00" size="2">Nach welchem Begriff soll gesucht werden?<br><br>
1. Suchbegriff:  
<input type="text" name="wort1" size="40" maxlength="490"><br>
<br>
Operator 1 (Bitte wählen!):   <select name="operator1" size="1">
    <option value="">----
    <option value="UND">UND
    <option value="ODER">ODER
   </option>
  </select><br><br>
2. Suchbegriff:  
<input type="text" name="wort2" size="40" maxlength="490"><br>
<br>
Operator 2 (Bitte wählen!):   <select name="operator2" size="1">
    <option value="">----
    <option value="UND">UND
    <option value="ODER">ODER
   </option>
  </select><br><br>
3. Suchbegriff:  
<input type="text" name="wort3" size="40" maxlength="490"><br>
<br>
  <p><font face="Arial" size="2"><input type="submit" value="Abschicken" name="B1"><input type="reset" value="Zurücksetzen" name="B2"></font></p>
</form>
";
?>

Ich würde mich sehr freuen, wenn mir jemand mal weiterhelfen könnte.
Im voaus besten Dank.

Mfg.

Sascha

  1. Hi,

    Nun ist das Problem, wenn jemand so schlau ist, und zwar alle 3 Felder mit Suchbegriffen bestückt, aber keinen Operator auswählt, das es zu einem Problem kommt, weil diese Angaben einfach fehlen.

    eliminiere die Möglichkeit "keine Auswahl".

    Nun wäre es denke ich mal am einfachsten, wenn man dem Formular vor es abgesendet wird, auf solche Eingabefehler hin überprüft.

    Das geschieht clientseitig, also z.B. mit JavaScript. Da Du clientseitig nichts voraussetzen darfst, mußt Du mögliche Fehler nach wie vor serverseitig abfangen.

    Am besten das ganze in HTML

    HTML kann nur eine Struktur und dessen Inhalte liefern. Es kann nicht das geringste prüfen.

    / PHP

    "if"

    und Notfalls in Perl-CGI,

    Auch "if"

    aber nicht in JAVA / JAVA Script o.ä. ...

    Wenn Du _vor_ dem Versand eine Prüfung wünschst, sind serverseitige Prüfungen zu spät.

    Cheatah

    1. Hallo,

      also habe ich das nun so richtig verstanden, wenn ich die Prüfung per PHP realisieren möchte, müste ich das wie folgt machen:

      1. User gibt Suchdaten ins Formular ein, und sendet es ab
      2. Suchanfrage startet darauf hin ein weiteres PHP-Script, indem
         ich mit z.B. mit if(isset($wort2)) oder if ($wort2  == "") oder
         oder dann erstmal meine gewünschten Bedingungen checke, und das
         dann in einer while ... do... Schleife oder? solange durchlaufen
         lasse, bis alle Daten korreckt sind, und darauf hin das erst
         an den Server übertragen wird ...

      ... bzw. wenn ein PHP-Script das checkt, wäre die Prüfung auf Serverseite oder?

      Jetzt stellt sich nur die Frage, mit welchem Befehl kann ich das dann an mein Verarbeitungsscript weiterreichen? - also ich meine wenn die Werte ok sind, wäre es ja für den User doof, wenn er erst noch einen Formularbutton, LINK o.ä. drücken muß, damit es weitergeht ...

      Habe ich das da oben so richtig vertanden, oder wie soll ich es am besten machen deiner Meinung nach?

      Besten Dank vorab.

      Mfg.

      Sascha

      Hi,

      Nun ist das Problem, wenn jemand so schlau ist, und zwar alle 3 Felder mit Suchbegriffen bestückt, aber keinen Operator auswählt, das es zu einem Problem kommt, weil diese Angaben einfach fehlen.

      eliminiere die Möglichkeit "keine Auswahl".

      Nun wäre es denke ich mal am einfachsten, wenn man dem Formular vor es abgesendet wird, auf solche Eingabefehler hin überprüft.

      Das geschieht clientseitig, also z.B. mit JavaScript. Da Du clientseitig nichts voraussetzen darfst, mußt Du mögliche Fehler nach wie vor serverseitig abfangen.

      Am besten das ganze in HTML

      HTML kann nur eine Struktur und dessen Inhalte liefern. Es kann nicht das geringste prüfen.

      / PHP

      "if"

      und Notfalls in Perl-CGI,

      Auch "if"

      aber nicht in JAVA / JAVA Script o.ä. ...

      Wenn Du _vor_ dem Versand eine Prüfung wünschst, sind serverseitige Prüfungen zu spät.

      Cheatah

      1. Hi,

        1. Suchanfrage startet darauf hin ein weiteres PHP-Script, indem
             ich mit z.B. mit if(isset($wort2)) oder if ($wort2  == "") oder
             oder dann erstmal meine gewünschten Bedingungen checke, und das
             dann in einer while ... do... Schleife oder? solange durchlaufen
             lasse, bis alle Daten korreckt sind, und darauf hin das erst
             an den Server übertragen wird ...

        öh... ja, oder so ähnlich. Es sei denn, Du erlaubst gar keine Falschangaben.

        ... bzw. wenn ein PHP-Script das checkt, wäre die Prüfung auf Serverseite oder?

        Richtig.

        Jetzt stellt sich nur die Frage, mit welchem Befehl kann ich das dann an mein Verarbeitungsscript weiterreichen?

        Nicht weiterreichen. Die Prüfung im selben Script durchführen.

        Und bitte ausschließlich das zitieren, worauf Du Dich beziehst. Ich mag kein TOFU.

        Cheatah