/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
tilfældig udvælgelse af elementer?
Fra : Jesper Kampfeldt


Dato : 22-02-01 22:42

Hejsa

Jeg laver forespørgelse til mysql, som returner et array.
Spørgsmålet er nu hvordan udvælger jeg tilfældigt to elementer fra dette
array ?

Mvh.
Jesper



 
 
Thomas Jensen - pil.~ (22-02-2001)
Kommentar
Fra : Thomas Jensen - pil.~


Dato : 22-02-01 22:53

On Thu, 22 Feb 2001 22:41:37 +0100, "Jesper Kampfeldt"
<jesper@kampfeldt.com> wrote:

>Hejsa
>
>Jeg laver forespørgelse til mysql, som returner et array.
>Spørgsmålet er nu hvordan udvælger jeg tilfældigt to elementer fra dette
>array ?

jeg mener den seneste version af mysql understøtter noget m. select
random... ej sikker.

--
med venlig hilsen
Thomas Jensen
http://pil.dk/

Mads Lie Jensen (23-02-2001)
Kommentar
Fra : Mads Lie Jensen


Dato : 23-02-01 11:14

On Thu, 22 Feb 2001 21:52:42 GMT, tj@dev.null (Thomas Jensen - pil.dk)
wrote:

>>Jeg laver forespørgelse til mysql, som returner et array.
>>Spørgsmålet er nu hvordan udvælger jeg tilfældigt to elementer fra dette
>>array ?
>
>jeg mener den seneste version af mysql understøtter noget m. select
>random... ej sikker.

Ikke helt, men man kan bruge:

SELECT * FROM tabel ORDER BY rand() LIMIT 1;

for at få en tilfældig post.

--
Mads Lie Jensen
Mads@gartneriet.dk
ICQ #25478403
http://www.gartneriet.dk

Allan Andersen (23-02-2001)
Kommentar
Fra : Allan Andersen


Dato : 23-02-01 12:04

Hej Mads

> SELECT * FROM tabel ORDER BY rand() LIMIT 1;
>
> for at få en tilfældig post.

Jeg har svært ved at tro at dette skulle give en tilfældig række. Det der
vil ske med ovenstående SQL, er, at databasen sorterer på tabellens
forskellige kolonner. Har du kun en kolonne i din tabel vil databasen derfor
ikke finde tilfældige rækker.

Hvis jeg tager fejl så fortæl mig lige hvad jeg ikke har forstået. ; o )

Med venlig hilsen

Allan Andersen



Mads Lie Jensen (23-02-2001)
Kommentar
Fra : Mads Lie Jensen


Dato : 23-02-01 12:33

On Fri, 23 Feb 2001 12:03:48 +0100, "Allan Andersen" <aa@midas.com>
wrote:

>Hej Mads
>
>> SELECT * FROM tabel ORDER BY rand() LIMIT 1;
>>
>> for at få en tilfældig post.
>
>Jeg har svært ved at tro at dette skulle give en tilfældig række. Det der

...men det gør det.

>vil ske med ovenstående SQL, er, at databasen sorterer på tabellens
>forskellige kolonner. Har du kun en kolonne i din tabel vil databasen derfor
>ikke finde tilfældige rækker.

>Hvis jeg tager fejl så fortæl mig lige hvad jeg ikke har forstået. ; o )

Hvordan det hænger sammen aner jeg ikke. Men det er et eksempel hentet
fra mySQL-manualen så jeg betragter den som god nok. Slå selv op under
RAND() i omtalte manual.

--
Mads Lie Jensen
Mads@gartneriet.dk
ICQ #25478403
http://www.gartneriet.dk

Allan Andersen (23-02-2001)
Kommentar
Fra : Allan Andersen


Dato : 23-02-01 12:45

Hej Mads

> Hvordan det hænger sammen aner jeg ikke. Men det er et eksempel hentet
> fra mySQL-manualen så jeg betragter den som god nok. Slå selv op under
> RAND() i omtalte manual.

Jeg prøver at opklare mysteriet i weekenden, hvis jeg får tid.

