Jens: Pflichtfelder eines Formulars auf Eingabe überprüfen

Hallo,

ich habe ein Formular und möchte die Pflichtfelder überprüfen ob was eingegeben wurde.

Quellcode der Pflichtfelder:

<tr>
<td class="schrift1">Name:</td>
<td class="schrift2"> <input type="text" name="name"  size="40"> *</td>
</tr>
<tr>
<td class="schrift1">Vorname:</td>
<td class="schrift2"> <input type="text" name="vorname"  size="40"> *</td>
</tr>
<tr>
<td class="schrift1">Email:</td>
<td class="schrift2"> <input type="text" name="email" size="40"> *</td>
</tr>

wie kann ich das am besten lösen?

MfG
Jens

  1. Hallo

    <tr>
    <td class="schrift1">Name:</td>
    <td class="schrift2"> <input type="text" name="name"  size="40"> *</td>
    </tr>
    wie kann ich das am besten lösen?

    Ich nehme einfach an, dass Du die Übertragungsmethode POST gewählt hast (für GET geht es analog)

    $name = $_POST['name']
    ... weitere Zuweisungen analog

    $ausgefuellt = (!empty($name) && ... weitere Felder)

    Einzelheiten z.B. unter http://de2.php.net/manual/de/function.empty.php.

    MfG
    Jens

    Freundliche Grüsse,

    Vinzenz

    1. als Übertragungsmethode habe ich POST gewählt. Wo und wie baue ich das dann ein ??? auf der gleichen Seite wo das Formular ist oder auf der abschicken Seite.
      Könntest du mir das an dem Beispiel Name mal genau erklären. Bin noch nicht so fit in PHP.

      MfG
      Jens

      1. Hallo Jens,

        als Übertragungsmethode habe ich POST gewählt. Wo und wie baue ich das dann ein ??? auf der gleichen Seite wo das Formular ist oder auf der abschicken Seite.

        Du kannst Formulareingaben sowohl serverseitig als auch clientseitig überprüfen, schau Dir dazu bitte auch folgenden Thread [pref:t=74896&m=431261] an.

        Mit PHP prüfst Du serverseitig, da PHP auf dem Server zum Einsatz kommt.
        Ablauf:

        1. Browser zeigt Formular an.
        2. Benutzer füllt das Formular aus und klickt auf den Submit-Button.
        3. Wünschenswert: Clientseitig wird über JavaScript die Eingabe
           geprüft und falls die Eingabe ok ist, abgesendet. Hat der Benutzer
           JavaScript deaktiviert, so wird das Formular direkt abgeschickt.
        4. Das serverseitige Skript (Wert des action-Attributes) verarbeitet
           die erhaltenen Daten
        5. Das serverseitige Skript gibt eine Rückmeldung aus, z.B. erneut
           das Formular mit dem Hinweis auf vollständiges Ausfüllen.

        Wenn Du mit der Methode POST arbeitest, so kannst Du mit der superglobalen Variablen $_POST auf den Inhalt Deiner Formularelemente zugreifen. $_POST ist ein assoziatives Array, siehe auch http://www.php.net/manual/de/language.types.array.php. Auf den Inhalt des Formularelementes mit dem Namen "name"

        <input type="text" name="name">

        greifst Du im verarbeitenden Skript über

        $_POST['name']

        zu, entsprechend auf den Inhalt des Formularelementes mit dem Namen "blabla"

        <input type="text" name="blabla">

        über

        $_POST['blabla']

        usw.

        Da Dein Antwortskript in der Lage sein muss, dass Formular auszugeben, wenn eben nicht alle Pflichtfelder ausgefüllt sind, liegt es nahe, dass das Skript sich selbst aufruft. Folgende Logik kommt zum Einsatz:

        Wenn Skript zum erstenmal aufgerufen wird
            Ausgabe Formular
        Sonst
            Wenn Prüfung der Pflichtfelder erfolgreich
                Rückmeldung: Alles ok
            Sonst
                Meldung: Sie haben nicht alle Felder ausgefüllt
                Ausgabe Formular (mit schon eingegebenen Werten als Service)
            Ende Wenn
        Ende Wenn

        Du solltest Dir auf jeden Fall die Zeit nehmen und das eine oder andere Tutorial für PHP gründlich durchzuarbeiten, z.B. das Tutorial http://www.php.net/manual/de/tutorial.forms.php

        Freundliche Grüsse,

        Vinzenz

        1. ja also. das ist echt gut erklärt. nur irgendwie komme ich beim ansatz nicht so richtig weiter. ein kleiner codebeispiel würde mir da schon weiterhelfen. und vorallem wo baue ich diese abfrage ein?

          es soll wenn es fertig ist so funktionieren ...

          benutzer füllt das formular aus -->> pflichtfelder ausgefüllt -->> die daten per email an den kontakt senden + an den der das formular ausgefüllt hat.

          pflichtfelder nicht komplett ausgefüllt halt fehlermeldung ...

          Quellcoder der Formularseite:

          <form enctype="multipart/form-data" method="post" action="index.php?site=kontaktsenden">

          <table align="center" border="0" cellpadding="0" cellspacing="0">
          <tr>
          <td class="ueberschrift1">Kontaktformular für Ihre Anfragen</td>
          </tr>
          </table>

          <br>

          <table align="center" border="0" cellpadding="0" cellspacing="0">
          <tr>
          <td class="schrift1">Name:</td>
          <td class="schrift2"> <input type="text" name="name" size="40"> *</td>
          </tr>
          <tr>
          <td class="schrift1">Vorname:</td>
          <td class="schrift2"> <input type="text" name="vorname" size="40"> *</td>
          </tr>
          <tr>
          <td class="schrift1">Email:</td>
          <td class="schrift2"> <input type="text" name="email" size="40"> *</td>
          </tr>
          <tr>
          <td class="schrift1">Telefon:</td>
          <td> <input type="text" name="telefon" size="40"></td>
          </tr>
          <tr>
          <td class="schrift1">PLZ / Ort</td>
          <td> <input type="text" name="plzort" size="40"></td>
          </tr>
          <tr>
          <td> </td>
          </tr>
          <tr>
          <td class="schrift1">Betreff:</td>
          <td> <input type="text" name="betreff" size="40"></td>
          </tr>
          <tr>
          <td> </td>
          </tr>
          <tr>
          <td class="schrift1">Ihre Nachricht:</td>
          <td> <textarea name="nachricht" cols="40" rows="5"></textarea></td>
          </tr>
          </table>

          <br>

          <table align="center" border="0" cellpadding="0" cellspacing="0">
          <tr>
          <td><input type="submit" name="senden" value="Abschicken"></td>
          </tr>
          </table>

          <br>

          <table align="center" border="0" cellpadding="0" cellspacing="0">
          <tr>
          <td class="schrift2">* Pflichtfelder die ausgefüllt werden müssen.</td>
          </tr>
          </table>
          </form>

          Ein Beispiel wie und wo ich diese Abfrage einbaue würde mir echt weiterhelfen.

          MfG
          Jens

          P.S.
          anhand des Codes verstehe ich es immer besser.

        2. also ...

          ich habe es jetzt so:

          beim abschicken kommt man auf die nächste seite und da überprüft er die eingaben.

          das hab ich so:

          <?php

          $name = $_POST['name'];
          $vorname = $_POST['vorname'];
          $email = $_POST['email'];

          if (!empty($name) && ($vorname) && ($email)) { echo Sie haben nicht alle Pflichtfelder ausgefüllt }
           else {  }
          ?>

          aber irgendwie geht das nicht so richtig.

          MfG
          Jens

          1. Hallo

            <?php

            $name = $_POST['name'];
            $vorname = $_POST['vorname'];
            $email = $_POST['email'];

            Du solltest schon prüfen, ob da auch das ankommt, was du erwartest und
            eventuelle unerwünschte Eingaben, wie Programmcode, abfangen.

            http://de2.php.net/manual/de/ref.regex.php
            reguläre Ausdrücke (Posix)
            http://de2.php.net/manual/de/ref.pcre.php
            reguläre Ausdrücke (Perl)
            http://selfhtml.teamone.de/cgiperl/sprache/regexpr.htm
            mit Beispielen zu regulären Ausdrücken (Perl)
            http://de2.php.net/manual/de/function.strip-tags.php
            HTML-Tags und PHP-Code entfernen
            http://de2.php.net/manual/de/ref.strings.php
            allgemein, Liste aller Funktionen für den Umgang mit Strings

            if (!empty($name) && ($vorname) && ($email)) { echo Sie haben nicht alle Pflichtfelder ausgefüllt }

            Du schreibst:
            'wenn $name _nicht_leer_ ist und $vorname sowie $email irgendetwas
            ist, schreibe: "Sie haben nicht alle Pflichtfelder ausgefüllt"'.
            Fällt dir was auf?

            Tschö, Auge

            --
            Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
            (Victor Hugo)
            1. ok ...

              wie müsste es den grob aussehen ???

              MfG
              Jens