Anzeige:
Ergebnis 1 bis 14 von 14

Thema: Ist $_POST[var] ein Integer?

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.07.2005
    Beiträge
    52

    Ist $_POST[var] ein Integer?

    Hi Leute,

    ich habe ein Problem, womit ich leider nicht zurecht komme.
    Und zwar soll in einem Formular ein Wert eingegeben werde, dies soll eine
    positive ganze Zahl sein. Wie kann ich jetzt ueberpruefen, ob dies auch eine positive
    ganze Zahl ist?

    $_POST[var] ist die Variable die ich wissen moechte.
    Ich hoffe das Ihr mir weiterhelfen koennt.

    PS: mit is_int() geht es leider net, da die Variable ein String ist.

  2. #2
    Registrierter Benutzer
    Registriert seit
    07.10.2003
    Ort
    München
    Beiträge
    29
    Hi!

    Vielleicht hilft dir die Funktion:

    if(settype ( $_POST[var], "integer" )){
    echo "Erfolg";
    }

    Aber schau dir die Referenz an:
    http://de3.php.net/manual/de/function.settype.php
    Es werden auch Strings mit Buchstaben und Zahlen in Zahlen umgewandelt...

    sg.

  3. #3
    Registrierter Benutzer
    Registriert seit
    15.07.2005
    Beiträge
    52
    Zitat Zitat von inner.glow
    Hi!

    Vielleicht hilft dir die Funktion:

    if(settype ( $_POST[var], "integer" )){
    echo "Erfolg";
    }

    Aber schau dir die Referenz an:
    http://de3.php.net/manual/de/function.settype.php
    Es werden auch Strings mit Buchstaben und Zahlen in Zahlen umgewandelt...

    sg.
    Das er die Buchstaben auch als Zahlen umwandelt, gerade das will ich ja nicht, ich will einfach nur wissen, ob das was eingegeben wurde eine positive Ganze Zahl ist.
    Leider finde ich keine Lösung...

  4. #4
    Registrierter Benutzer
    Registriert seit
    11.03.2004
    Beiträge
    7

    Lightbulb

    Hi

    ich würde das mit dem folgend Beispiel probieren.
    Code:
    <?php 
    if(preg_match("/\d+/",$_POST['var']) {
      echo "Variable ist Zahl";
    } else {
      echo "Variable ist keine Zahl";
    }
    ?>
    Sicherlich nicht die eleganteste Lösung, sollte aber für den Anfang reichen.


    waxman

  5. #5
    Registrierter Benutzer
    Registriert seit
    15.07.2005
    Beiträge
    52
    Zitat Zitat von waxman
    Hi

    ich würde das mit dem folgend Beispiel probieren.
    Code:
    <?php 
    if(preg_match("/\d+/",$_POST['var']) {
      echo "Variable ist Zahl";
    } else {
      echo "Variable ist keine Zahl";
    }
    ?>
    Sicherlich nicht die eleganteste Lösung, sollte aber für den Anfang reichen.


    waxman
    kannst du mir vielleicht auch erklaeren, was dort gemacht wird, im speziellen der preg_match befehl? (d+) ?

    edit: also es wird nach digits durchsucht. Wird dort dann auch true gesetzt wenn soetwas drin steht "zz3zz"?
    Geändert von tybalt0125 (15-02-2006 um 12:28 Uhr)

  6. #6
    Registrierter Benutzer
    Registriert seit
    11.03.2004
    Beiträge
    7
    Siehe nächstes Posting.

    Bin noch nicht ganz da.
    Geändert von waxman (15-02-2006 um 12:35 Uhr)

  7. #7
    Registrierter Benutzer
    Registriert seit
    11.03.2004
    Beiträge
    7
    Hi.

    preg_match vergleicht einen String mit einem Regular Expression. In dem Fall habe ich \d genommen, welches laut dem Manual die Zahlen von 0 bis 9 representiert. Das Pluszeichen dahinter gibt an, dass 1 oder n Zahlen gefunden werden sollen.

    Nun gibt preg_match auch noch die Anzahl der gefundenen Ergebnisse zurück. In dem Fall die Häufigkeit einer Zahl mit der Länge n. D.h. wenn die Variable $_POST['var'] = 23 definiert ist, gibt die If-Abfrage ein "Variable ist Zahl" zurück.

    Wie schon gesagt, dass ist keine elegante Lösung und du bist gerne eingeladen etwas besseres zu finden



    edit: ja es wird auch sowas wie "zzz3zzz" gefunden, aber dafür muss man das RegEx nur minimal ändern. Ne idee wäre dann "/^\d+$/" zu benutzen.

  8. #8
    Registrierter Benutzer
    Registriert seit
    15.07.2005
    Beiträge
    52
    Ok, ich werde das mal versuchen. Leider habe ich auch nur so eine Lösung gefunden. Wenn ich was anderes finden sollte, dann werde ich mich hier nochmal melden.
    Vielleicht ist ja auch noch jemand anderes mit einer anderen Lösung da und wird sie posten.

    thx erstmal

  9. #9
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Die Antwort auf deinen Beitragstitel ist ganz einfach Nein
    POST ist der Mime-Typ oder ENCTYPE application/x-www-form-urlencoded, das Programm erhält die kodierte Formulareingabe in der Standardeingabe. Der Server sendet kein EOF, sondern an Hand der Environmentvariablen CONTENT_LENGTH.
    Dies kannst du ganz einfach sehen wenn du ein
    PHP-Code:
    var_dump"<pre>"$_POST"</pre>" ); 
    auf deine Post Variablen machst.
    Wenn du eine $_POST Variable auf einen Integer Wert prüfen möchtest musst du ein hinting verwenden.
    PHP-Code:
    if ( isset( $_POST['meinVar'] ) && (int)$_POST['meinVar'] != ) { ... } 
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  10. #10
    Registrierter Benutzer
    Registriert seit
    15.10.2005
    Ort
    Franken
    Beiträge
    362
    is_integer()

    Mehr sag ich net. Weil mehr braucht man dazu net sagen.
    Dank der Rekursion kann ich IF-Schleifen bauen.

    In neuem Glanz: www.turbohummel.de

  11. #11
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Zitat Zitat von Turbohummel
    is_integer() Mehr sag ich net. Weil mehr braucht man dazu net sagen.
    Stimmt weil du komplett daneben liegst
    PS: mit is_int() geht es leider net, da die Variable ein String ist.
    http://www.php.net/manual/de/languag...e-juggling.phpis_integer -- Prüft, ob eine Variable vom Typ integer ist
    Geändert von undefined (15-02-2006 um 19:59 Uhr)
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  12. #12
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Noch a bissle Senf

    Daten die mit GET oder Post versenden werden sind generell Strings.
    Von daher kann man auch nur für die Prüfung, Funktionen verwenden
    die Strings als Parameter erwarten.
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  13. #13
    Registrierter Benutzer
    Registriert seit
    15.10.2005
    Ort
    Franken
    Beiträge
    362
    Ok, vielleicht sollte man nach 10 Stunden Arbeit doch 2 mal denken.

    is_integer ist eine Funktion meiner Klasse RemoteData, die eben diese Werte prüft. Intern ist das auch über einen PregMatch gelöst, wie er oben schon mal gepostet wurde.

    Allerdings möchte ich anmerken, dass intVal() oder (int)$_POST['var'] in der Regel ausreicht.
    Dank der Rekursion kann ich IF-Schleifen bauen.

    In neuem Glanz: www.turbohummel.de

  14. #14
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von Turbohummel
    Ok, vielleicht sollte man nach 10 Stunden Arbeit doch 2 mal denken.
    Ist doch nicht weiter schlimm.
    Das ist eben eine klassische Bauernfalle.
    Wenn man nicht weiter kommt,
    einfach mit gettype() o. ä. nachschauen.
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •