login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Functie looped niet (Opgelost)

Offline ikki007 - 10/01/2010 14:23 (laatste wijziging 10/01/2010 14:57)
Avatar van ikki007Gouden medailleGouden medaille

PHP ver gevorderde
Hey,


Ik gebruik de volgende functie om unieke loten te genereren:

  1. <?php
  2. function generateLotcode() {
  3. $range['alpha'] = range('a', 'f');
  4. $range['num'] = range(0, 9);
  5.  
  6. $loot = '';
  7. for($x = 1; $x <= 6; $x++) {
  8. if($x == 1) {
  9. $loot .= $range['alpha'][rand(0, 5)];
  10. } else {
  11. $loot .= $range['num'][rand(0, 9)];
  12. }
  13. }
  14. $loot = strtoupper($loot);
  15. $loot = 'X'.rand(0, 5); // testing purposes - zodat er snel een dubbel optreed want X1 en X2 staan in de database
  16. $res = mysql_query("SELECT lotcode FROM loten WHERE lotcode = '".mysql_real_escape_string($loot)."' LIMIT 1");
  17.  
  18. if(!mysql_num_rows($res)) {
  19. print 'Ok: '.$loot.' <br />'; // testing purposes
  20. return $loot;
  21. } else {
  22. print 'Dubbel: '.$loot.' <br />'; // testing purposes
  23. generateLotcode();
  24. }
  25. }
  26.  
  27. $loten = array();
  28.  
  29. for($i = 1; $i <= $aantal_loten; $i++) {
  30. $loten[] = generateLotcode();
  31. }
  32.  
  33. print '<pre>';
  34. print_r($loten);
  35. print '</pre>';
  36. ?>


Maar nu is de output bijvoorbeeld als volgt bij 6 loten:

Dubbel: X2
Ok: X0
Ok: X3
Ok: X4
Ok: X0
Dubbel: X2
Ok: X4
Ok: X3

Array
(
[0] =>
[1] => X3
[2] => X4
[3] => X0
[4] =>
[5] => X3
)


Zoals je ziet laat hij lege plekken achter waar dubbels optreden, terwijl hij net zo lang een nieuwe code moet zoeken die nog niet in gebruik is.
In praktijk zijn er 600.000 mogelijkheden dus zal een dubbel niet snel optreden, maar ik vind het toch noodzakelijk de kans in acht te nemen.

Heeft iemand enig idee waar de fout zit?


Gr Jarno

EDIT: Return vergeten..  

0 antwoorden

Gesponsorde links
Er zijn nog geen reacties op dit bericht.
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.197s