Avatar billede datasource Nybegynder
31. juli 2007 - 15:38 Der er 12 kommentarer

Tilfældigt udtræk fra mysql db

Hej eksperter :D

Jeg har en hjemmeside hvor jeg har en masse nyheder på i en mysql database. Nu vil jeg så gerne have trukket en enkelt nyhed ud som skal være helt tilfældig. Dvs hver gang man opdaterer vælger den en ny tilfældig nyhed.

Jeg har prøvet med dette:

$sql = "SELECT * , rand() as random FROM `nyheder` WHERE 1 ORDER BY random LIMIT 0, 1";

Men den vælger hele tiden den samme artikel (den første).

Nogle der kan hjælpe ?
Avatar billede majbom Novice
31. juli 2007 - 15:44 #1
du kunne finde ud af hvad det højeste id er og derefter bruge en rand(); til at finde et tal imellem 0 og denne værdi...

dette kræver selvfølgelig at alle id er i tabellen...
Avatar billede majbom Novice
31. juli 2007 - 15:45 #2
prøv at fjern "WHERE 1"...
Avatar billede pidgeot Nybegynder
31. juli 2007 - 15:47 #3
Normalt skriver man den slags sådan her:

SELECT * FROM `nyheder` ORDER BY RAND() LIMIT 1

...altså uden at SELECTE den tilfældige værdi (de andre ting jeg ændrede er reelt kosmetiske). Det kunne måske være derfor du har problemet (selvom jeg ikke lige kan se hvorfor det skulle være anderledes...)
Avatar billede datasource Nybegynder
31. juli 2007 - 15:49 #4
at fjerne where 1 hjalp ikke så meget ?

ja..alle id er desværre ikke i tabellen så jeg kan heller ikke bruge rand();
Avatar billede arne_v Ekspert
31. juli 2007 - 15:52 #5
Hvad giver:

$sql = "SELECT * FROM nyheder ORDER BY RAND() LIMIT 0, 1";

?
Avatar billede datasource Nybegynder
31. juli 2007 - 15:58 #6
Altså når i bruger rand() i sql sætningen vælger den så bare et helt tilfældigt tal eller vælger den kun et tal inden for id'erne ?

indtil videre har mine nyheder id: 13,14,15,16 og 17 ?
Avatar billede majbom Novice
31. juli 2007 - 16:10 #7
SELECT * FROM `nyheder` ORDER BY RAND() LIMIT 1
virker ikke eller?
Avatar billede datasource Nybegynder
31. juli 2007 - 16:23 #8
nej..stadig den samme artikel hele tiden
Avatar billede Slettet bruger
01. august 2007 - 10:23 #9
Lyder underligt at den henter den samme artikel.
Er der så kun 1 artikel? :P

Prøv kopier dette ind i din phpmyadmin
SELECT * FROM nyheder
Avatar billede liit42 Nybegynder
25. august 2007 - 00:10 #10
Som pedgeot sagde, så burde


SELECT * FROM `nyheder` ORDER BY RAND() LIMIT 1

virke - MEN, hvis du tester i phpmyadmin, så kan det sagtens være derfor at det fejler - jeg har mange gange stødt på forskellige queries, som ikke virker korrekt gennem phpmyadmin
Avatar billede majbom Novice
21. januar 2009 - 10:00 #11
datasource?
Avatar billede majbom Novice
04. november 2010 - 10:25 #12
done?
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
Computerworld tilbyder specialiserede kurser i database-management

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