Avatar billede dotcom1 Nybegynder
19. november 2004 - 13:44 Der er 12 kommentarer og
2 løsninger

Hente top 5 ud af MySQL

Har et klik-tæller-script med en tabel, der ser sådan ud:

CREATE TABLE `downloads` (
`ID` tinyint(4) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '0',
`downloads` tinyint(4) NOT NULL default '0',
`date` datetime NOT NULL,
PRIMARY KEY (`ID`),
KEY `ID_2` (`ID`)
) TYPE=MyISAM;

Jeg ville gerne lave en top 5 over de mest klikkede links på min links-side. Hvordan gør jeg det? 'Name' er url'en og 'downloads' er antal klik. Jeg er ret ny i PHP/MySQL, så jeg skal nok have det skåret ud i pap. :-)

Mvh.
Avatar billede exp Juniormester
19. november 2004 - 13:48 #1
select * from `downloads` order by `downloads` limit 0,5
Avatar billede exp Juniormester
19. november 2004 - 13:49 #2
select * from `downloads` order by `downloads` desc limit 0,5

er nok mere korrekt :-)
Avatar billede sukos Juniormester
19. november 2004 - 13:50 #3
$tophits = mysql_query("SELECT * FROM `downloads` ORDER BY `downloads` LIMIT 1,5 DESC ") or die (mysql_error());
Avatar billede 20 Nybegynder
19. november 2004 - 13:51 #4
$tophits = mysql_query("SELECT * FROM downloads ORDER BY downloads LIMIT 0,5 DESC") or die (mysql_error());
Avatar billede dotcom1 Nybegynder
19. november 2004 - 13:51 #5
Ok, tusind tak, det ser jo nemt ud, men hvordan skrives det helt præcist? Altså med tags, osv.
Avatar billede coderdk Praktikant
19. november 2004 - 13:53 #6
De andre har svaret dig, men hvorfor er din ID tinyint? Så har du kun 127 mulige (eller 256 fra -128 til 127)...
Og så har du "KEY `ID_2` (`ID`)" som er overflødig (du har den som PRIMARY KEY)...
Avatar billede dotcom1 Nybegynder
19. november 2004 - 13:56 #7
Det er ikke mig, der har skrevet scriptet, men jeg har selv rettet den dér tinyint til int.

ID_2 kan jeg vel godt slette, så?
Avatar billede dotcom1 Nybegynder
19. november 2004 - 14:00 #8
Hvis jeg indsætter fx. dette <?php $tophits = mysql_query("SELECT * FROM `downloads` ORDER BY `downloads` LIMIT 1,5 DESC ") or die (mysql_error()); ?> på min links-side, får jeg connection-fejl...
Avatar billede sukos Juniormester
19. november 2004 - 14:06 #9
jahh, du skal jo connecte til DB'en før du kan lave en query! :O)

<?php
$db = mysql_connect("localhost", "user", "password") or die (mysql_error());
mysql_select_db("databasenavn", $db) or die (mysql_error());

$tophits = mysql_query("SELECT * FROM `downloads` ORDER BY `downloads` LIMIT 1,5 DESC ") or die (mysql_error());

while($vis = mysql_fetch_object($tophits)) {
echo "Hits: ". $vis->downloads ." url: ". $vis->name ."<br>\n";
}

mysql_free_result($tophits);
?>
Avatar billede dotcom1 Nybegynder
19. november 2004 - 14:11 #10
Ja, men det vidste jeg ikke lige hvordan man lavede. :-) Jeg får nu flg. meddelelse:
You have an error in your SQL syntax near 'DESC ' at line 1
Avatar billede sukos Juniormester
19. november 2004 - 14:13 #11
hmm, mellemrum efter DESC ???
Avatar billede sukos Juniormester
19. november 2004 - 14:15 #12
<?php
$db = mysql_connect("localhost", "user", "password") or die (mysql_error());
mysql_select_db("databasenavn", $db) or die (mysql_error());

$tophits = mysql_query("SELECT * FROM `downloads` ORDER BY `downloads` DESC LIMIT 0,5") or die (mysql_error());

while($vis = mysql_fetch_object($tophits)) {
echo "Hits: ". $vis->downloads ." url: ". $vis->name ."<br>\n";
}

mysql_free_result($tophits);
?>
Avatar billede dotcom1 Nybegynder
19. november 2004 - 14:17 #13
Ja, det var mellemrummet, der gjorde det. Tusind tak, sukos. Så lærte jeg også noget i dag. Læg et svar. :-)
Avatar billede sukos Juniormester
19. november 2004 - 14:22 #14
Ok, og man lærer jo hver dag! (stort set da!)
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