Seneste forumindlæg
Køb / Salg
 * Uofficiel Black/White liste V3
Login / opret bruger

Forum \ Programmering og webdesign \ Programmering
Denne tråd er over 6 måneder gammel

Er du sikker på, at du har noget relevant at tilføje?

MySQL Random udtræk

Af Gigabruger Only1 | 03-03-2005 20:35 | 1284 visninger | 9 svar, hop til seneste
Sider og godt vil lave MySQL Random udtræk men kan iokke få det til at fungeR :( nogen der kan hjælpe mig.. her er min code pt. $sql = "SELECT * FROM reklamer ORDER BY RAND() LIMIT 1"; $result = mysql_query($sql); echo $result['url'] ."<br />";
--
• Intel P4 3Ghz @ 3,9Ghz • 1024 Mb Dual Channel • GeForce FX 5700VE 256mb • 160 GB SATA
#1
La_Polski
Monsterbruger
05-03-2005 21:53

Rapporter til Admin
$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!
#2
Ronson
Maxi Nørd
05-03-2005 21:58

Rapporter til Admin
$sql = "SELECT * FROM reklamer WHERE (en kolonne med id) ='".rand(0, $antal)."'"); skal være $sql = "SELECT * FROM reklamer WHERE (en kolonne med id) ='".rand(0, $antal-1)."'");
--
Ronson http://www.chipsguiden.dk[...] For os der elsker chips! HOL Bladet: http://www.chipsguiden.dk[...]
#3
DomaZ.dk
Supporter Aspirant
05-03-2005 22:17

Rapporter til Admin
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!
#4
DomaZ.dk
Supporter Aspirant
05-03-2005 22:18

Rapporter til Admin
#1 ups... så ikk lige at du hente $antal ud... sorry...
--
ya! » http://domaz.dk[...] - version 7 | nu med upload service!
#5
SME
Elitebruger
07-03-2005 11:34

Rapporter til Admin
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.
#6
SME
Elitebruger
07-03-2005 11:40

Rapporter til Admin
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.
#7
Demos
Giga Supporter
07-03-2005 12:37

Rapporter til Admin
#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.
#8
SME
Elitebruger
07-03-2005 17:07

Rapporter til Admin
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.
#9
Ronson
Maxi Nørd
07-03-2005 22:57

Rapporter til Admin
jeg ville nok smide en echo "<pre>"; før og echo "</pre>"; efter den print_r();
--
Ronson http://www.chipsguiden.dk[...] For os der elsker chips! HOL Bladet: http://www.chipsguiden.dk[...]

Opret svar til indlægget: MySQL Random udtræk

Grundet øget spam aktivitet fra gæstebrugere, er det desværre ikke længere muligt, at oprette svar som gæst.

Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.

Opret bruger | Login
NYHEDSBREV
Afstemning