Zufallsgenerator ohne best. Zahlen

Geordi

Mitglied
[Gelößt]: Zufallsgenerator ohne best. Zahlen

Hallöchen,
folgendes Problem:
Ich brauche einen Zufallsgenerator für eine 5stellige Zufallszahl, der aber gleichzeitig in einer Datenbank nachguckt, ob diese Zahl schon existiert und wenn sie schon existiert eine neue generiert.
Geht das eleganter als mit
PHP:
$zufall = mt_rand(11111,99999);
$sqlab = "select * from DATENBANK WHERE knr = '$zufall'";
$result = mysql_db_query("geordi", $sqlab); 
while($result) {
$zufall = mt_rand(11111,99999);
$sqlab = "select * from DATENBANK WHERE knr = '$zufall'";
$result = mysql_db_query("geordi", $sqlab);
}
 
Zuletzt bearbeitet:
Hey,
ich würde eine do-while Schleife nehmen, da du min. einmal würfeln und die Datenbank abfragen musst, evtl auch mehrfach. Daher lässt die do-while Schleife deinen Code schon etwas übersichtlicher aussehen und du kannst dir den doppelten Code sparen :)

Gruß Kon
 
Ich würde es so machen :-)


Code:
do
{
      $rand  = mt_rand(11111,99999);
      $anzahl = mysql_num_fields(mysql_db_query("geordi", "select count(*) from DATENBANK WHERE knr = $rand"));
}
while($anzahl==0)
 
Danke für die antworten.
Da der aber die zahlen die es schon gibt nicht nehmen soll müsste Busi's Code dann nicht so aussehen:
PHP:
do
{
      $rand  = mt_rand(11111,99999);
      $anzahl = mysql_num_fields(mysql_db_query("geordi", "select count(*) from DATENBANK WHERE knr = $rand"));
}
while($anzahl!=0)

Solange er was findet soll er ja ne neue machen.

LG
Filip
 
Hallo,

Da der aber die zahlen die es schon gibt nicht nehmen soll müsste Busi's Code dann nicht so aussehen:
PHP:
do
{
      $rand  = mt_rand(11111,99999);
      $anzahl = mysql_num_fields(mysql_db_query("geordi", "select count(*) from DATENBANK WHERE knr = $rand"));
}
while($anzahl!=0)

Solange er was findet soll er ja ne neue machen.

So ganz stimmt das aber immer noch nicht [phpf]mysql_num_fields[/phpf] wird immer 1 zurückgeben, da wir ja mit COUNT(*) genau ein Feld selektieren (vgl. Beispiel im PHP-Manual). Das gewünschte Verhalten würde man wie folgt erhalten:
PHP:
do
{
        $zahl = mt_rand(30, 40);

        $sql = "SELECT COUNT(*) FROM news WHERE news_id = " . $zahl;
        $row = mysql_fetch_row(mysql_query($sql));
} while ($row[0] > 0);

Gruß
Marvin
 
Zurück