Avatar billede pitzen Nybegynder
16. september 2007 - 16:57 Der er 2 kommentarer og
1 løsning

Random-funktion, men skal undgå samme værdi gentages

Hey!

På min side www.BodyStarz.dk (ADVARSEL: Nøgenhed) får man, på forsiden, genereret et tilfældigt billede. Jeg har dog et problem, da det samme billede tit dukker op 2 gange i træk eller inden for kort tid.

Jeg registrerer i forvejen IP og billede-id for alle de billede man har set, så det burde være nemt at undersøge hvilke billeder man allerede har set. Jeg har lavet følgende løsning:

$res = mysql_query("SELECT * FROM overkrop WHERE godkendt='1'") or die( mysql_error());
$count = mysql_num_rows($res) -1;
$val = RAND(0,$count);
$res = mysql_query("SELECT * FROM overkrop WHERE godkendt='1' LIMIT $val,1") or die( mysql_error());
$row = mysql_fetch_array($res);
$id = $row[id];

$result = mysql_query('SELECT * FROM id_reg_overkrop WHERE ip = "' . GetUserIP() . '" AND id = ' . $id);

while (mysql_num_rows($result) == 1)
{
   
    $val = RAND(0,$count);
    $res = mysql_query("SELECT * FROM overkrop WHERE godkendt='1' LIMIT $val,1") or die( mysql_error());
    $row = mysql_fetch_array($res);
    $id = $row[id];
    $result = mysql_query('SELECT * FROM id_reg_overkrop WHERE ip = "' . GetUserIP() . '" AND id = ' . $id);
}

Dette virker dog også, indtil man har set alle billederne, herefter kommer man ikke ud af while-løkken.

Nogen der har et forslag til at løse dette? Eller måske en helt ny måde at gribe det an..

Pf. tak!

Morten
Avatar billede nielle Nybegynder
16. september 2007 - 18:17 #1
Hvad med at sætte en counter på? For hver gang while-løkken kører tæller den 1 op. Så kan du sætte en øvre grænse på hvor mange gange den maks må køre. Bår counteren f.eks. når 10 afbryder du løkken og viser et tilfældigt billede.

BTW: MySQL har en indbygget random funktion som du kan bruge i stedet for din PHP rand:

$res = mysql_query("SELECT * FROM overkrop WHERE godkendt='1' ORDER BY rand() LIMIT 0,1") or die( mysql_error());
Avatar billede pitzen Nybegynder
17. september 2007 - 09:41 #2
Hvorfor tænkte jeg dog ik på det!? hehe

Tak for hjælpen!

Post et svar :D
Avatar billede nielle Nybegynder
17. september 2007 - 09:56 #3
Svar :^)
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