Avatar billede shjorth Nybegynder
24. september 2008 - 17:23 Der er 8 kommentarer og
1 løsning

MySQL udtræk (php)

Hejsa.

I min database med alle mine brugere er de kategoriseret efter levels.

Jeg skal lave et udtræk fra brugerdatabasen hvor jeg finder:

een person med samme level som brugeren
een person med 1 levels højere end brugeren
een person med 2 levels højere end brugeren
osv
osv
op til 10 levels højere end brugeren.

Det skal bare være random personer i databasen.

Kan dette lade sig gøre via en enkelt mysql streng, eller skal jeg lave 10 querys?

Mange tak
Avatar billede kjeldsted Novice
24. september 2008 - 19:13 #1
Så du vil altså have udtrukket 10 navne, fx med level 3,4,5,6,7,8,9,10,11,12?
Avatar billede shjorth Nybegynder
24. september 2008 - 19:20 #2
Lige præcis :D
Avatar billede kjeldsted Novice
24. september 2008 - 19:23 #3
Jeg ved sku ikke om det kan laves i SQL (er ikke SQL ekspter), men ved da at du kan lave en ret simpel loop:

for($i=1;$i<=10;$i++)
{
$result = mysql_query("SELECT * FROM db WHERE level  = '$i' LIMIT 1);
$resultat[$i] = mysql_result($result,0);
}

Det skulle vist virke.
Avatar billede kjeldsted Novice
24. september 2008 - 19:24 #4
Og så vil relsutatet af level 1 være gemt i $resultat[1], resultatet af level 2 i resultat[2] osv.
Avatar billede kjeldsted Novice
24. september 2008 - 19:27 #5
Hov. Mangler en (").

for($i=1;$i<=10;$i++)
{
$result = mysql_query("SELECT * FROM db WHERE level  = '$i' LIMIT 1)";
$resultat[$i] = mysql_result($result,0);
}
Avatar billede shjorth Nybegynder
25. september 2008 - 17:29 #6
Hejsa.. Det ser godt ud, men hvordan får jeg det så skrevet ud?

$resultat[1]['id'] virker ikke :D
Avatar billede hmortensen Nybegynder
25. september 2008 - 20:06 #7
Flg. burde kunne gøre det:
SELECT * FROM (SELECT * FROM tbl WHERE level BETWEEN $user_level AND $user_level + 10 ORDER BY RAND()) AS tmp GROUP BY level ORDER BY level
Avatar billede kjeldsted Novice
25. september 2008 - 20:44 #8
Det var heller ikke det jeg skrev. Det er ikke et dobbet array men et enkelt. Du skal ikke skrive $resultat[1]['id'] men $resultat[1] for at udskrive resultatet med en bruger med level 1. Men det tyder på at hmortensen har en løsning i SQL, hvilket burde være en lille smule hurtigere end min, hvis du vil spare de få hundrededele af et sekund ;-)
Avatar billede shjorth Nybegynder
12. juni 2010 - 20:53 #9
Lukker her, skriv endelig hvis i vil have point :P
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