Avatar billede haolan Nybegynder
18. november 2004 - 15:35 Der er 12 kommentarer og
1 løsning

Top 10 liste over hits

100 point til den som kan hjælpe mig med at få bikset en top 10 liste sammen.

Jeg har på min side http://www.vivaa.dk en hitcounter der tæller et hit hver gang der bliver trykket på et link. Af disse hit vil jeg gerne have en top 10 liste over de links der har fået flest hits.
Avatar billede haolan Nybegynder
18. november 2004 - 15:37 #1
mit script ser sådan ud:

<?php

include("config.php");

$id = $_GET['id'];

$sql = mysql_query("SELECT link, hits FROM links WHERE id = '$id'") or die (mysql_error());
while ($res = mysql_fetch_array($sql)) {
    $newhit = $res["hits"] + 1;
    $link = $res["link"];
}

mysql_query("UPDATE links SET hits = '$newhit' WHERE id = '$id'") or die (mysql_error());

header("Location: ".$link);

?>
Avatar billede schaefner Juniormester
18. november 2004 - 15:38 #2
Et simpelt eksempel:

$i = 1;
$result = mysql_query("SELECT url, hits FROM tbl_name ORDER BY hits DESC LIMIT 0,10") or die(mysql_error());
while ($data = mysql_fetch_array($result, MYSQL_ASSOC)) {
  $i." ".$data['url']." (".$data['hits'].")<br />";
  $i++;
}
Avatar billede schaefner Juniormester
18. november 2004 - 15:39 #3
<?php
include("config.php");

$i = 1;
$result = mysql_query("SELECT link, hits FROM links ORDER BY hits DESC LIMIT 0,10") or die(mysql_error());
while ($data = mysql_fetch_array($result, MYSQL_ASSOC)) {
  $i." ".$data['link']." (".$data['hits'].")<br />";
  $i++;
}
?>
Avatar billede schaefner Juniormester
18. november 2004 - 15:41 #4
og en lille omskrivning af din egen kode:

<?php
include("config.php");

mysql_query("UPDATE links SET hits = hits+1 WHERE id=".$_GET['id']."") or die (mysql_error());

$result = mysql_query("SELECT link FROM links WHERE id=".$_GET['id']."") or die (mysql_error());
$data = mysql_fetch_array($result);

header("Location: ".$data['link']);
?>
Avatar billede haolan Nybegynder
18. november 2004 - 15:54 #5
--> oki. men hvordan får jeg den så til at vise top10 listen?
der skal vel være en echo af en slags..
altså den skal jo vise de 10 links der ligger øverst på top10 listen sammen med deres beskrivelse, id, tilføjelses dato, antal hits og kategori
Avatar billede haolan Nybegynder
18. november 2004 - 15:55 #6
du får lige en del af kodningen så du kan se hvad der skal bruges:
$kategori = $_REQUEST["kategori"];

$offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0; // Hvis ikke $offset er sat, sættes den til 0
$pr_side = 20;

$r = mysql_query("SELECT * FROM links WHERE kategori = '$kategori' order by id DESC LIMIT $offset,$pr_side");
$w = mysql_query("SELECT * FROM links WHERE kategori = '$kategori' order by overskrift ASC LIMIT $offset,$pr_side");
$antal = mysql_query("select COUNT(*) AS total from links where kategori = '$kategori'");
$antal = mysql_result($antal,0);


while ($res = mysql_fetch_array($w)) {

$hitstxt = "| vist " . $res["hits"] . " gange";

$oprettet = date("d-m-y", strtotime($res["opretdato"]));

echo "<table width=475 cellspacing=0>";
echo "<tr><td style=\"border-bottom: 1px dashed #5F5F5F\"><a href=\"../php/goto.php?id=" . $res["id"] . "\" style=\"color: #006595; font-size: 14; font-family:Verdana;\">" . $res["overskrift"] . "</a></td></tr>";
echo "<tr><td style=\"border-bottom: 1px dashed #5F5F5F\"><font face=\"Verdana\" size=2>" . $res["beskrivelse"] . "</font></td></tr>";
echo "</table>";

echo "<table width=475 cellspacing=0><tr>";
echo "<td width=100 align=left><font face=\"Verdana\" size=1 color=#808080>ID : " . $res["id"] . "</font></td>";
echo "<td width=225 align=center><font face=\"Verdana\" size=1 color=#808080>Tilføjet : " . $oprettet . " ".$hitstxt."</font></td>";
echo "<td width=100 align=right><a href=../php/badlink.php?id=" . $res["id"] . " style=\"color: #808080; font-size: 10; font-family:Verdana;\">Anmeld dødt link</a></td>";
echo "</tr></table>";

echo "<br>";

}
Avatar billede schaefner Juniormester
18. november 2004 - 15:59 #7
Hov ja, jeg glemte lige udskrive resultaterne :)

Nu ved jeg ikke lige hvad dine forskellige felter i tabellen hedder, men det kan du nok godt selv rette. Det samme med opstillingen af de forskellige oplysninger.

<?php
include("config.php");

$i = 1;
$result = mysql_query("SELECT * FROM links ORDER BY hits DESC LIMIT 0,10") or die(mysql_error());
while ($data = mysql_fetch_array($result, MYSQL_ASSOC)) {
  print $i.". ".$data['link']." (Hits: ".$data['hits'].")<br />";
  print "Tilføjet: ".$data['dato'].", Kategori: ".$data['kategori']."<br />";
  print $data['beskrivelse'];
  print "<hr />";
  $i++;
}
?>

Jeg smutter i øvrigt en times tid, så hvis du har problemer - må du vente til jeg er tilbage.

Med venlig hilsen
Jesper Sørensen
Avatar billede haolan Nybegynder
18. november 2004 - 15:59 #8
det er den ovenstående kode der viser linksne.. satte den ind så du kan se hvad de forskellige ting der skal kaldes hedder
Avatar billede schaefner Juniormester
18. november 2004 - 15:59 #9
Jeg kigger på det sidste du har postet når jeg kommer tilbage.
Avatar billede haolan Nybegynder
18. november 2004 - 16:05 #10
takker..
Avatar billede haolan Nybegynder
18. november 2004 - 16:34 #11
jeg har fundet frem til det, så du behøver ikk gøre mere.. takker for hjælpen.. lig svar for points
Avatar billede schaefner Juniormester
18. november 2004 - 17:41 #12
Ok :)

Med venlig hilsen
Jesper Sørensen
Avatar billede haolan Nybegynder
18. november 2004 - 18:01 #13
se evt. resultatet under http://www.vivaa.dk/php/top10.php
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