Überprüfen ob Wert eine Zahl ist!

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

  • Überprüfen ob Wert eine Zahl ist!

    Hallo leute,

    mein problem heute: Ich habe ein Formular wo man Mitglieder suchen kann und ich möchte ein Feld machen "Max Trefferzahl" wo ich dann bei der abfrage machen kann "LIMIT $maxanzahl"

    nun meine frage, wie kann ich testen ob der wert anzahl eine zahl ist? mit
    PHP-Code:
    if($_POST['anzahl']=="") { echo "Keine Trefferanzahl angegeben!";  exit; } 

    teste ich ob überhaupt was angegen wurde, ich könnte ja machen
    PHP-Code:
    if($_POST['anzahl']!="1"
    if(
    $_POST['anzahl']!="2"
    if(
    $_POST['anzahl']!="3"
    ....
    if(
    $_POST['anzahl']!="99"
    aber das dauert mit zu lang! von daher gibts da ne möglichkeit zu testen ob $_POST['anzahl'] eine zahl ist und kein buchstabe?

  • #2
    Also erstens überprüfst du oben ob der Wert ein String ist und nicht ob es eine Zahl ist.

    Ansonsten kannst du verwenden:

    if (($zahl = intval($_POST['zahl'])) != 0)


    oder

    ctype_digit
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      THX!

      Kommentar


      • #4
        is_numeric() ;>
        "I am what I am and I do what I can..."
        Meine HP -- Mein GPG-Key
        Meine Projekte: WebStorage 2.0 -- easyAJAX-Chat 2.2.0 (beta)

        Kommentar


        • #5
          nOe, dem herrn gehts um eine "anzahl", das sind i.d.r. natürliche zahlen.

          is_numeric erlaubt mehr:
          Numeric strings consist of optional sign, any number of digits, optional decimal part and optional exponential part. Thus +0123.45e6 is a valid numeric value. Hexadecimal notation (0xFF) is allowed too but only without sign, decimal and exponential part.

          Kommentar


          • #6
            if(!($zahl % 2)) echo 'natürliche zahl';
            Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
            - ...und solche Behauptungen in "falsches Resourcenmanagement"

            Kommentar


            • #7
              $zahl = 3

              nein, besser ist shurakais lösung mit "> 0".

              Kommentar


              • #8
                @zerni: Das sollte nicht funktionieren.

                Denn wenn $zahl = 1 ist, dann ist 1 % 2 = 1 und !1 = 0 und if (0) ist äquivalent zu if (false) und damit wäre 1 keine natürliche zahl.
                Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                var_dump(), print_r(), debug_backtrace und echo.
                Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                Kommentar


                • #9
                  Original geschrieben von Shurakai
                  Denn wenn $zahl = 1 ist, dann ist 1 % 2 = 1 und !1 = 0 und if (0) ist äquivalent zu if (false) und damit wäre 1 keine natürliche zahl.
                  So fachchinesisch redet mein Deutschlehrer auch immer, ich versteh' daher kaum ein Wort davon. Gottseidank weiß ich, wie du das programmiertechnisch meinst
                  "I am what I am and I do what I can..."
                  Meine HP -- Mein GPG-Key
                  Meine Projekte: WebStorage 2.0 -- easyAJAX-Chat 2.2.0 (beta)

                  Kommentar


                  • #10
                    ah verdammt sry hatte mich vertan, ich meinte:

                    if($zahl % 1 > 1) echo 'natürliche zahl';

                    ich bin mir jetzt grad nicht sicher ob alles unter <1 automatisch false ist?
                    Zuletzt geändert von zerni; 24.03.2007, 14:21.
                    Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
                    - ...und solche Behauptungen in "falsches Resourcenmanagement"

                    Kommentar


                    • #11
                      nein, -1 ist auch true, weil ungleich null.

                      und nochmal: $zahl = 1. und bevor du ein "größer gleich" draus machst:
                      $zahl = 2,1;

                      Kommentar


                      • #12
                        hä?

                        -1 % 1 = 0

                        und natürliche Zahlen sind im Normalfall auch nur positiv?

                        EDIT:
                        ok hab mal eben was in nem PHP-Script getestet:

                        0 % 1 = 0
                        0.1 % 1 = 0
                        0.2 % 1 = 0
                        0.3 % 1 = 0
                        0.4 % 1 = 0
                        0.5 % 1 = 0
                        0.6 % 1 = 0
                        0.7 % 1 = 0
                        0.8 % 1 = 0
                        0.9 % 1 = 0
                        1 % 1 = 0
                        1.1 % 1 = 0
                        1.2 % 1 = 0
                        1.3 % 1 = 0
                        1.4 % 1 = 0
                        1.5 % 1 = 0
                        1.6 % 1 = 0
                        1.7 % 1 = 0
                        1.8 % 1 = 0
                        1.9 % 1 = 0
                        2 % 1 = 0

                        Wie kann das sein? Im Windows rechner gibt 0.1 % 1 = 0.1?
                        PHP-Code:
                        for($i 0$i <= 20;$i++){
                           echo (
                        $i*0.1).' % 1 = '.(($i*0.1)%1).'<br>';


                        Zuletzt geändert von zerni; 24.03.2007, 15:33.
                        Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
                        - ...und solche Behauptungen in "falsches Resourcenmanagement"

                        Kommentar


                        • #13
                          hä?
                          PHP-Code:
                          if ( -== true ) echo 'ich hab verstanden, was penizillin meinte'
                          und natürliche Zahlen sind im Normalfall auch nur positiv?
                          nein, sie sind _immer_ nicht-negativ

                          Wie kann das sein?
                          modulo-operation ist i.a. nur für ganze zahlen definiert. vermutlich castet php die linke seite implizit nach integer.

                          Kommentar


                          • #14
                            achso ok..dann wars mein Fehler dachte das ging bei reelen Zahlen
                            Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
                            - ...und solche Behauptungen in "falsches Resourcenmanagement"

                            Kommentar

                            Lädt...
                            X