Announcement

Collapse
No announcement yet.

filter_var mit Auswahl

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • filter_var mit Auswahl

    Hallo !

    Ich möchte die Eingabe von Formularwerten überprüfen.
    In meinem Formular befindet sich ein select - Feld.
    Dieses Feld hat die Einträge:

    Code:
    <select name="artikel">
          <option value="1">1 Artikel</option>
          <option value="2">2 Artikel</option>
          <option value="3">3 Artikel</option>
    </select>
    Es kann also ein, zwei oder drei Artikel ausgewählt werden.
    Nun möchte ich mittels Php diese Variable kontrollieren.
    Dazu verwende ich

    $kontrolle = filter_var($_POST['artikel'], FILTER_VALIDATE_INT);

    Damit kann ich testen ob die Variable INT ist.
    Wie teste ich aber ob der Inhalt der Variable 1, 2 oder 3 ist ?

    Genial wäre die Angbae eines optionalen Arrays in filter_var( ... ) .

    Eine weitere Frage ist, ob man mehrere Filter miteinander kombinieren kann ?

    Gruß Stephan

  • #2
    Was spricht gegen eine Schleife und ein if?
    Christian

    Comment


    • #3
      Hallo,

      das wäre eine Möglichkeit. Eine weitere wäre
      http://www.php.net/manual/de/function.in-array.php .

      Was mich interessiert ob ich filter_var( ... ) dahingehend nutzen kann,
      so daß diese Option mit eingebaut ist.
      Oder man verwendet den Filter FILTER_VALIDATE_REGEXP.

      Man könnte eine RegEx definieren in der integer gefordert wird
      und diese integer - Wert muss sich in einer vorgegebenen Auswahl befinden.

      Scheint mir aber aus 2 Gründen nicht ratsam.
      1. diese RegEx ist umfangreich
      2. RegEx verursachen eine große Last für den Server.

      Gibt es etwas einfacheres?
      Kann man verschiedene Filter miteinander kombinieren?

      Gruß Stephan

      Comment


      • #4
        diese RegEx ist umfangreich ->[123]
        halt ich nicht für umfangreich
        RegEx verursachen eine große Last für den Server.
        wohl kaum

        Gibt es etwas einfacheres? Eine Schleife und ein if

        Was willst du überhaupt kontrollieren? Der Wert KANN nur 1,2 oder 3 sein. Zum jetzigen Zeitpunkt ist es völlig uninteressant, welche im Array drin stehen. Das wird interessannt, wenn die Daten ausgewertet werden, aber nicht bei der Validierung. Insofern ist schon der erste Filter völlig überflüssig
        Zuletzt editiert von Christian Marquardt; 26.06.2012, 13:21.
        Christian

        Comment


        • #5
          Hallo,

          schonmal mit dem Handbuch versucht?
          Originally posted by http://de3.php.net/manual/de/filter.filters.validate.php
          FILTER_VALIDATE_INT: Validates value as integer, optionally from the specified range.
          Danach sollte:
          PHP Code:
          $options = array(); 
          $options['options']['min_range'] = 1
          $options['options']['max_range'] = 3
          filter_var($_POST['artikel'], FILTER_VALIDATE_INT$options); 
          Das Gewünschte liefern.

          Gruß Falk
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment


          • #6
            Hallo,

            ich arbeite gerade an einen Mapper / Checker für ein neues Projekt.
            Am Ende will ich eine Klasse wie folgt verwenden.

            --------------

            class Blog_Model_IndexSub{

            private $_checkData = array(
            'ziffer' => array(
            'filter' => FILTER_VALIDATE_INT
            ),
            'email' => array(
            'filter' => FILTER_VALIDATE_EMAIL
            )
            );

            ...

            public function checkData($formData){
            $kontrolle = filter_var_array($formData, $this->_checkData);

            foreach($kontrolle as $key => $value){
            if($value === false or $value === null or $value == ''){

            ....

            }
            }

            ...

            -------------

            In der Eigenschaft $_checkData will ich alle Bedingungen definieren die ich
            für die Überprüfung der Formular Variablen benötige.
            Dummerweise habe ich ein ungünstiges Beispiel gewählt.
            Wenn die Select Box die Werte 1, 5, 77 und 13 beinhaltet wird es verständlicher.

            Ich denke ich werde mit RegEx arbeiten.

            Gruß Stephan

            Comment

            Working...
            X