venligst

Allan Andersen



Jesper Kampfeldt (23-02-2001)
Kommentar
Fra : Jesper Kampfeldt


Dato : 23-02-01 14:50

hvis jeg skriver:

SELECT * FROM tabel ORDER BY rand() LIMIT 2;

for jeg så 2 rækker ?
understøtter nyere versioner af mysql denne forespørgelse.

Mvh.
Jesper


Mads Lie Jensen <mads@gartneriet.dk> skrev i en
nyhedsmeddelelse:nrdc9ts50v897rc013o6jcut2fsklpjhmc@4ax.com...
> On Thu, 22 Feb 2001 21:52:42 GMT, tj@dev.null (Thomas Jensen - pil.dk)
> wrote:
>
> >>Jeg laver forespørgelse til mysql, som returner et array.
> >>Spørgsmålet er nu hvordan udvælger jeg tilfældigt to elementer fra dette
> >>array ?
> >
> >jeg mener den seneste version af mysql understøtter noget m. select
> >random... ej sikker.
>
> Ikke helt, men man kan bruge:
>
> SELECT * FROM tabel ORDER BY rand() LIMIT 1;
>
> for at få en tilfældig post.
>
> --
> Mads Lie Jensen
> Mads@gartneriet.dk
> ICQ #25478403
> http://www.gartneriet.dk



Christian Laursen (23-02-2001)
Kommentar
Fra : Christian Laursen


Dato : 23-02-01 14:53

"Jesper Kampfeldt" <jesper@kampfeldt.com> writes:

> hvis jeg skriver:
>
> SELECT * FROM tabel ORDER BY rand() LIMIT 2;
>
> får jeg så 2 rækker ?

ja

> understøtter nyere versioner af mysql denne forespørgelse.

ja

http://www.usenet.dk/netikette/quote.html

--
Med venlig hilsen
Christian Laursen

Peter Brodersen (24-02-2001)
Kommentar
Fra : Peter Brodersen


Dato : 24-02-01 11:36

On Fri, 23 Feb 2001 11:13:36 +0100, Mads Lie Jensen
<mads@gartneriet.dk> wrote:

>SELECT * FROM tabel ORDER BY rand() LIMIT 1;
>
>for at få en tilfældig post.

Dette virker fra og med MySQL 3.23.

I 3.22 kan man fx bruge noget i stil med:

SELECT *, ((id*0)+rand()) AS random FROM table ORDER BY random LIMIT 1

Det vil, udover al outputtet (husk i øvrigt at "*" er en dårlig vane),
også give et felt med et tilfældigt tal i, i hver row - og det er så
denne, der sorteres på bagefter.

Det er vigtigt, at man ikke blot selecter rand() undervejs, idet
sorteringen ikke vil virke ordentligt. MySQL 3.22 er ganske enkelt
mærkelig på det punkt.


--
- Pede
Professionel nørd

Jacob Bunk Nielsen (23-02-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 23-02-01 00:23

"Jesper Kampfeldt" <jesper@kampfeldt.com> writes:

> Jeg laver forespørgelse til mysql, som returner et array.
> Spørgsmålet er nu hvordan udvælger jeg tilfældigt to elementer fra dette
> array ?

Hvis man ikke kan gøre som Thomas beskriver, så prøv:

<?
// skal erstattes med hvad der nu kommer fra MySQL ...
$arr_mysql = array("key1" => "value1", "key2" => "value2", "key3" => "value3");

$i = 0;
while (list ($key, $value) = each ($arr_mysql)) {
$arr[$i] = $value;
$i++;
}

$antal = count($arr);
srand ((double) microtime() * 1000000); // stjålet fra php.net
echo $arr[rand(0,$antal-1)];
echo "<br>\n";
echo $arr[rand(0,$antal-1)];
?>

OK, det er ikke pænt først at kopiere hele arrayet, men det virker
Jeg ved ikke hvordan man ellers let tilgår et array med en tal som
nøgle.

--
Jacob
If at first you do succeed, try to hide your astonishment.

Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408878
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste