Formular nur mit Zahl im Feld weiterleiten

  • Hallo!


    Bin auf derPHP-Kurs Seite ganz unten, bei der Aufgabe die Variable $_GET['Anzahl']
    darauf zu prüfen ob sie eine Zahl enthält.


    Ich habe einen Test code gebastelt wo ich Versuche mein Problem auf das Wesentliche zu reduzieren.(Deshalb ander Bezeichnung der Variablen)

    Zuerst baue ich das Formular mit einem Feld type="hidden" und frage dann ob es gesendet wurde und weise mit !eregi der variable §_GET mit dem Wert ['zahl'] an , das sie keine Zeichen von A-Z , unabhängig von Groß- oder Kleinschreibung enthalten darf. (Meine Interpretation)



    wenn ich AND definiere wird bei Leereingabe kein Hinweis(Das Feld darf nicht frei bleiben und darf keine Buchstaben enthalten!) mehr gesendet?


    Doch wenn ich OR angebe wird auch bei der Eingabe einer Zahl der Hinweis(Das Feld darf nicht frei bleiben und darf keine Buchstaben enthalten!) gesendet!?


    Meine Frage lautet:
    Wie lautet der Befehl, der dem Programm anweist, zu prüfen ob das Feld frei ist oder ein Buchstabe eingefügt wurde, um wenn eine Zahl eingegeben worden ist, weiter zu

    Code
    echo 'Super!';
    echo '<br />';
    echo 'Angabe ist die Zahl: ';
    echo $_GET['zahl'];


    leiten.


    Ich bitte darum mich bei allen Kleinigkeiten zu korigieren ( wenn man den darauf Lust und die Zeit dazu hat )^^
    Und weise darauf hin das es meine ersten Stunden mit der Script-Sprache PHP sind!


    Schönen Abend


    mfG


    ^^

  • Da können wir doch helfen :P


    Probiere mal so:


    PHP
    <span class="syntaxdefault"><br /><br />  $var </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 1</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">  if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">is_numeric</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$var</span><span class="syntaxkeyword">))<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">{<br /><br /></span><span class="syntaxdefault">    print </span><span class="syntaxstring">'$var ist eine Zahl!'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault">  </span><span class="syntaxcomment">################<br /></span><span class="syntaxdefault">  </span><span class="syntaxcomment"># Oder deine Variablen:<br /></span><span class="syntaxdefault">  </span><span class="syntaxcomment">################<br /><br /></span><span class="syntaxdefault">  if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">is_numeric</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'zahl'</span><span class="syntaxkeyword">]))<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">{<br /><br /></span><span class="syntaxdefault">    print </span><span class="syntaxstring">'Eingabe ist eine Zahl!'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">}</span><span class="syntaxdefault">  <br /><br /> </span>




    Kurze Hilfestellung zu is_numeric:


    PHP
    <span class="syntaxdefault"><br />  if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">is_numeric</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'fuenf'</span><span class="syntaxkeyword">))</span><span class="syntaxdefault">   </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">/* falsch */</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault">  if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">is_numeric</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">5</span><span class="syntaxkeyword">))</span><span class="syntaxdefault">         </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">/* wahr */</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">  if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">is_numeric</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'5'</span><span class="syntaxkeyword">))</span><span class="syntaxdefault">       </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">/* wahr */</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault">  if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">is_numeric</span><span class="syntaxkeyword">(-</span><span class="syntaxdefault">5</span><span class="syntaxkeyword">))</span><span class="syntaxdefault">        </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">/* wahr */</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">  if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">is_numeric</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'-5'</span><span class="syntaxkeyword">))</span><span class="syntaxdefault">      </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">/* wahr */</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault">  if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">is_numeric</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">0.54</span><span class="syntaxkeyword">))</span><span class="syntaxdefault">      </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">/* wahr */</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">  if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">is_numeric</span><span class="syntaxkeyword">(-</span><span class="syntaxdefault">17.92657</span><span class="syntaxkeyword">))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">/* wahr */</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault">  $zahl1 </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 7</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">  if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">is_numeric</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$zahl1</span><span class="syntaxkeyword">))</span><span class="syntaxdefault">    </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">/* wahr */</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault">  $zahl2 </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'elf'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">  if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">is_numeric</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$zahl2</span><span class="syntaxkeyword">))</span><span class="syntaxdefault">    </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">/* falsch */</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> </span>


    Was du möchtest sieht in etwa so aus:


    PHP
    <span class="syntaxdefault"><br />  $zahl </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'zahl'</span><span class="syntaxkeyword">];<br /><br /></span><span class="syntaxdefault">  if</span><span class="syntaxkeyword">(</span><span class="syntaxstring">''</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> $zahl AND is_numeric</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$zahl</span><span class="syntaxkeyword">))<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// zahl ist ausgefüllt UND es ist eine zahl<br /><br /></span><span class="syntaxdefault">    print </span><span class="syntaxstring">'<p>Bei der Eingabe handelt es sich um eine Zahl!</p>'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">  elseif</span><span class="syntaxkeyword">(</span><span class="syntaxstring">''</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> $zahl</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// zahl ist leer, O.o<br /><br /></span><span class="syntaxdefault">    print </span><span class="syntaxstring">'<p>Zahl nicht ausgef&uuml;llt!</p>'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">  elseif</span><span class="syntaxkeyword">(!</span><span class="syntaxdefault">is_numeric</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$zahl</span><span class="syntaxkeyword">))<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// zahl ist keine zahl, hö?<br /><br /></span><span class="syntaxdefault">    print </span><span class="syntaxstring">'<p>Zahl ist keine Zahl...</p>'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> </span>


    Du kannst das auch mit regulären Ausdrücken regeln aber das ist ein wenig komplizierter und das verrate ich dir auch nur wenn du lieb fragst :)


    Ich denke das würde dich nur verwirren.

  • Hallo Basiii!


    Erstmal vielen Dank für deine Hilfestellung^^


    Ich hab deinen Vorschlag auch gleich ausprobiert und habe, dank diesem, eine Lösung finden können (nach laangem Probieren^^)
    Hier ein Link, zum testen:-)
    Und hier auch noch der Code:



    Würd mich interessieren wie du das lösen würdest^^
    Oder wie du meine Lösung bewertest (richtet sich @all)^^


    Vielen dank nochmal für deine Unterstützung!!


    mfG


    ^^

  • Ich hätte das in etwa so geregelt:


    PHP
    <span class="syntaxdefault"><br /><br />  $formular </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'<br />    <form action="'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> $_SERVER</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'PHP_SELF'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxstring">'" method="post"><br />      <p><br />        Vorname: <br /><br />        <input type="text" name="vorname" /><br />      </p><br />      <p><br />        Nachname: <br /><br />        <input type="text" name="name" /><br />      </p><br />      <p><br />        Anzahl Personen: <br /><br />        <input type="text" name="anzahl" /><br />      </p><br />      <p><br />        <input type="hidden" name="send" value="true" /><br />        <input type="submit" value="Eintragen" /><br />      </p><br />    </form><br />  '</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">@</span><span class="syntaxdefault">$send    </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'send'</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">@</span><span class="syntaxdefault">$vorname </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'vorname'</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">@</span><span class="syntaxdefault">$name    </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">@</span><span class="syntaxdefault">$anzahl  </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'anzahl'</span><span class="syntaxkeyword">];<br /><br /></span><span class="syntaxdefault">  if</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'true'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> $send</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// überprüfung<br /><br /></span><span class="syntaxdefault">    if</span><span class="syntaxkeyword">(</span><span class="syntaxstring">''</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> $vorname AND </span><span class="syntaxstring">''</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> $name AND </span><span class="syntaxstring">''</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> $anzahl AND is_numeric</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$anzahl</span><span class="syntaxkeyword">))<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// alles ausgefüllt<br /><br /></span><span class="syntaxdefault">      print </span><span class="syntaxstring">'<p style="color: #00C300; font-weight: bold;">Daten erfolgreich eingetragen!</p>'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">    else<br />    </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// da fehlt was, formular anzeigen, dann fehler auflisten<br /><br /></span><span class="syntaxdefault">      print $formular</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault">    if</span><span class="syntaxkeyword">(</span><span class="syntaxstring">''</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> $vorname</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">{<br /><br /></span><span class="syntaxdefault">      print </span><span class="syntaxstring">'<p style="color: #FF0000; font-weight: bold;">Bitte Vornamen eintragen!</p>'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault">    if</span><span class="syntaxkeyword">(</span><span class="syntaxstring">''</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> $name</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">{<br /><br /></span><span class="syntaxdefault">      print </span><span class="syntaxstring">'<p style="color: #FF0000; font-weight: bold;">Bitte Nachnamen eintragen!</p>'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault">    if</span><span class="syntaxkeyword">(</span><span class="syntaxstring">''</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> $anzahl</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">{<br /><br /></span><span class="syntaxdefault">      print </span><span class="syntaxstring">'<p style="color: #FF0000; font-weight: bold;">Bitte Anzahl der gew&uuml;nschten Pl&auml;tze eintragen!</p>'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault">    if</span><span class="syntaxkeyword">(</span><span class="syntaxstring">''</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> $anzahl AND </span><span class="syntaxkeyword">!</span><span class="syntaxdefault">is_numeric</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$anzahl</span><span class="syntaxkeyword">))<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">{<br /><br /></span><span class="syntaxdefault">      print </span><span class="syntaxstring">'<p style="color: #FF0000; font-weight: bold;">Anzahl ist leider keine Zahl!</p>'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">  else<br />  </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// formular noch nicht abgesendet<br /><br /></span><span class="syntaxdefault">    print $formular</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> </span>


    Allerdings ist das die Grundfunktion, damit das wirklich gut ist fehlt natürlich noch einiges, der Benutzer kann bei Vorname immer noch etwas eintragen wie z.B. &JSHGvg3578KUZ($)/(Z&%"!§uhIZVI, und es fehlt auch noch das Eingabefeld für die E-Mailadresse zur Bestätigung der anmeldung, die muss auch noch validiert werden (regulärer Ausdruck).


    Aber das was du wolltest beinhaltet das allemal :wink: (axel die smilies sind doch kacke... : D)

  • Oh..


    Für deine Variante... ich denke da brauch ich noch ein "bißchen" ^^


    Zu diesem Zeitpunkt bin ich zufrieden.


    Hatte is_numeric schon ins Auge gefasst, aber dann (weiß Gott warum) wieder davon abgekommen.*rumred*


    Noch ein Frage habe ich:


    Gehe ich richtig in der Annahme daß das ! die "Sache" umkehrt vor der es steht?


    Also


    is_numeric


    ist das Gegenteil von


    !is_numeric


    ???


    mfG
    ^^

  • Hey Peter,


    zu deiner Frage, das ! kehrt nicht direkt um, es sieht wie folgt aus:


    PHP
    <span class="syntaxdefault"><br />  </span><span class="syntaxkeyword">if(</span><span class="syntaxdefault">is_numeric</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">5</span><span class="syntaxkeyword">)){ ...<br /><br />  </span><span class="syntaxcomment">// gleichzusetzen mit:<br /><br />  </span><span class="syntaxkeyword">if(</span><span class="syntaxdefault">is_numeric</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">5</span><span class="syntaxkeyword">) == </span><span class="syntaxdefault">true</span><span class="syntaxkeyword">){ ...<br /> </span><span class="syntaxdefault"></span>


    PHP
    <span class="syntaxdefault"><br />  </span><span class="syntaxkeyword">if(!</span><span class="syntaxdefault">is_numeric</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">5</span><span class="syntaxkeyword">)){ ...<br /><br />  </span><span class="syntaxcomment">// gleichzusetzen mit:<br /><br />  </span><span class="syntaxkeyword">if(</span><span class="syntaxdefault">is_numeric</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">5</span><span class="syntaxkeyword">) == </span><span class="syntaxdefault">false</span><span class="syntaxkeyword">){ ...<br /> </span><span class="syntaxdefault"></span>


    Meine Variante versachtelt letztendlich nur die if Abfragen etwas mehr miteinander.

  • Hey wo wir hier mal von Zahlen gesprochen haben, hier eine Möglichkeit zu prüfen ob es sich um eine Kommazahl oder eine Nichtkommazahl handelt:


    PHP
    <span class="syntaxdefault"><br /><br />  </span><span class="syntaxkeyword">if(</span><span class="syntaxdefault">is_int</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">)){</span><span class="syntaxcomment">/* trifft zu */</span><span class="syntaxkeyword">}<br />  if(</span><span class="syntaxdefault">is_int</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">3.7</span><span class="syntaxkeyword">)){</span><span class="syntaxcomment">/* trifft nicht zu */</span><span class="syntaxkeyword">}<br /><br />  if(</span><span class="syntaxdefault">is_float</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">)){</span><span class="syntaxcomment">/* trifft nicht zu */</span><span class="syntaxkeyword">}<br />  if(</span><span class="syntaxdefault">is_float</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">3.7</span><span class="syntaxkeyword">)){</span><span class="syntaxcomment">/* trifft zu */</span><span class="syntaxkeyword">}<br /><br /> </span><span class="syntaxdefault"></span>

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!