Avatar billede kgp43 Nybegynder
13. juli 2004 - 14:36 Der er 11 kommentarer og
1 løsning

find mest populære

Hejsa,

Jeg har en tabel hvor jeg opretter en række for hvert klik på et produkt. I tabellen bliver der registreret id på produktet (samt kategori).

Hvordan laver jeg en query, der finder de 10 mest populærere produkter?

Har lavet følgende, men det virker ikke (den poster bare produkterne):

//Get top10 most popular reels
$most_popular_no = 1;
$most_popular_query = mysql_query("SELECT * FROM products_hits WHERE type='reels' GROUP BY product_id LIMIT 10") or die (mysql_error());
while($most_popular_row = mysql_fetch_array($most_popular_query)) {

?><h4><?
echo $most_popular_no;
?>. Reels</h4><?

?><h5><?
echo $most_popular_row[product_id];
?></h5><?
$most_popular_no++;

}
?>
Avatar billede thedeathart Nybegynder
13. juli 2004 - 14:37 #1
ORDER by antalklik DESC

måske ?
Avatar billede jaw Nybegynder
13. juli 2004 - 14:38 #2
SELECT sum(klik) as klik1 ORDER BY klik1 DESC

hvor klik skal være det felt der indeholder klikket...
Avatar billede kgp43 Nybegynder
13. juli 2004 - 14:40 #3
jeg har ikke en kolonne der hedder klik, troede at en række var nok (så én række tæller for et klik).
Avatar billede jaw Nybegynder
13. juli 2004 - 14:43 #4
så skal du:

SELECT COUNT(*) as antal FRPM tabel GROUP BY feltet ORDER BY antal DESC

tror jeg
Avatar billede kgp43 Nybegynder
13. juli 2004 - 14:51 #5
Den kommer ikke med nogen fejl, men den poster kun "1. Reels" og ikke andet.

$most_popular_no = 1;
$most_popular_query = mysql_query("SELECT COUNT(*) as most_popular FROM products_hits GROUP BY product_id ORDER BY most_popular DESC LIMIT 10") or die (mysql_error());
while($most_popular_row = mysql_fetch_array($most_popular_query)) {

?><h4><?
echo $most_popular_no;
?>. Reels</h4><?

?><h5><?
echo $most_popular;
?></h5><?
$most_popular_no++;

}
Avatar billede jaw Nybegynder
13. juli 2004 - 15:02 #6
Den du har lavet der fatter jeg slet ikke overhovedet... Du udskriver jo ingenting fra databasen?

Men jeg må lige smutte en times tid. Får du ikke svar inden, skal jeg no se på det...
Avatar billede jaw Nybegynder
13. juli 2004 - 15:03 #7
Men når man skal teste noget nyt, er det altid en god ide at lave noget helt blankt... Alt det med $most_popular_no etc. kan jeg ikke se hvad du vil med. Du skal vel bare have udskrevet de mest populære?

<?
$most_popular_query = mysql_query("SELECT COUNT(*) as most_popular FROM products_hits GROUP BY product_id ORDER BY most_popular DESC LIMIT 10") or die (mysql_error());
while($most_popular_row = mysql_fetch_array($most_popular_query)) {
echo $most_popular_row['most_popular'];
}
?>
Avatar billede kgp43 Nybegynder
13. juli 2004 - 15:10 #8
det er bare iorden.

Mit script virker som dit sidste eksempel. Den poster bare antal rækker og ikke produkt id. Måske forklarede jeg mig ikke godt nok :P

Jeg har en tabel, hvor der oprettes en ny række for hvert klik på et produkt. I denne række bliver der registreret produkt-id og produkt-type. Hvad jeg gerne vil have en en top10 liste over produkterne af type "reels". Følgende kode kommer med et output der svarer til antal rækker:

//Get top10 most popular reels
$most_popular_no = 1;
$most_popular_query = mysql_query("SELECT COUNT(*) as most_popular FROM products_hits GROUP BY product_id ORDER BY most_popular DESC LIMIT 10") or die (mysql_error());
while($most_popular_row = mysql_fetch_array($most_popular_query)) {

?><h4><?
echo $most_popular_no;
?>. Reels</h4><?

?><h5><?
echo $most_popular_row[most_popular];
?></h5><?
$most_popular_no++;
}
Avatar billede kgp43 Nybegynder
13. juli 2004 - 15:13 #9
Du kan se et eksempel her: http://www.tackleprices.com/products/fishing-reels/series.php (venstre menu).

Produktet med id 652, har fået 8 kliks og produktet med id 31 har fået 5 kliks. Som du kan se så poster den ikke produkt_id med derimod antallet af rækker (8+5).
Avatar billede jaw Nybegynder
13. juli 2004 - 16:07 #10
ohh, men så er det:

SELECT product_id, COUNT(*) etc.etc.

echo $most_popular_row['product_id'];
Avatar billede kgp43 Nybegynder
13. juli 2004 - 16:29 #11
virkede jo perfekt, takker for hjælpen.

lig et svar så er der point :D
Avatar billede jaw Nybegynder
13. juli 2004 - 16:45 #12
Det var da så lidt :) Og på forhånd 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