Random-funktion

Tags:    php

Hej,
jeg er igang med et random-system til min hjemmeside, hvor den vælger et tilfældigt id fra min database.

Jeg ved bare ikke hvordan man laver sådan en funktion, da jeg aldrig har lavet en før..

-Venter på svar..


--------------------
Teaching is nessesary for others to learn.



7 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Brug funktionen rand (http://php.net/rand)

Det kræver to argumenter, minimum og maximum. Det vil sige at rand(1, 6) vil give dig et tilfældigt tal mellem 1 og 6.

Dette virker selvfølgelig kun hvis rækkerne i din database, alle har id i rækkefølge. Altså 1, 2, 3, osv. Hvis der er "huller", kan du fx benytte en while løkke, der først stopper når den har taget et tal der er i databasen.

<pre>while(!in_array($id, $array)){
$id = rand($min, $max);
}</pre>
Håber det er svar nok



Indlæg senest redigeret d. 09.02.2010 14:58 af Bruger #6300
Du kan vel starte med at finde antal forekomster (maks id):
$n = mysql_num_rows ($res);
Hvor $res selvfølgelig er din mysql-query.

Dernæst tildeler du et tilfældigt tal hvor min må være een (i så fald at dit id starter med 1) maks er antallet af forekomster.
$rand_tal = rand(1,$n);

Og når du så har det tilfældige tal, kan du jo bruge dette i en ny mysql-query og trække ud where id='$rand_tal';

nå... jeg er vidst lidt for langsom :)

[Redigeret d. 23/07-05 16:35:50 af Simon Jensen]



Det nemmeste er jo bare at gøre sådan her:

$q = mysql_query("select * from tabel order by rand() limit 1") or die(mysql_error());
while ($row = mysql_fetch_array($q)) {
print $row[id];
}



Så det her skulle virke?

<?
include("tilslut.php");
$query = mysql_query("SELECT * FROM affiliates where id = '$rand_tal'") or die(mysql_error());
$row = mysql_fetch_assoc($query);
$n = mysql_num_rows ($query);
$rand_tal = rand(1,$n);
?>

Det gør det bare ikke, da den ikke vælger et id..

--------------------
Teaching is nessesary for others to learn.

[Redigeret d. 23/07-05 17:06:42 af None]



Så det her skulle virke?

<?
include("tilslut.php");
$query = mysql_query("SELECT * FROM affiliates where id = '$rand_tal'") or die(mysql_error());
$row = mysql_fetch_assoc($query);
$n = mysql_num_rows ($query);
$rand_tal = rand(1,$n);
?>

Det gør det bare ikke, da den ikke vælger et id..


Nej det virker nemlig ikke.
Det jeg mente var:
Fold kodeboks ind/udKode 


Men den letteste metode er vidst nævnt, så det kan jo være ligegyldigt.



*Lige meget*



Indlæg senest redigeret d. 09.02.2010 14:58 af Bruger #6300
Så det her skulle virke?

<?
include("tilslut.php");
$query = mysql_query("SELECT * FROM affiliates where id = '$rand_tal'") or die(mysql_error());
$row = mysql_fetch_assoc($query);
$n = mysql_num_rows ($query);
$rand_tal = rand(1,$n);
?>

Det gør det bare ikke, da den ikke vælger et id..


Nej det virker nemlig ikke.
Det jeg mente var:
Fold kodeboks ind/udKode 


Men den letteste metode er vidst nævnt, så det kan jo være ligegyldigt.

Det vil ikke virke da en tabel godt kan være sådan:
id
--
1
2
3
5
6
7

Så kan den ramme hverken ramme nr. 4(som har værdien 5), eller den sidste i rækken.
istedet mener jeg at man kan gøre noget lignende:
Fold kodeboks ind/udKode 


Hilsen Mathias



t