hsr: indexOf und NaN in PHP?

Hallo zusammen,

ich brauche so etwas wie

if ($var.indexOf(",") == 1)
{ $dau = "ja"; }

und

if (isNaN($var) == true)
{ $dau = "ja"; }

in PHP. Bin leider (in PHP) Anfaenger und bisherige Tipps an anderer Stelle waren zu "hoch" fuer mich.

Moechte die Usereingabe von Zahlen in einem input checken. Wer keine Zahlen oder "1,5" statt "1.5" angibt, soll ne Fehlermeldung erhalten.

Vielen Dank vorab.

hsr

  1. Hi,

    if ($var.indexOf(",") == 1)
    { $dau = "ja"; }

    mit strpos, kannst Du zB. gucken, ob ein Komma enthalten ist.
    http://de2.php.net/manual/de/function.strpos.php

    if (isNaN($var) == true)
    { $dau = "ja"; }

    meinst Du so etwas wie empty(), also nachschauen ob nichts drin steht?
    dann: http://de2.php.net/manual/de/function.empty.php

    generell würde ich Dir <www.php.net> ans Herz legen.

    ciao
    romy

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
    Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
    Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
    1. Hi,

      if ($var.indexOf(",") == 1)
      { $dau = "ja"; }
      mit strpos, kannst Du zB. gucken, ob ein Komma enthalten ist.
      http://de2.php.net/manual/de/function.strpos.php

      if (isNaN($var) == true)
      { $dau = "ja"; }
      meinst Du so etwas wie empty(), also nachschauen ob nichts drin steht?
      dann: http://de2.php.net/manual/de/function.empty.php

      Danke Euch beiden. Leider bin ich zu doof fuer diesen Buchstabensalat.

      if ($v < 0 || $v > 450 || !preg_match("/^\d+$/",$v))
      { die ("blabla"); }
      funktioniert bestens. Angenommen werden nur ganze Zahlen zwischen 1 und 450, bei alle anderen Zeichen wird gemeckert.

      Im zweiten Fall soll alles zwischen 0 und 4 erlaubt sein, auch Dezimalzahlen wie 1.3, aber bei Eingabe von "1,3" mit Komma statt Punkt sollte es auch die Fehlermeldung geben. Das kriege ich aber nicht gebacken leider.

      Wer erbarmt sich (*nett guck)?

      hsr

      1. Hi,

        if ($v < 0 || $v > 450 || !preg_match("/^\d+$/",$v))
        { die ("blabla"); }

        ich denke DU willst nur nach einem Komma suchen. Ein Komma ist in diesem Kontext doch immer falsch oder? Also benutze strpos(), was willst Du da mit preg_match?
        FÜr bessere Hilfe nenne mal alle Kriterien, die erfüllt werden sollen.

        ciao
        romy

        --
        DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
        sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
        Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
        Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
        1. Hi Romy,

          Du bist echt nett, vielen Dank. Warum ich was verwende, kann ich auch nicht so genau erklaeren, weil mir dazu die php-Grundlagen fehlen. Ich war auf dem preg_match-Trip, weil das bei der anderen Abfrage gut funktioniert hat.

          Ich will einfach nur eine Formularfeldeingabe pruefen.
          Eingegeben werden darf alles von 0 bis 4. Wird -5 oder 17 eingegeben, soll ein Fehler-Text erscheinen (das funzt). Erlaubt sind auch Dezimalzahlen wie 1.4. Gibt der User aber "1,4" ein (mit Komma statt Punkt), rechnet das Skript mit 1 statt "1.4". Das soll also unterbunden werden und bei Eingabe von Kommas oder Buchstaben eine Fehlermeldung erscheinen. Nun, mit strpos geht es schon besser:

          // Wert muss zwischen 0 und 4 sein
          if ($rzeit < 0 || $rzeit > 4)
          { die ("<b>Fehler:</b><br />blabla"); }

          // kein Komma darf enthalten sein
          $komma = strpos($rzeit,",");
          if ($komma == "1")
          { die ("<b>Fehler:</b><br />blabla"); }

          Ach ja, das Eingabefeld hat maxlength=3.

          So scheint es nun zu funzen (ausser bei Eingabe ",5"), ich weiss nur nicht, ob das Zufall ist oder alles so passt. Besser waere es natuerlich noch, man wuerde nur Zahlen und Punkt erlauben und alles andere verbieten.

          Viele Gruesse
          hsr

          Hi,

          if ($v < 0 || $v > 450 || !preg_match("/^\d+$/",$v))
          { die ("blabla"); }
          ich denke DU willst nur nach einem Komma suchen. Ein Komma ist in diesem Kontext doch immer falsch oder? Also benutze strpos(), was willst Du da mit preg_match?
          FÜr bessere Hilfe nenne mal alle Kriterien, die erfüllt werden sollen.

          ciao
          romy

          1. Hi,

            // kein Komma darf enthalten sein
            $komma = strpos($rzeit,",");
            if ($komma == "1")
            { die ("<b>Fehler:</b><br />blabla"); }

            So scheint es nun zu funzen (ausser bei Eingabe ",5"), ich weiss nur nicht, ob das Zufall ist oder alles so passt.

            strpos gibt die position des kommas zurück, also bei ,5 wäre das ja 0
            besser wäre eine Abfrage al la
            if(!(strpos($rzeit,",") === false))  // ja 3 = -Zeichen

            Besser waere es natuerlich noch, man wuerde nur Zahlen und Punkt erlauben und alles andere verbieten.

            dies geht allerdings nur effektiv mit reg. Ex. und preg_match
            kann ich Dir nicht helfen, habe noch zu viele Probleme damit und will nichts falsches sagen

            Du musst auch noch weiter denken, Eingaben wie zB. 95. dürfen auch nicht erlaubt sein, dass heisst, der Punkt darf nicht am Ende stehen.

            zusammen sähe das dann so aus

            if(($rzeit < 0 || $rzeit > 4) || (!(strpos($rzeit,",") === false)) || strpos($rzeit,".")==2) echo "fehler";

            ciao
            romy

            --
            DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
            sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
            Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
            Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
            1. Hi Romy aus L. an der P. (Lauf an der Pegnitz? - hm, stehe wohl gerade auf dem Schlauch),

              nochmals vielen Dank fuer Deine Muehe. Werde das heute abend noch ausfuehrlich testen, sieht gut aus.

              gtx,
              hsr

              1. Hi,

                Hi Romy aus L. an der P. (Lauf an der Pegnitz? - hm, stehe wohl gerade auf dem Schlauch),

                Leipzig an der Pleiße

                ;-)

                ciao
                romy

                --
                DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
                sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
                Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
                Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
  2. habe d'ehre

    Moechte die Usereingabe von Zahlen in einem input checken. Wer keine Zahlen oder "1,5" statt "1.5" angibt, soll ne Fehlermeldung erhalten.

    http://www.php-center.de/faq/faq-regexp.html#regexp-10

    --
    carpe diem
    Wilhelm