is_integer() mit Formularen

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

  • is_integer() mit Formularen

    Hi,

    ich frage mich gerade wie ich prüfen kann, ob über ein Formular Integer Werte gekommen sind:

    PHP-Code:
    is_integer($_POST['anzahl']); 
    //ergibt false 
    Ich würde jetzt mit einer regex loslegen wollen. Oder gibt es bessere Methoden?

    Danke.

  • #2
    PHP-Code:
    if ((int)$_POST['anzahl'] == $_POST['anzahl']) {

    oder mit einer regex oder du schmeißt mit str_replace alle Ziffern raus, wenn $_POST['anzahl'] danach nicht leer ist, war die Eingabe kein integer
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Ja, das wäre die Lösung. Allerdings schreibe ich mir eine Funktion die mir aus einem Array anhand der Keys und Values eine Insert Query zusammenbaut. Die Daten werden nur passend aus dem POST-Array gepfluckt und an die Funktion übergeben. Ich habs jetzt so gemacht:

      PHP-Code:
          /**
           * build_insert()
           * 
           * Erzeugt einen Insert-SQL String
           * 
           * @param   $tbl_name   Name der betreffenden Tabelle
           * @param   $data       Assoziativer Array mit zu verwendenden Daten
           */
          
      function build_insert($tbl_name$data){
              
              
      $arr_column = array();
              
      $arr_values = array();
              
              foreach(
      $data AS $key => $value){
                  
      $arr_column[] = $key;
                  
                  if(
      strlen($value) > 0){
                      
      $regex "/[^0-9.]+/";
                      if(!
      preg_match($regex$value)){
                          
      $arr_values[] = $value;
                      }else{
                          
      $arr_values[] = "'".$value."'";
                      }
                  }else{
                      
      $arr_values[] = "''";
                  }
              }
              
              
      $str_sql "INSERT INTO ".$tbl_name." (".implode(", "$arr_column).
                         
      ") VALUES(".implode(", "$arr_values).")";
              
              return 
      $str_sql;        
          } 
      Ich bräuchte in diesem Beispiel also ne Möglichkeit festzustellen ob ich nach INT casten sollte oder nicht. Ich denke so ist die Lösung ganz ok.
      Zuletzt geändert von prego; 13.03.2006, 16:49.

      Kommentar


      • #4
        einfach
        PHP-Code:
        $_POST['anzahl'] = intval($_POST['anzahl']); 
        ggf. noch min/max, z.B. das
        PHP-Code:
        $_POST['anzahl'] = max(0intval($_POST['anzahl'])); 
        wenn du nur Werte >= 0 haben willst

        Ich frage mich sowieso was das für eine MySQL-Spalte ist, dass du da entweder mit oder ohne Anführungszeichen reinschreibst. Entweder ist es int, dann funktioniert das mit dem String nicht, oder es ist varchar, dann wird ein int eh in einen String konvertiert und dann kannst du sofort schreiben
        INSERT INTO (string_spalte) VALUES ("' . $_POST['anzahl'] . '");
        unabhängig davon, ob der Wert jetzt Zahl oder String ist ^^,

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar

        Lädt...
        X