login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP] [SQL] Nummer genereren

Offline Sar - 22/09/2007 21:32
Avatar van SarPHP interesse Hallo,

Ik ben bezig met een klein scriptje dat een nummer genereert en controlleerd in de database.

Het is de bedoeling dat het zo word:

Nummer generen
Nummer controlleren in database
Als nummer bestaat in database, nieuw nummer generen
Als nummer niet bestaat in database, toevoegen.

Weet iemand hoe ik dit kan doen? Waarschijnlijk met een loop, maar hoe?

Liefst met een klein voorbeeldje.

Btw, ik gebruik gewoon rand(1, 250) voor het genereren.

Alvast bedankt!

Grts.

7 antwoorden

Gesponsorde links
Offline ikki007 - 22/09/2007 21:54 (laatste wijziging 22/09/2007 22:02)
Avatar van ikki007 Gouden medailleGouden medaille

PHP ver gevorderde
  1. <?php
  2. $x = 1;
  3.  
  4. for($i = 1; $i < 2; $x++)
  5. {
  6. $nummer = rand(1,250);
  7.  
  8. $result = mysql_result(mysql_query("SELECT COUNT(id) FROM nummers WHERE nummer = ".$nummer.""));
  9.  
  10. if($result > 0)
  11. {
  12. $i = 3;
  13. }
  14. else
  15. {
  16. mysql_query("INSERT INTO nummers (nummer) VALUES (".$nummer.")");
  17. }
  18. }
  19.  
  20. print 'Nieuw gegenereerd nummer: '.$nummer;
  21. ?>


Zoiets?

Wsl kan dit veel beter, maar heb ff snel getikt  
Offline Sar - 22/09/2007 22:02
Avatar van Sar PHP interesse Een aantal vragen:

Waar dient $x voor?
En waarvoor $i = 3 als het in de loop niet groter mag zijn als 2?
Offline ikki007 - 22/09/2007 22:05 (laatste wijziging 22/09/2007 22:08)
Avatar van ikki007 Gouden medailleGouden medaille

PHP ver gevorderde
Die $i = 3 gebruik ik ervoor om de loop te stoppen als het cijfer bestaat.
Als je gewoon eeuwig door wil laten gaan kan je beter in 1 keer de cijfers 1 t/m 250 erin zetten.

$x gebruik ik om als de loop voltooid is iets te doen, heb namelijk nog nooit geprobeerd of het zonder 3e paramater kan.

EDIT: maarja, zoals ik al zei is er denk ik wel een betere manier en/of heb ik jou niet helemaal goed begrepen.
Nu ga ik dutten  
Offline Sar - 22/09/2007 22:17 (laatste wijziging 22/09/2007 22:18)
Avatar van Sar PHP interesse hmmm, ik ben het ff aan het proberen maar hij blijft in een ondeindige loop.

Ik heb van $nummer ook al gewoon een nummer gemaakt dat in de database bestaat en ook al geprobeert met een nummer wat niet in de database bestaat, als hij niet in de database bestaat krijg ik een loop van de foutmelding:

Warning: Wrong parameter count for mysql_result() in H:\Usb Webserver\Root\test.php on line 8

Als hij wel in de database bestaat blijf hij gewoon net zo lang laden tot dat ik hem stop.

*edit: als iemand een betere manier weet moet die het ff zegge 
Offline ikki007 - 23/09/2007 11:45 (laatste wijziging 23/09/2007 11:55)
Avatar van ikki007 Gouden medailleGouden medaille

PHP ver gevorderde
  1. <?php
  2. $x = 1;
  3.  
  4. for($i = 1; $i < 2; $x++)
  5. {
  6. $nummer = rand(1,250);
  7.  
  8. $result = mysql_query("SELECT * FROM nummers WHERE nummer = ".$nummer."");
  9. $count = @mysql_num_rows($result);
  10.  
  11. if($count > 0)
  12. {
  13. $i = 3;
  14. }
  15. else
  16. {
  17. mysql_query("INSERT INTO nummers (nummer) VALUES (".$nummer.")");
  18. }
  19. }
  20.  
  21. print 'Nieuw gegenereerd nummer: '.$nummer;
  22. ?>


Zoiets dan  
Offline bosgroen - 23/09/2007 16:56 (laatste wijziging 23/09/2007 17:04)
Avatar van bosgroen Gouden medaille

PHP interesse
voor zoiets zou ik met een while loop werken, daar er hier echt geen vooraf gedefinieerd aantal keren is dat de loop moet doorlopen worden.
(wil je toch met for werken, makkelijker is dan misschien uit de loop springen met exit();)

  1. <?php
  2. $nummer = 0;
  3.  
  4. do {
  5.  
  6. $nummer = rand(1,250);
  7. $result = mysql_query("SELECT * FROM nummers WHERE nummer = ".$nummer."");
  8. $count = @mysql_num_rows($result);
  9.  
  10. } while ( $count )
  11.  
  12. mysql_query("INSERT INTO nummers (nummer) VALUES (".$nummer.")");
  13. echo 'Nieuw gegenereerd nummer: '.$nummer;
  14.  
  15. ?>


zoiets;
als je een oneindige loop krijgt; doe dn eens dat apenstaartje weg (deze onderdrukt een mogelijke fout).

Let op, de fout in het vorige script zit er volgens mijn bescheiden mening in het niet goed snappen welke waarde $count krijgt.
Offline Sar - 23/09/2007 23:35 (laatste wijziging 23/09/2007 23:51)
Avatar van Sar PHP interesse het script van bosgroen leek me beter, het probleem is alleen dat als het nummer wel al bestaat in de database dat hij dan een oneindige loop krijgt!

Dit is wat ik geprobeert heb om het te testen:
  1. <?php
  2. $nummer = 0;
  3. do {
  4. $nummer = rand(0, 2);
  5. $result = mysql_query("SELECT * FROM users WHERE ip = ".$nummer."");
  6. $count = mysql_num_rows($result);
  7. } while ( $count );
  8. mysql_query("INSERT INTO users (ip) VALUES (".$nummer.")");
  9. echo $nummer;
  10.  
  11. ?>


Dus een nummer tussen de 0 en de 2 en heb ik 1 opgeslagen in de database, dan pakt hij gewoon 0 en/of 2 maar komt hij aan bij 1 dan krijg ik een loop
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.261s