Avatar billede spidr Nybegynder
11. juli 2007 - 14:03 Der er 7 kommentarer og
1 løsning

Hente en NÆSTEN tilfældig fra database

ok, jeg har et lille problem jeg ikke kan løse, og sikket fordi jeg er søvnig, men nu har jeg siddet med det i flere timer og det vil bare ikke lykkes, så håber i har en ide til hvordan jeg kan gøre :)

----

Jeg bruger koden nede for til at hente en samtale fra min database til mit spil. Lige nu gør koden det at den henter den samtale der passer til det level man er i, men jeg vil gerne gøre så jeg kan have flere samtaler til hvert level :) Altså så den henter en tilfældig samtale men som passer til det lvl man er i :)

$query = mysql_query("SELECT * FROM LovehinaSpeak WHERE xp <= '$girlpoints' and Girl = '$girl' order by xp desc limit 1");

Samtalerne er indelt i 7 levels, og feltet xp i tabelen LovehinaSpeak har en af de nedenstående points.

$girlpoints er det antal xp man selv har med den pågældene pige :)

F.eks. har alle samtaler til lvl 4 7500 stående i felter XP.

-1: -999999
0: -1
1: 10
2: 450
3: 1200
4: 7500
5: 30000
6: 75000

Jeg håber en af jer lige kan komme med en hurtig og smart metode :)
Avatar billede spidr Nybegynder
11. juli 2007 - 14:12 #1
Mit eget bud var noget alla:

if ($girlpoints < -1) { $chosexp = -999999;}
elseif ($girlpoints < 10){ $chosexp = -1;}
elseif ($girlpoints < 450){ $chosexp = 10;}
elseif ($girlpoints < 1200){ $chosexp = 450;}
elseif ($girlpoints < 7500){ $chosexp = 1200;}
elseif ($girlpoints < 30000){ $chosexp = 7500;}
elseif ($girlpoints < 75000){ $chosexp = 30000;}
else { $chosexp = 75000;}

$query = mysql_query("SELECT * FROM LovehinaSpeak WHERE xp = '$chosexp' and Girl = '$girl'");

Men så mangler jeg stadig at den bare tager en random af dem den finder istedet for bare den første og bedste hver gang :)
Avatar billede pidgeot Nybegynder
11. juli 2007 - 14:31 #2
Du tager den query du fandt på og smider ORDER BY RAND() bagpå. Så skulle den være der.
Avatar billede barklund Nybegynder
11. juli 2007 - 14:41 #3
Og noget LIMIT 1 bagefter det :)
Avatar billede pidgeot Nybegynder
11. juli 2007 - 14:42 #4
Ja, selvfølgelig :)
Avatar billede spidr Nybegynder
11. juli 2007 - 16:32 #5
Hmm, der er et eller andet galt med min query, men tjekker den lige og skriver igen :) Fandt også selv det med order by rand() men så skrev den fejl, og så tænkte jeg at det var det den var gal med :$
Avatar billede pidgeot Nybegynder
11. juli 2007 - 19:33 #6
Sørg for du har skrevet LIMIT ind *efter* ORDER BY. Det er muligvis det der er gået galt.

Hvis du har gjort det, må du lige smide din query ind her, inkl. den fejl den giver med mysql_error().
Avatar billede spidr Nybegynder
11. juli 2007 - 20:24 #7
jeg fandt problemmet, det skyldes at der ikke var samtaler til alle pigerne i så højt lvl, det ser ud til at virke til dem hvor der er samtaler :)
Avatar billede spidr Nybegynder
11. juli 2007 - 20:41 #8
Så fik jeg også fikset et, tak for hjælpen, er ked af jeg selv klarede det :)
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