Avatar billede thulstrup Nybegynder
16. august 2003 - 17:01 Der er 24 kommentarer og
1 løsning

5 mest besøgte sider

Jeg skal bruge en top 5 over de mest besøgte sider. Måske bare en lille tilføjelse til det her?:

$fetchtop5 = @mysql_query("SELECT side FROM sidestats GROUP BY side ORDER BY side DESC LIMIT 0,5");
while($data = mysql_fetch_array($fetchtop5)) {
    $top5 .= $data['side'] . "<br>";
}
Avatar billede fgsupermand Nybegynder
16. august 2003 - 17:03 #1
Er det ikke bare "LIMIT 5" ?
Avatar billede donwang Nybegynder
16. august 2003 - 17:03 #2
Jo..
Avatar billede detox Nybegynder
16. august 2003 - 17:14 #3
Du skal nok sortere efter id, hvis du har et autonummereret felt. Fx:

SELECT side FROM sidestats GROUP BY side ORDER BY id DESC LIMIT 0,5

Ellers måske et dato felt eller lign.
Avatar billede nicklasb Nybegynder
16. august 2003 - 17:14 #4
nej.. LIMIT 0,5 betyder bare at den skal starte ved post nul og så tælle fem frem. Det kan gøres på den anden måde, men det er nu meget godt at fortælle MySQL'en det aligevel.
Jeg tror derimod du hellere skulle prøve at lave en ODER BY hits, og så helt fjerne din GROUP BY. Hvorfor har du egentligt den på? Den har da ingen rigtig funktion i den SQL-sætning..!
Avatar billede detox Nybegynder
16. august 2003 - 17:15 #5
Ja, GROUP virker overflødig
Avatar billede nicklasb Nybegynder
16. august 2003 - 17:16 #6
altså selvfølgelig hvis den hedder hits, din tabel med antal besøg ;D
og så selvfølgelig en DESC som du selv skrev det i slutningen..
Altså noget lignde
ORDER BY hits DESC LIMIT 0,5
Avatar billede thulstrup Nybegynder
16. august 2003 - 17:16 #7
GROUP BY er da så den samme side ikke bliver taget med flere gange...
Avatar billede nicklasb Nybegynder
16. august 2003 - 17:17 #8
så vælg i stedet at skrive SELECT DISTINCT (side) FROM ...
Avatar billede thulstrup Nybegynder
16. august 2003 - 17:19 #9
Ok, men jeg mangler stadig en måde at vælge de 5 sider der har fået flest hits. Jeg har ingen id i min tabel, den består bare af ip, side, tid, dato.
Avatar billede nicklasb Nybegynder
16. august 2003 - 17:23 #10
hvordan kan du se hvor mange hits et link har fået? Står det i en anden tabel eller? Ellers mangler du lidt ændringer i både den side der stiller browseren videre til den eksterne side, eller i din sql, så du har en kollonne indeholdende antal klik!
Avatar billede detox Nybegynder
16. august 2003 - 17:25 #11
Arrh, mest besøgte. Jeg tænkte på nyeste... ;-|
Avatar billede hmortensen Nybegynder
16. august 2003 - 17:29 #12
Lyder som om du laver et nyt record hver gang siden blir besøgt, som er en meget tung løsning
Avatar billede nicklasb Nybegynder
16. august 2003 - 17:31 #13
så er det bare at tilføje et id med en auto-nummerering i din tabel, og så skrive ORDER BY id DESC LIMIT 0,5. Prøv det, det vil virke! :D
Avatar billede detox Nybegynder
16. august 2003 - 17:36 #14
nicklasb-> He he, nu bliver det forvirrende. Det var jo netop ikke de nyeste, men de mest besøgte der efterlyses...
Avatar billede hmortensen Nybegynder
16. august 2003 - 17:40 #15
Kan man ik gøre noget i den her retning:

$q = mysql_query("SELECT side FROM side GROUP BY side");
while($row=mysql_fetch_array($q))
{
$query = mysql_query("SELECT side FROM side WHERE side='$row[side]' ORDER BY side DESC LIMIT 0,5");
$antal = mysql_num_rows($query);
echo $row[side] . $antal;
}
Avatar billede tipsen Nybegynder
16. august 2003 - 18:04 #16
SELECT side, COUNT(*) AS hits FROM sidestats GROUP BY side ORDER BY hits DESC LIMIT 0,5
Avatar billede nicklasb Nybegynder
16. august 2003 - 19:09 #17
detox -> Sorry.. så ikke beskeden fra fra dig. Troede cellb10ck havde skiftet mening.

cellb10ck -> Jeg forstår ikke lige dit valg af sql-tabeller. Hvorfor opretter du ikke en tabel med et automummereringsfelt og et link, og så en anden tabel med et referencenummer, et ip-nummer og et timestamp. Det vil fylde MEGET mindre end den måde du gør det på nu, og vil gøre dit script meget lettere. Den anden måde at klare den på, er ikke helt optimal
Avatar billede thulstrup Nybegynder
17. august 2003 - 23:54 #18
Så er jeg tilbage igen.

Det kan sagtens tænkes at det ikke er den mest optimale måde jeg har gjort det på.

nicklasb >> kan du uddybe hvordan du vil gøre det?
Avatar billede hmortensen Nybegynder
17. august 2003 - 23:59 #19
nicklasb mener at du skal lave en tabel der fx hedder sider, med 2 felter: id (auto nr) og side (de sidder som der skal statistik over).

Så opretter du en tabel der fx hedder hits, med 4 felter: id (auto nr), sid (side id, som er det id, den pågælende side har i den anden tabel) og tid (fx timestamp)...

På den måde har du kun side navnet en gang, og gør det knapt så tungt at køre, og så overholder det også duplikerings reglen.
Avatar billede hmortensen Nybegynder
17. august 2003 - 23:59 #20
Glemte så lige ip, men det gir nok sig selv...
Avatar billede thulstrup Nybegynder
18. august 2003 - 01:04 #21
Hov! Jeg havde slet ikke fået prøvet dit foreslag tipsen. Det virker jo lige som det skal. Jeg skal nok overveje om det ville være smartere at lave det på en anden måde. Men tak for hjælpen alle sammen!
Avatar billede tipsen Nybegynder
18. august 2003 - 01:50 #22
Tak for point - jeg vil give de andre rødder ret i at det på et tidspunkt skal laves om til en mere effektiv løsning - det bliver uhensigtsmæssigt langsomt efter du har fået mange besøg.
Avatar billede thulstrup Nybegynder
18. august 2003 - 11:41 #23
Ja, jeg kan godt se at det ville være lettere bare at ligge en til antal sidehits hver gang en side bliver besøgt. Grunden til at jeg gjorde det på den anden måde, var at jeg tænkte at det kunne være interessant at kunne gå ind og se hver enkelt brugers bevægelsesmønster...
Avatar billede hmortensen Nybegynder
18. august 2003 - 12:13 #24
Kan du jo også på den anden måde.
Så trækker du du bare på, i mit ex sid (side id), og ser hvilke de har besøgt
Avatar billede tipsen Nybegynder
18. august 2003 - 17:10 #25
Kig evt. på phpOpentracker.de, hvis du vil have en prof. løsning med de muligheder du efterspørger.
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