login  Naam:   Wachtwoord: 
Registreer je!
 Forum

hoe van 1 naar 0001

Offline yolk - 08/09/2006 21:36
Avatar van yolkHTML interesse Een serialnr kan variëren van 1 tot 4000. Als de waarde van $serialnr bijv. 0003 is, zet php deze om naar 3. Is er een functie ofzo om te berekenen hoeveel nullen er voor een getal moeten? En hoe sla je dit vervolgens op in de database?

9 antwoorden

Gesponsorde links
Offline Stefan14 - 08/09/2006 21:45 (laatste wijziging 08/09/2006 21:48)
Avatar van Stefan14 PHP gevorderde volgens mij geen functie voor, maar even snel uit de mouw geschud:

  1. <?php
  2. function getal($getal)
  3. {
  4. if (strlen($getal) < 4)
  5. {
  6. $aantal = strlen($getal);
  7.  
  8. switch($getal)
  9. {
  10. case $aantal == 1:
  11. $newgetal = '000'.$getal;
  12. break;
  13.  
  14. case $aantal == 2:
  15. $newgetal = '00'.$getal;
  16. break;
  17.  
  18. case $aantal == 3:
  19. $newgetal = '0'.$getal;
  20. break;
  21.  
  22. case $aantal == 4:
  23. $newgetal = $getal;
  24. break;
  25.  
  26. default:
  27. $newgetal = $getal;
  28. break;
  29. }
  30. return($newgetal);
  31. }
  32. ?>


volgens mij haalt een database in een INT veld de nullen ook weg, dus met nullen opslaan zal denk ik niet gaan, misschien wel als je het in een Varchar doet, maar dat wil ik je zeker niet aanraden.
Offline MechaVore - 08/09/2006 21:47
Avatar van MechaVore Gouden medaille

PHP gevorderde
Ook even snel uit de mouw getoverd, wel wat later maarja..
  1. <?
  2. function zerofill ($sInput, $iLength)
  3. {
  4. $iChars = strlen($sInput);
  5. $iLoop = $iLength - $iChars;
  6. $sRet = $sInput;
  7. for ($i = 0; $i < $iLoop; $i++)
  8. {
  9. $sRet = '0'.$sRet;
  10. }
  11. return $sRet;
  12. }
  13. echo zerofill(34,5);
  14. // 34 is de input, en hij moet minimaal uit 5 karakters bestaan.
  15. ?>
Offline Stefan14 - 08/09/2006 21:59 (laatste wijziging 09/09/2006 01:27)
Avatar van Stefan14 PHP gevorderde ik heb trouwens nog eens even gekeken.
En ik zie dat er ook een veldtype varbinary is, en even getest of er 0001 in kon, en dat kon, misschien dat je dit kan gebruiken,

Maar ik weet niet hoe het met de eigenschappen van dit soort velden zit, dus daar zul je nog even naar moeten kijken, of misschien dat andere leden dit weten.

Ik weet er persoonlijk geen kloten van.
Offline flyingdragon - 08/09/2006 22:07
Avatar van flyingdragon PHP beginner euh binary is 01001011101001011101 etc:p , ga je dus geen 1 - 4000 inkrijgen:s 
Offline MechaVore - 08/09/2006 22:09 (laatste wijziging 08/09/2006 22:09)
Avatar van MechaVore Gouden medaille

PHP gevorderde
als het een binair veld is kan er geen 0002 in..
Ik denk dat een varchar veld van 4/5 wel gewoon zal werken..
Misschien dat er een optie is die de nullen niet weghaald in mysql.. of een andere collatie..
Offline CDNC - 08/09/2006 22:30
Avatar van CDNC PHP ver gevorderde waarom niet vb gewoon 1 in de db steken en dan bij het uitlezen het door de functie halen? dan ken je zeker int gebruiken, niet dat ik echt op die types let.
Offline marten - 08/09/2006 22:49
Avatar van marten Beheerder Er zijn verschillende afrondingsfuncties
Kijk eens bij overzicht hiervoor.

Een voorbeeld van zo'n functie is sprint_f()
Offline yolk - 08/09/2006 23:22 (laatste wijziging 08/09/2006 23:22)
Avatar van yolk HTML interesse Ik heb volgens mij iets beters gevonden: http://nl3.php.net/str-pad

  1. $input = "Alien";
  2. print str_pad($input, 10); // produceert "Alien "
  3. print str_pad($input, 10, "-=", STR_PAD_LEFT); // produceert "-=-=-Alien"
  4. print str_pad($input, 10, "_", STR_PAD_BOTH); // produceert "__Alien___"
Offline Martijn1989 - 09/09/2006 12:15 (laatste wijziging 09/09/2006 12:15)
Avatar van Martijn1989 PHP ver gevorderde Dit is het beste :

  1. <?php
  2.  
  3. $input = "34";
  4.  
  5. $input = str_pad($input, 4, "0", STR_PAD_LEFT); // produceert "0034"
  6.  
  7. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.343s