Hej,
Jag har ett script som använder sig av mysql-databas. Jag skulle vilja veta koden för hur man gör så att scriptet tar en random rad ut databasen som har värde som är mer än 0 i kolumnenen ID
------------------
//Mikael
3 svar · 259 visningar · startad av mikaeled
Hej,
Jag har ett script som använder sig av mysql-databas. Jag skulle vilja veta koden för hur man gör så att scriptet tar en random rad ut databasen som har värde som är mer än 0 i kolumnenen ID
------------------
//Mikael
Först av allt tar du reda på det största värdet på ID, kan göras så här:
SELECT ID FROM data DESC
Sparar det första svaret i en variabel, t.ex. $lastID
Sedan använder du följande kod för att slumpa fram ett nytt ID:
$numbers = range(1,$lastID);
shuffle($numbers);
$numbers är en array med omkastade värden, ta ut det första som är ett nummer ifrån 1 till det högsta talet i kolumnen ID ifrån din databas.
SELECT * FROM data WHERE ID='$numbers[0]'
------------------
<A HREF="http://www.gaski.net" TARGET=_blank>Datorer är inte smarta, de bara tror att de är det.</A>
[Redigerat av Gaski den 07 jan 2001]
gaski, humma.. hur blire om id i databasen inte är 1,2,3,4,5 osv osv utan tex 1, 3, 7, 9 osv?
Så här hade jag gjort det, kanske funkar bättre på nåt annat sätt dock.
$db_connection = mysql_pconnect("127.0.0.1", "nobody","");
$get = mysql_db_query("somewhere","SELECT * FROM something",$db_connection);
$i=0;
$numrow = mysql_num_rows($get);
while($row = mysql_fetch_array($get)) {
$row_arr[$i][0] = $row[0];
$i++;
}
$rnd_nr = rand(1,$i);
echo $row_arr[$rnd_nr][0];
------------------
/*
Knowledge is freedom
Choice 2ooo
*/
[Redigerat av Choice den 08 jan 2001]
Detta funkar kanske? Har inte provat
(från mysql manualen)
RAND()
RAND(N)
Returns a random floating-point value in the range 0 to 1.0. If an integer argument N is specified, it is used as the seed value:
mysql> select RAND();
-> 0.5925
mysql> select RAND(20);
-> 0.1811
mysql> select RAND(20);
-> 0.1811
mysql> select RAND();
-> 0.2079
mysql> select RAND();
-> 0.7888You can't use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times. In MySQL Version 3.23, you can, however, do: SELECT * FROM table_name ORDER BY RAND() This is useful to get a random sample of a set SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000. Note that a RAND() in a WHERE clause will be re-evaluated every time the WHERE is executed.
------------------
"Där ser du. De är synthare och inte scientologer..."