Ankündigung

Einklappen
Keine Ankündigung bisher.

Nummerisches Textfeld - Genaue Zeichenlänge - Validierung

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Nummerisches Textfeld - Genaue Zeichenlänge - Validierung

    Hi,

    ich möchte ein nummerisches Textfeld auf eine bestimmte Zeichenlänge hin prüfen. Per HTML kann man ja einfach angeben, ob ein Feld auf eine bestimmte Zeichenlänge (wie etwa 6) hin begrenzt ist. Nun möchte ich aber, dass mein eine Rückmeldung erfolgt, wenn weniger als 6 Zeichen (nummerische Werte) eingegeben worden sind.

    Das ist mein bisheriger Code:
    PHP-Code:
    if (!isset($_SESSION['ok']) || $_SESSION['ok'] !== true){
        
    header('Location:../Login.php');
    }
    if (isset(
    $_POST['submit'])) {
        if (isset(
    $_POST['IDSuche']) && !is_array($_POST['IDSuche']) && $_POST['IDSuche'] != '') {
        
            if (
    is_numeric ($_POST['IDSuche']) && (($_POST['IDSuche']) > ) ) {
            
    $IDSuchehtmlspecialchars($_POST['IDSuche']);
            
    $db = new MySQLi('localhost''root''''base');
            
    $sql "SELECT * FROM diagnoseprotokoll WHERE StudieID='$IDSuche' ";
            
    $ergebnis $db->query($sql);
            
    $zeile $ergebnis->fetch_object();
            if(
    $zeile == false){
                
    $_SESSION['IDNeu'] = '*ID ' $IDSuche ' is nicht vorhanden.';
                
    $_SESSION['IDnichtvorhanden'] = htmlspecialchars($_POST['IDSuche']);
                
    header('Location:Eingabe_Anlegen.php');
                }else{
                
    $_SESSION['IDAlt'] = '*ID ' $IDSuche' befindet sich bereits in der Datenbank!';
                
    $_SESSION['IDvorhanden'] = htmlspecialchars($_POST['IDSuche']);
                
    header('Location:Eingabe_Editieren.php');
            }
            } else {
    $Fehler 'Bitte einen positiven nummerischen Wert eingeben!';}
            
            } else {
            
    $Fehler '*Es wurde keine ID angegeben!';
         }
        
    }
    ?> 
    Bisherige Pruefung:
    Wurde gesetzt? isset($_POST['IDSuche']
    Kein leeres Feld? $_POST['IDSuche'] != ''
    Ist nummerisch? is_numeric ($_POST['IDSuche'])

    Jetz fehlt mir noch die Pruefung ob es genau 6 Zeichen lang is...kann mir jmd helfen?

  • #2
    das kannst du mit strlen() machen, wenn du $_POST auswertest.
    Oder als "int" mit einer " if($zahl < 999999 && $zahl< 99999) Abfrage.
    Letzeres solltest du dann aber mit is_numeric() kombinieren....

    Kommentar


    • #3
      besten dank

      Kommentar


      • #4
        Ob dein Feld leer ist, kannst du auch mit der Funktion empty() prüfen. Dazu ist sie nämlich da Ich empfehle dir ausserdem, die Variable mit intval() tatsächlich in eine Variable vom Typ Integer zu konvertieren. Denn wenn du eine Prüfung vornehmen willst, wie es halskrause empfiehlt, dann funktioniert das nur mit "echten" Integerwerten. Zwar kann PHP automatische Typumwandlung, aber du solltest trotzdem auf "Nummer sicher" gehen.

        Kommentar


        • #5
          Zitat von halskrause Beitrag anzeigen
          if($zahl < 999999 && $zahl< 99999)


          Mal abgesehen von dem Schreibfehler, aber wurde die Angabe "000001" schon als unzulässig verworfen? Ich denke nicht!

          Kommentar


          • #6
            Ob dein Feld leer ist, kannst du auch mit der Funktion empty() prüfen.
            Und was soll das bringen, bei dieser Fragestellung:
            Jetz fehlt mir noch die Pruefung ob es genau 6 Zeichen lang is...

            Kommentar


            • #7
              Reguläre Ausdrücke wurden seltsamerweise noch nicht erwähnt... damit kann man Länge UND Format gleichzeitig prüfen.

              Kommentar


              • #8
                Hast du vollkommen Recht...ich kannte den Begriff gestern noch nicht aber gelöst habe ich diesen Problem GENAU mit dem Vorgehen...

                hier ein schönes Tutorial...for Dummies (also für mich wars perfekt, um es zu verstehen :P)

                php-dummies.de - Tutorials - RegExpressions - Basics

                Kommentar


                • #9
                  Also ich finde nen normalen Zahlenvergleich in Verbindung mit einem Type-Casting immer noch die beste Lösung.

                  Kommentar


                  • #10
                    Und schneller als reguläre Ausdrücke auf jeden Fall auch...

                    Kommentar


                    • #11
                      Es ging ja auch nur darum, Möglichkeiten aufzuzeigen

                      Kommentar


                      • #12
                        Dann gibt es hier jetzt die restlichen Möglichkeiten:

                        Nummerisches Textfeld - Genaue Zeichenlänge - Validierung - Forum: phpforum.de

                        Gruß Jens

                        Kommentar


                        • #13
                          Das ist aber schön!

                          Bitte beachten: Anmerkungen zu Crosspostings

                          [MOD: Thread geschlossen]

                          Kommentar

                          Lädt...
                          X