Validierung klappt nicht

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

  • Validierung klappt nicht

    Hallo alle

    ich hab folgendes Script, das soweit funktioniert:

    <?php

    if (!empty($_POST["submit"])) {

    $sql="INSERT INTO adressbuch " .
    "(idbuch, land, name, vorname) VALUES ('', '$_POST[land]', " .
    "'$_POST[name]', '$_POST[vorname]')";

    if ($db->query($sql)) {
    echo "<br><br>danke!;
    }
    else {
    echo "ups da gibts einen fehler!";
    }
    }
    ?>

    Das Formular soll jetzt validiert werden, d.h.

    1. es MUSS ein Land ausgewählt werden
    [2. es MUSS ENTWEDER der Vorname ODER der Nachname angegeben werden.]

    Zuerst nur mal Punkt 1. Ich hab irgendwo gelesen, dass man z.b. das Land so prüfen könnte:

    $counter=0;
    //check
    if ($land!=""){
    echo "<p>ok</p>";}
    else{
    echo "bitte land angeben!";
    $counter++;}
    echo "<!--land checked -->\n";

    Das klappt auch, aber:

    hänge ich diese Codezeilen vor die oberen Codezeilen, dann gibt es beim Aufrufen der Seite, wo das Formular steht, zuerst immer die Fehlermeldung aus 'bitte landangeben'. Das sollte natürlich nicht sein. Zudem ist die zweite Bedingung unabhängig von der ersten. Egal, ob ich oben das Land angebe oder nicht. Wenn ich auf den 'absenden' knopf klicke, wird so oder so ein eintrag in der Datenbank gemacht.

    Frage 2 ist also:

    immer nur dann, wenn die Bedinung oben (dass in das Feld land etwas eingetragen wurde) erfüllt ist, wird ein Eintrag in der DB gemacht, sonst nicht...

    wie geht das?

    Danke für Eure Hilfe!

  • #2
    Hi,

    Eigentlich recht simpel:
    Wenn mein Feld ungleich (!=) "" (dies entspricht einem Leereintrag) dann DB Routine ausführen.
    Es gibt auch die Funktion empty($variable), welche true zurückliefert, wenn die Variable 0, false oder leer ist.

    Gruß Thomas

    €: Du gibst deinen Sendeknopf einen Namen und überprüfst ob der gesetzt ist:
    Code:
    if (isset($_POST['deinknopf'])) 
     {
       // hier der Kram von oben
     }
    else
     {
       lade Formular
     }
    Zuletzt geändert von Alrik; 17.01.2006, 18:32.

    Kommentar


    • #3
      Hallo, bitte erstmal hier lang.
      http://www.php-resource.de/forum/sho...threadid=50454

      Kommentar


      • #4
        Hallo! Danke für die Antwort.

        Ja, den isset-Befehl kannte ich... Dummerweise ist der Teil oben dann noch nicht mit dem zweiten Teil verknüpft.

        In einem anderen Forum wurde mir folgendermassen geholfen:

        <?php
        if (!empty($_POST["submit"])) {


        if ($land!= "" AND ($name != "" OR $vorname != ""))


        {
        $sql="INSERT INTO adressbuch " .
        "(idbuch, land, name, vorname) VALUES ('', '$_POST[land]', " .
        "'$_POST[name]', '$_POST[vorname]')";

        if ($db->query($sql)) {
        echo "<br><br>danke!;
        }

        else {
        echo "ups da gibts einen fehler!";
        }
        }
        }
        ?>


        Leider wird so aber kein Fehler ausgegeben. Gebe ich nichts ein und klicke auf 'absenden' passiert einfach nichts (auch kein Eintrag in der DB, was ja korrekt ist)
        Ich vermute, dass mit der Verschachtelung was nicht stimmt. Aber was genau?

        Danke für jeden Hinweis!

        Es kommt noch eine weitere Schwierigkeit hinzu: ich möchte, dass man das Land oben mit einem Drop-Down-Menü auswählt. Das klappt soweit auch. Wählt man aber nichts aus, wird das anzeigte Feld 'bitte auswählen' als Eintrag verstanden und in die DB geschrieben. Hier müsste aber eine Fehlermeldung ausgegeben werden 'Bitte ein Land auswählen!'.

        Kommentar


        • #5
          Schwer vorzustellen, dass sich unsere Postings bei einer Zeitdifferenz von 15 Minuten überschnitten haben. Bitte an die Regel halten oder ins andere Forum gehen...

          Kommentar


          • #6
            Hallo Tobiaz

            ich habs tatsächlich überlesen - sorry! Und jetzt gelesen und nicht recht verstanden, was Dir an meinem Posting nicht gefällt (ausser, dass es nicht farbig ist ;-). Aber ich lese mir die Hinweise morgen nochmals in Ruhe durch und werde versuchen, es so zu machen, wie Ihr es hier vorschlägt...

            Guten Abend allerseits :-)

            Kommentar


            • #7
              ausser, dass es nicht farbig ist ;-)
              Das würde mir doch zunächst mal reichen, um wenigstens den groben sinn deines codes zu erhaschen...

              Kommentar


              • #8
                Da ist ein Fehler drin, du schließt einen String nicht.

                PHP-Code:
                <?php
                if (!empty($_POST["submit"])) 
                    {
                        if (
                $land!= "" AND ($name != "" OR $vorname != ""))
                            {
                                
                $sql="INSERT INTO adressbuch " ."(idbuch, land, name, vorname) VALUES ('', '$_POST[land]', " ."'$_POST[name]', '$_POST[vorname]')";
                                if (
                $db->query($sql)) 
                                    {
                                        echo 
                "<br><br>danke!";
                                    }

                                else 
                                    {
                                        echo 
                "ups da gibts einen fehler!";
                                    }
                            }
                    }
                ?>

                Kommentar


                • #9
                  Aja, vielleicht doch noch mal durchlesen. horizontale Scrollbalken sind hier irgendwie nicht so gefragt.

                  Kommentar


                  • #10
                    Hallo alle
                    so gehts:

                    PHP-Code:
                    <?php
                    if (!empty($_POST["submit"])) 
                        {
                            if (
                    $land != "bitte wählen" AND ($name != "" OR $vorname != ""))
                                {
                                    
                    $sql="INSERT INTO adressbuch " ."(idbuch, land, name, vorname) VALUES ('', '$_POST[land]', " ."'$_POST[name]', '$_POST[vorname]')";
                                    if (
                    $db->query($sql)) 
                                        {
                                            echo 
                    "<br><br>danke!";
                                        }
                                    
                                }
                                else 
                                {
                                            echo 
                    "ups da gibts einen fehler!";
                                }   
                         }
                    ?>
                    sorry, ich hab noch nicht herausgefunden, wie ich keine so langen horizontalen Zeilen erzeuge. Mit \n ?? Ich hab jetzt den korrekten Code aber trotzdem mal gepostet, für alle, die ihn brauchen können ;-)

                    Ich bin aber froh, wenn mir jemand sagt, wie ich die 'faulen Informatiker' nicht verärgere und sie zum horizontalen Scrollen zwinge ;-)

                    Kommentar


                    • #11
                      Tipp: Drück einfach mal nen Enter auf deiner Tastatur!!!

                      Kommentar

                      Lädt...
                      X