Avatar billede eflow Nybegynder
09. januar 2002 - 16:47 Der er 8 kommentarer og
2 løsninger

TOP 10

jeg har nogle tests på en side jeg skal lave, mit problem er så en top 10 over hits på siden, da jeg ikke har en hits tæller i tabellen tests, men jeg har en log der tjekker hvor brugeren er på alle sider, den ligger i databasen sådan her:
/tests.php?testid=4 f.eks.
den skal så tælle hvor mange gange der står /tests.php?testid=4, men 4 tallet variere så det skal hentes fra en variabel, jeg tænkte om det ikke kunne lave til en funktion.....skriv lige hvis jeg skal skære det ud i pap....
Avatar billede myplacedk Nybegynder
09. januar 2002 - 16:54 #1
Det må du nok hellere, jeg forstår ingenting... ;-)

Men jeg kan da lige gætte:

Du har fx. disse tal, et tal i hver sin række i en tabel i databasen:
5 8 3 6 4 2 5 7 8 5

Nu vil du så have en liste ud, der fx. ser sådan ud:
5: 3
8: 2
3: 1
...

Altså sorteret efter hyppighed.

Er det sådan noget?
Avatar billede eflow Nybegynder
09. januar 2002 - 16:58 #2
jeg har f.eks sådan her:

test.php?testid=4
test.php?testid=4
test.php?testid=5
test.php?testid=6
test.php?testid=7
test.php?testid=5

der skal den så skrive:
4 = 2
5 = 2
6 = 1
7 = 1

forstår du det nu ?
faktiks det samme som du skrev...jeg skal bare have det test.php?testid=? væk....
men jeg tror faktisk jeg har en idé til det, jeg fjerner alt før tallet, smider det ind i et array, lader en while lykke sorterer efter det ?
Avatar billede myplacedk Nybegynder
09. januar 2002 - 17:13 #3
Det kan gøres i ren SQL, jeg vil gøre noget i stil med dette i MySQL:

SELECT url, count(url) AS antal FROM tabel GROUP BY url ORDER DESC antal LIMIT 10
Avatar billede eflow Nybegynder
09. januar 2002 - 17:14 #4
hmm...du har sq da ret....dooh....tester lige for fejl...
Avatar billede eflow Nybegynder
09. januar 2002 - 17:17 #5
hmm...det vil da ikke virke, da der osse ligger f.eks. index.php i min log db...så den vil den jo osse tælle, og den vil nok ligge øverst.... :-((
Avatar billede myplacedk Nybegynder
09. januar 2002 - 17:24 #6
OK, så skal du bare lægge en begrænsning ind.
Noget med:
WHERE left(url, 16)=\'test.php?testid=\'
Avatar billede eflow Nybegynder
09. januar 2002 - 17:32 #7
det her:
SELECT fil, count(fil) AS antal FROM log WHERE left(fil, 16)=\'test.php?testid=\' GROUP BY fil ORDER BY antal DESC LIMIT 10
virker ikke rigtigt, eller der er ingen fejl, men den tjekker vist ikke ordenligt, da den ikke skriver noget ud....
jeg har lige prøvet at køre den i phpmyadmin, men der kommer ingen resultater, men kun skriver sql sætningen er udført...
Avatar billede myplacedk Nybegynder
09. januar 2002 - 17:43 #8
Det kunne virke som om der er noget galt med WHERE-tingen.
Hvis den ikke er der, så virker det vel?
Bortset fra, at den tager alle sider med, altså...

Prøv at spørge under MySQL hvorfor det ikke virker. Henvis gerne til spørgsmålet herfra.

Jeg har nok overset et eller andet, jeg har lige hovedet fyldt med alt muligt andet lige nu. ;-)
Avatar billede eflow Nybegynder
09. januar 2002 - 18:01 #9
det virker fint uden den where sætning....men den henter det ikke ordenligt...
jeg prøver lige i mysql kategorien....
Avatar billede eflow Nybegynder
16. januar 2002 - 16:04 #10
har jo intet brugbart svar fået i det her spm eller det andet...
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