Avatar billede gizp Nybegynder
09. juli 2004 - 18:32 Der er 16 kommentarer og
1 løsning

Top 10 til Hot or Not

Hey dér! :P

Jeg har siddet og lavet et Hot or Not system. Nu vil jeg så lave en Top 10, hvordan kan jeg det?

Databasen med stemmer ser sådan ud:
hot_stemmer
- pic_id
- bruger
- stemme

Håber I kan hjælpe, det vil gøre mig :D

På forhånd tak!

/gizp
Avatar billede dorgbar Nybegynder
09. juli 2004 - 18:39 #1
tjaa hvis du tager et limit på 10 sorteret efter stemme så skulle det kunnne klare det
Avatar billede gil-galad Nybegynder
09. juli 2004 - 18:42 #2
prøv:

$result = mysql_query("SELECT bruger FROM hot_stemmer ORDER BY stemme LIMIT 10") or die(mysql_error());
if (mysql_num_rows($result)>0) {
  while($row = mysql_fetch_array($result) ) {
echo "<b>".$row['rating']."</b><br>";
}}else{echo "Ingen stemmer";}
Avatar billede jammerlab Nybegynder
09. juli 2004 - 18:42 #3
Sådan jeg gør i mit system:

ORDER BY karrakter DESC limit 0,10

Karrakter er så et felt der bliver udregnet og opdateret hvergang der kommer en ny stemme på billeder.
Avatar billede dorgbar Nybegynder
09. juli 2004 - 18:47 #4
ja hvis dit system fungere på den måde at jo højere point du har skal du bruge DESC
hvis jo lave skal du ikke skrive noget, men hvilken database bruger du ?
Avatar billede jaw Nybegynder
09. juli 2004 - 18:57 #5
Jeg tror jeg er på gil-galads løsning, lige bortset fra, at $row['rating'] ikke vil give noget output, da der kun selectes feltet bruger... Altså:

SELECT * FROM hot_stemmer ORDER BY stemme LIMIT 10

eller

SELECT rating, bruger FROM hot_stemmer ORDER BY stemme LIMIT 10"
Avatar billede gizp Nybegynder
09. juli 2004 - 19:04 #6
Ja det virker jo så ikke.

Problemet er at stemmerne skal jo lægges sammen, og så sorteres.

Bruger er altså navnet på den der har stemt og stemme er hans vurdering, og pic_id er navnet på det billede han har stemt på.

Det er det der er problemet. Kunne jo bare kører masser af query's og smide de forskellige tal i et array. Men hvis der nu er 1000 billeder, kræver det jo meget af serveren.
Avatar billede dorgbar Nybegynder
09. juli 2004 - 19:07 #7
du skal have et felt med antal stemmer og point

så dividere du point med stemmer og så får du gennemsnittet. og der kan du så sortere numerisk i php bagefter
Avatar billede dorgbar Nybegynder
09. juli 2004 - 19:11 #8
du kan f.eks lave det sådan at man kan give fra 1-10 point derefter addere du en til stemmer feltet og du addere point antallet til point feltet
derefter
$gennemsnit = $point / $stemmer;

og sørger for at du får et array med de forskellige gennemsnit. og derefter kan du så sortere Desc for hot og Asc for not, og lave et limit på 10
Avatar billede jaw Nybegynder
09. juli 2004 - 19:15 #9
Du behøver ikke lave felterne, men:

$q = mysql_query("SELECT *, COUNT(pic_id) as antal, sum(point) as points FROM hot_stemmer GROUP BY pic_id ORDER BY points");
while($row = mysql_fetch_array($q)) {
$gennemsnit = $row[points] / $row[antal];
echo $gennemsnit;
}
Avatar billede jaw Nybegynder
09. juli 2004 - 19:19 #10
$q = mysql_query("SELECT *, COUNT(pic_id) as antal, sum(point) as points FROM hot_stemmer GROUP BY pic_id ORDER BY points DESC LIMIT 10");

...ellers lever den vist ikke heeelt op til det du egentlig gerne vil have...
Avatar billede gizp Nybegynder
10. juli 2004 - 00:00 #11
jaw - Tror du er inde på noget af det rigtige.. Nu glemte jeg måske så lige at sige at informationerne om billederne lægger i en anden tabel.

Men ja, så kan jeg vel bare lave dette:
...
while($row = mysql_fetch_array($q)) {
$que = mysql_query("SELECT * FROM hotnot WHERE pic_id = '$row[pic_id'");
og så udskrive billede og info..

Lyder meget rigtigt ikke?
Avatar billede jaw Nybegynder
10. juli 2004 - 00:11 #12
Tjoh, det gør det, men i din query har du jo intet med point eller noget som helst...
Avatar billede gizp Nybegynder
10. juli 2004 - 00:32 #13
nej, det er der heller ikke i den tabel.. det er bare pic_id, bruger og en jeg ikke lige kan huske..
Avatar billede jaw Nybegynder
10. juli 2004 - 02:38 #14
Hvor er så dine point-beregninger?
Avatar billede gizp Nybegynder
10. juli 2004 - 10:38 #15
Lige meget, for det virker... næsten.

Point virker og billedet virker, men min query til billedets ejernavn dur ikke. Så det er bare den jeg mangler.

Så du skal være velkommen til at lægge et svar. :D
Avatar billede jaw Nybegynder
10. juli 2004 - 12:46 #16
Det gør jeg da gerne :) Hvis du ikke får det sidste til at funke, så kan du jo bare sige til, så kan det være jeg måske har en ide...
Avatar billede gizp Nybegynder
10. juli 2004 - 13:00 #17
Det virker.. så det ok! Tak!
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