Avatar billede elskermad.dk Nybegynder
22. januar 2003 - 21:00 Der er 14 kommentarer og
2 løsninger

tilfædig mysql-række

Hej!
Jeg har et script som skulle tage en tilfældig række i en mysql-tabel, men den tager den samme hver gang, nemlig id nr 1!

<?
$foresp = mysql_query("SELECT * FROM jokes_jokes order by rand() LIMIT 1") or die(mysql_error());
while($row = mysql_fetch_array($foresp)) {
$id = $row["id"];

echo"
<META HTTP-EQUIV='refresh' CONTENT='0;url=?side=jokes/joke&id=$id'>
<p><center>søger...</center>
";
}
?>

hvad er forkert?
Avatar billede abpdk Nybegynder
22. januar 2003 - 21:02 #1
Er det ikke "SELECT * FROM jokes_jokes LIMIT rand(), 1" eller sådan noget?
Avatar billede dennism Nybegynder
22. januar 2003 - 21:02 #2
Ved du at skriver "LIMIT 1" så har den kun en række at vælge fra, og derfor bliver det altid den samme!
Avatar billede elskermad.dk Nybegynder
22. januar 2003 - 21:03 #3
ja, men jeg skal kun have skrevet 1 række ud!
Avatar billede elskermad.dk Nybegynder
22. januar 2003 - 21:10 #4
hvis man laver mysql_query("SELECT * FROM jokes_jokes order by rand() DESC LIMIT 1") istedet så vælger den mellem 4,6 og 7.. ret spooky! hehe
Avatar billede abpdk Nybegynder
22. januar 2003 - 21:27 #5
Hmm, jeg huskede vist forkert, men jeg testede lige den du selv skrev og den burde virke. Den virkede i hvert fald her.
Avatar billede Slettet bruger
22. januar 2003 - 21:31 #6
<?
$result = mysql_query("SELECT * FROM jokes_jokes ORDER BY rand() LIMIT 0,1") or die(mysql_error());
$row = mysql_fetch_array($result);
echo $row["id"];
?>

Det bør virke, det du skriver. Iøvrigt om du skriver LIMIT 1 eller LIMIT 0, 1 bør være det samme. Tror dog nok at LIMIT 0, 1 er mere korrekt. Bla. phpmyadmin brokker sig over LIMIT 1.

Der er ingen grund til at have en while løkke, når du kun henter én række.
Avatar billede elskermad.dk Nybegynder
22. januar 2003 - 22:17 #7
virker stadig ikk! koden er som mmercur8 har skrevet!
siden kan ses her til jeg daffer iseng og imorgen efter 18:00
http://www.myserver.lir.dk/jokes.mamster.dk/?side=jokes/random
Avatar billede abpdk Nybegynder
22. januar 2003 - 22:41 #8
Hvad skriver den af fejl?
Avatar billede elskermad.dk Nybegynder
22. januar 2003 - 22:45 #9
ikke noget... den tager bare værdi nr 1 hver gang
Avatar billede elskermad.dk Nybegynder
22. januar 2003 - 22:47 #10
og ja, den har mere end 1 række tabellen
Avatar billede Slettet bruger
22. januar 2003 - 23:00 #11
Kræver mysql 3.23 eller højere, før order by rand virker.
Avatar billede tipsen Nybegynder
23. januar 2003 - 02:14 #12
mercur: Begge dine limit-syntakser er 100% i orden!
Avatar billede elskermad.dk Nybegynder
23. januar 2003 - 21:38 #13
hvordan kan man se hvilken version af mysql der bliver kørt med?
Avatar billede abpdk Nybegynder
23. januar 2003 - 21:58 #14
Hvis det er på din egen maskine, så prøv med: mysql -V
Avatar billede elskermad.dk Nybegynder
24. januar 2003 - 19:03 #15
det er ikke på min egen computer! det køre hos www.web10.dk
Avatar billede tipsen Nybegynder
24. januar 2003 - 19:54 #16
så laver du en:

$res = mysql_query("SELECT VERSION()");
echo "SQL-version: " . mysql_get_result($res, 0);
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