$sql = "SELECT * FROM reklamer";
$result = mysql_query($sql);
$antal = mysql_num_rows($result);
$sql = "SELECT * FROM reklamer WHERE (en kolonne med id) ='".rand(0, $antal)."'");
$result = mysql_query($sql);
--
Hvis du ikke kan gøre det ordentligt, så lad være med at gøre det!
i viser ham jo ikk hvordan han finder $antal... tsk tsk...
$antal = mysql_num_rows(mysql_query("SELECT id FROM reklamer"));
$sql = "SELECT * FROM reklamer WHERE id='".rand(0, $antal - 1)."'";
$result = mysql_query($sql);
echo $result['url'] ."<br />";
--
ya!
» http://domaz.dk[...] - version 7 | nu med upload service! #1 ups... så ikk lige at du hente $antal ud... sorry...
--
ya!
» http://domaz.dk[...] - version 7 | nu med upload service! Jeg ville nu anbefale en anden tilgangsvinkel:
Sæt nu, at der er slette nogle poster, så et id ikke findes - eller id slet ikke indeholder en integer (heltal)?
Tag i stedet og find antallet af poster ($antal = ... i #3), find et tilfældig tal mellem 0 og $antal:
$tal = rand(0, $antal - 1); // $antal - 1 fordi listen starter ved 0, og ikke 1
og så en anden slags SQL.
$sql = "SELECT * FROM table LIMIT $tal, " . ($tal + 1);
På den måde kører den ned til post nummer $tal (uafhængigt af id) og piller den ud. Om den er hurtigere eller langsommere end de nævnte metoder, kan du jo prøve dig frem til.
--
Når man affyrer en kanonkugle mod fortet og hører en derinde råbe: "Jeg har!", så ved man, man har med nogle virkelig dumme folk at gøre.
Hov, og grunden til (tror jeg) at din ORDER BY opfatter RAND() som noget volapyk.
Syntaksen for ORDER BY er "ORDER BY felt1, felt2" etc. hvor den kan udvides til "ORDER BY felt1 ASC, felt2 DESC" etc.
Men min påstand på første linie er udelukkende baseret på min iagttagelse på nedenstående side.
MySQL-manualen på ORDER BY:
http://dev.mysql.com[...]
--
Når man affyrer en kanonkugle mod fortet og hører en derinde råbe: "Jeg har!", så ved man, man har med nogle virkelig dumme folk at gøre. #0:
Hvorfor virker det ikke? Får du en fejl?
Når jeg kører SELECT * FROM someTable ORDER BY RAND() LIMIT 1 virker det fint, og når jeg kører query'en flere gange får jeg også (tilsyneladende) forskellige resultater.
--
This post is shareware. Please register to fully understand it.
Okay! Tager mit postulat til mig igen i #6! Det virker altså.
Et godt råd når du har med php og databaser at gøre er, at køre din SQL-sætning i f.eks. phpMyAdmin, hvis du generer en SQL-sætning via php. Næste stop er at kigge på de rådata du får, ved at udskrive arrayet. Det kan du snildt gøre f.eks. sådan her (hvis nu du kun skal have en enkelt række - tilføj while-løkke ved flere):
$sql = "bla bla";
$res = mysql_query($sql);
$row = mysql_fetch_assoc($res);
print_r($row);
Sidste linie er lækker når man vil vide hvad en array indeholder.
--
Når man affyrer en kanonkugle mod fortet og hører en derinde råbe: "Jeg har!", så ved man, man har med nogle virkelig dumme folk at gøre.