login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Controlle op invoer (Opgelost)

Offline willie - 03/11/2009 18:28
Avatar van willie0 Hoe kan ik in een formulier controleren als er alleen maar getallen worden ingevuld,
en dat er nietmeer dan 10 getallen worden ingevuld.

5 antwoorden

Gesponsorde links
Offline Erwt - 03/11/2009 18:42
Avatar van Erwt PHP beginner
  1. if(strlen($var) > 10)
  2. {
  3. echo "GROTER DAN 10";
  4. }
  5.  
  6. if(!is_numeric($var))
  7. {
  8. echo "Het is NIET numeriek";
  9. }
Offline Koen - 03/11/2009 18:43 (laatste wijziging 03/11/2009 18:45)
Avatar van Koen PHP expert Ik neem aan dat je een bepaalde userinput wilt gaan valideren en nakijken of deze enkel bestaat uit cijfers. Ik zal je aan de hand van volgend stukje code proberen duidelijk te maken hoe dit het best verloopt.
  1. <?php
  2. if($_SERVER['REQUEST_METHOD'] == 'POST')
  3. {
  4. if(isset($_POST['getal']) && ctype_digit($_POST['getal']) && strlen($_POST['getal']) <= 10)
  5. {
  6. echo 'Correct!';
  7. } else
  8. {
  9. echo 'Oeps, foutje!';
  10. }
  11. } else
  12. {
  13. ?>
  14. <form action="" method="post">
  15. Getal: <input type="text" name="getal" /><br />
  16. <input type="submit" value="Verzenden!" />
  17. </form>

Wanneer het formulier dus wordt verzonden wordt er eerst nagekeken of die waarde bestaat, daarna kijken we of het een getal is (dit doe ik met de handige functie PHP.net: ctype_digit) en als laatste kijken we of de lengte van je invoer niet langer is dan 10 tekens (met PHP.net: strlen).

Succes!

Edit: @Erwt: is_numeric laat ook 123.56, 10e+5, en dergelijke toe, dus dan bestaat de invoer niet enkel uit getallen, wat de topic starter vroeg. 
Offline NTS64 - 03/11/2009 18:43 (laatste wijziging 03/11/2009 18:45)
Avatar van NTS64 PHP gevorderde
  1. if(ctype_digit($string) AND strlen($string) < 10)
  2. {
  3. echo '$string is numeriek en korter dan 10 tekens';
  4. }


Edit @Erwt, is_numeric is niet aan te raden:
PHP.net schreef:
Finds whether the given variable is numeric. 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.


Edit2 @Koen: *zucht*  
Offline Erwt - 03/11/2009 18:45 (laatste wijziging 03/11/2009 19:34)
Avatar van Erwt PHP beginner Ahja sorry, vergeten.. ctype_digit is inderdaad beter..

Edit: Een edit is hip zie ik.

Edit door Dev: Vooral in iemand anders post.
Offline willie - 04/11/2009 19:27 (laatste wijziging 04/11/2009 19:41)
Avatar van willie 0 Ik heb het stukje van koen gebruikt,
en aangepast naar mij gebruik.
Dat werkt dus goed.
Maar eigenlijk mag het ook niet korter zijn dan 10.
Hoe los ik dat op.
Het zelfde en dan >= 10 er van maken?
==============================

Dit heb ik dus geprobeert, en het werkt goed.
Bedank voor jullie hulp.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.179s