Avatar billede vacdk Nybegynder
02. april 2004 - 14:38 Der er 7 kommentarer

Problemer med unik random

Hejsa..
Har lige en lille opgave til jer garvede scriptere.

Jeg er i gang med at lave en random udtrækning fra 10000 til 20000
Dette fungere fint.. det jeg så ikke rigtig kan få til at virke er at den skal udtrække et random mellem 10000 - 20000 derefter skal den smide det ind i en db (intet problem) , det der så er det svære er at de tal som er udtrækket ikke må udtrækkes igen, det vil sige at hvert random udtrækning skal være unik :)

plz help
Avatar billede Slettet bruger
02. april 2004 - 15:22 #1
Du kan vel ikke undgå en chance på 1:10000 på, at det samme tal til sidst vil blive udtrukket to gange.

Men hvis du mener at der ikke må være to ens tabeller i databasen, så skal du bare gøre tabellens kolonne unik. Derved vil der istedet komme en dabase-fejl, hvis et tal der allerede eksisterer, forsøges at blive indsat.

Denne fejl kan du jo så bygge videre på, scriptmæssigt - så hvis den støder på denne fejl, skal den udtrække et random tal igen, indtil den trækker et tal der ikke allerede eksisterer.
Avatar billede domaz.dk Novice
02. april 2004 - 15:37 #2
while ($a != 1) {

$unik_tal = rand(10000, 20000);

if (in_array($unik_tal, $database_tal)) {
$a = 1;
}

}


hmm... ikk testet i praktis... :P
Avatar billede olebole Juniormester
03. april 2004 - 14:43 #3
<ole>

1. Gør kolonnen unik.
2. Lav et tilfældigt tal.
3. Prøv at sætte det ind i tabellen og undertryk evt.fejl med '@'.
4. Får du en MySQL-fejl med nummeret '1062' (Duplicate entry), laver du et nyt tal og prøver igen.

<?
  // Find et tal
  $sql = "INSERT INTO .....";
  $res = @mysql_query($sql);
  if (mysql_errno==1062) {
    // Prøv igen
  }
?>

/mvh
</bole>
Avatar billede Slettet bruger
03. april 2004 - 17:03 #4
<olebole> : Helt sikkert, jeg var ikke klar over om det vil virke. Hurra for intuition. :P
Avatar billede Slettet bruger
03. april 2004 - 17:17 #5
Hov. Det skulle ikke have været et svar.
Avatar billede vacdk Nybegynder
05. april 2004 - 08:50 #6
hmm, ja, men det med error kan jo bare gøres så den tjekker i databasen om nr. står der, ??? ik logisk med den error der :( men det jeg gerne vil er at den skal tjekke alle tabller inden den smider et nyt nr. ind ellers skal jeg jo lave 10000 if'er :)
Avatar billede Slettet bruger
05. april 2004 - 21:07 #7
Så skal du lave en SQL query i dit php script.

Den skal så være noget á la
"SELECT kolonne FROM table WHERE random_nummer = 'rand(10000, 20000)'"

Hvis du så får en row returneret, skal du køre rand(); igen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester