Jeg bruger den her kommando i et random bannersystem
$BannerQuery = mysql_query(\"SELECT BannerID, Banner, URL, ((BannerID*0)+rand()) AS RandomID FROM $db_table WHERE (((UserID=\'$ID\')AND(Size=\'$Size\'))AND((CountDisplay < MaxDisplay)OR(MaxDisplay = -1))) ORDER BY RandomID LIMIT 0, 1\") or returnDefault(\"error\", $defaultBanner);
Det jeg gør er at tage mit ID felt og ganger med nul... Det giver nul. Derefter ligger jeg et random tal til mellem 0 og 1... Sorter på dette random felt og begræns dit resultat med LIMIT til kun ét svar.
halnet >> du bruger meget overhead ved flere databaseopslag... Prøv altid at begrænse dine opslag i databasen - en database er hurtigere til at processere end PHP nogensinde vil være.
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.7888
You 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.
dbConnect(); $sql = \"SELECT * FROM sog_info WHERE kat $type \'13%\' ORDER BY RAND() LIMIT 0,1\"; $res = mysql_db_query($db, $sql); $row = mysql_fetch_array($res); Header(\"Location: redir.php?url=$row[url]\");
Ehhhmmm, bare lige en kommentar: Hvis rand() giver problemer i MySQL......er det fordi denne funktion først er understøttet fra version 3.23........... Version 3.22 er den seneste stable release og det er det de fleste produktionsmaskiner kører med. Jeg har selv opdateret til version 3.23 på min udviklingsmaskine men det anbefaler man ikke til produktionsmaskiner.
btw, så kom der et 0 for meget på da jeg skulle give points, men man kan desværre ikke trække fra ;)
Synes godt om
Ny brugerNybegynder
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.