Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Validierung mit Arrays

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Validierung mit Arrays

    Hallo,

    ich arbeite quasi zum ersten Mal mit Arrays und möchte eine Validierung eines Registrierungs-Formulars vornehmen.

    Dies ist der Code bisher:

    PHP-Code:
    if ($_POST['register'] AND strlen($prename) < 2) { $a=1; }
    if (
    $_POST['register'] AND strlen($surname) < 2) { $b=1; }
    if (
    $_POST['register'] AND !eregi('^[A-Z]+(-?.?[0-9A-Z]+)+@{1}([0-9A-Z-]+.{1})+([A-Z]{2,4})$',$mail_1)) { $c=1; }
    if (
    $_POST['register'] AND $mail_2 != $mail_1) { $d=1; }
    if (
    $_POST['register']) { $count mysql_fetch_array(mysql_query("SELECT COUNT(id) FROM users WHERE email='$mail_1'")); }
    if (
    $_POST['register'] AND !empty($count[0])) { $e=1; }
    if (
    $_POST['register'] AND empty($gender)) { $f=1; }
    if (
    $_POST['register'] AND empty($day) AND empty($month) AND empty($year)) { $g=1; }
    if (
    $_POST['register'] AND empty($agb)) { $h=1; }

    # Array zur Validierung #
    $validate = array(=> "$a","$b","$c","$d","$e","$f","$g","$h");

    foreach (
    $validate as $error) { echo "$error"; }

    if (
    $_POST['register'] AND empty($validate)) { echo "Keine Fehler"; }
    else { 

    echo 
    "Fehler:"
    foreach (
    $validate as $error) { echo "$error"; }


    Ich setze also immer die Variable $a, $b, $c, usw., wenn es einen Fehler gibt bei der Eingabe. Dann wollte ich die jeweiligen Fehler dem Array zuordnen, dass ich mit

    PHP-Code:
    if ($_POST['register'] AND empty($validate)) 
    die Fehler-Variablen dem Array zuordne, doch funktioniert das nicht so wirklich. Ich kriege komischerweiße außerdem immer die Ausgabe des echo's "Fehler:", auch wenn $_POST['register'] (Also das Klicken auf den Sende-Button) garnicht ausgeführt wurde.

    Hoffe mir kann jemand helfen bzw. Alternativen vorschlagen!

    LG

  • #2
    Lass Die das Feld $validate mal mit
    PHP-Code:
    echo '<pre>'var_dump($validate); echo '</pre>'
    ausgeben.
    Du wirst sehen, dass das Feld auch dann Elemente hat, wenn $a,$b... leer sind.

    Du brauchst die einzelnen Variablen nicht. Du kannst auch dem Feld direkt und nur bei Bedarf Elemente hinzufügen.
    PHP-Code:
    if ($_POST['register'] AND strlen($prename) < 2) {
        
    $validate[] = 'Vorname fehlt';
    }
    if (
    $_POST['register'] AND strlen($surname) < 2) {
        
    $validate[] = 'Nachname fehlt';
    }
    if (
    $_POST['register'] AND !eregi('^[A-Z]+(-?.?[0-9A-Z]+)+@{1}([0-9A-Z-]+.{1})+([A-Z]{2,4})$',$mail_1)) {
        
    $validate[] = 'ungültige EMail-Adresse';
    }

    foreach (
    $validate as $error) {
        echo 
    $error"<br />";

    Warum benutzt Du eigentlich $_POST['register'] aber nicht $_POST['prename'], $_POST['surname'] usw?

    "$error" ist unnötig, einfach $error.
    eregi() ist veraltet, benutzt besser [man]pcre[/man].

    Kommentar


    • #3
      Stimmt, das ist viel sinnvoller!

      Ja, ich kriege immer NULL als Ergebnis, wenn noch keine Eingabe gemacht wurde.

      Das mit dem $_POST vor den Variablen hatte ich zuerst nur aus Testzwecken hinzugefügt. Davor hatte $register auch kein $_POST, aber es ist wahrscheinlich besser alle mit $_POST zu versehen.

      Wie überprüfe ich denn, ob das Array leer ist oder nicht?

      Kommentar


      • #4
        Mit [man]empty[/man]() oder [man]count[/man]().
        PHP-Code:
        <?php
        $x 
        = array();
        $y = array(1,2,3);

        echo 
        count($x);
        if (empty(
        $x)) echo " x is empty.<br />\n";

        echo 
        count($y);
        if (empty(
        $y)) echo " y is empty.<br />\n";

        Kommentar


        • #5
          Danke, du hast mir sehr geholfen!

          Kommentar

          Lädt...
          X