Avatar billede casio151 Nybegynder
06. marts 2007 - 10:21 Der er 15 kommentarer

Tæller til at se, hvor mange gange siden er vist

Jeg skal på http://blog.a-helbo.dk have lavet sider, hvor man skal kunne se, hvor mange gange der er blevet klikket på filen. Ud for filen skal der stå (med rene tal), hvor mange gange filen er blevet klikket på. Hvordan laver man sådan en tæller?
Avatar billede jakobdo Ekspert
06. marts 2007 - 11:40 #1
Jeg ville lave det sådan her:

Du laver en tabel, hvor du gemmer følgende info:

id, tekst, link, hits

Så laver du links på siden ala:

<a href="redirect.php?id=1">(Teksten fra databasen)</a>
På redirect.php laver du så:

tæl hits op med 1, hvor ID passer med $_GET['id']
Og derefter laver du:

header('Location: ' (LINK FRA DATABASEN, HVOR ID = $_GET['id']));
exit();
Avatar billede casio151 Nybegynder
06. marts 2007 - 18:02 #2
Okay, nu er jeg ikke så meget inde i PHP og MySQL. Kan man finde en guide til det, eller kan du uddybe nærmere?
Avatar billede jakobdo Ekspert
06. marts 2007 - 19:51 #3
Denne kode virker:

<?php
//http://www.eksperten.dk/spm/766381
require_once('connect.php');

if(is_numeric($_GET['link']))
{
    $query = mysql_query("SELECT link FROM tbl_766381 WHERE id = '".intval($_GET['link'])."' LIMIT 1");
    if(mysql_num_rows($query)==1)
    {
        $row = mysql_fetch_assoc($query);
        $link = $row['link'];
        mysql_query("UPDATE tbl_766381 SET hits=hits+1 WHERE id = '".intval($_GET['link'])."' LIMIT 1");
        header('Location: ' . $link);
        exit();
    }
}

$query = mysql_query('SELECT id, tekst, titel, hits FROM tbl_766381 ORDER BY tekst') or die(mysql_error());
if(mysql_num_rows($query)>0)
{
    while($row = mysql_fetch_assoc($query))
    {
        echo '<a target="_blank" href="'.$_SERVER['PHP_SELF'].'?link='.$row['id'].'" title="'.$row['title'].'">'.$row['tekst'].'</a> - Hits: '.$row['hits'].'<br />';
    }
}

?>

Du kan se resultatet her: http://www.codebreaker.dk/exp/766381exp.php
Avatar billede sjh Nybegynder
06. marts 2007 - 23:56 #4
fint script jakobdo ;)
Avatar billede casio151 Nybegynder
07. marts 2007 - 07:21 #5
Okay, fatter ikke så meget hehe. Prøver lige at lave en side på, hvordan jeg gerne vil have det til at se ud. Skriver lige tilbage senere med sidens adresse.
Avatar billede jakobdo Ekspert
07. marts 2007 - 08:14 #6
sjh: Tak skal du have! :o)
Avatar billede casio151 Nybegynder
08. marts 2007 - 21:18 #7
Så, har lavet en side som viser noglelunde, hvordan jeg gerne vil have det til at stå på siden.
http://www.a-helbo.dk/hits/index.htm
Avatar billede jakobdo Ekspert
08. marts 2007 - 21:21 #8
Så retter du jo bare koden her:
echo '<a target="_blank" href="'.$_SERVER['PHP_SELF'].'?link='.$row['id'].'" title="'.$row['title'].'">'.$row['tekst'].'</a> - Hits: '.$row['hits'].'<br />';
Avatar billede sjh Nybegynder
08. marts 2007 - 22:02 #9
casio151 : du skal nok også omdøbe "index.htm" til "index.php" og være sikker på at server kan køre php-script ;)
Avatar billede sjh Nybegynder
08. marts 2007 - 22:36 #10
Så er det noget i den stil du skal gøre.. HUSK det skal være i en fil med efternavn .php (index.php)


<?php
  //http://www.eksperten.dk/spm/766381
  require_once('connect.php');

  if(is_numeric($_GET['link']))
  {
    $query = mysql_query("SELECT link FROM tbl_766381 WHERE id = '".intval($_GET['link'])."' LIMIT 1");
    if(mysql_num_rows($query)==1)
    {
      $row = mysql_fetch_assoc($query);
      $link = $row['link'];
      mysql_query("UPDATE tbl_766381 SET hits=hits+1 WHERE id = '".intval($_GET['link'])."' LIMIT 1");
      header('Location: ' . $link);
      exit();
    }
  }

  $query = mysql_query('SELECT id, tekst, titel, hits FROM tbl_766381 ORDER BY tekst') or die(mysql_error());
  if(mysql_num_rows($query)>0)
  {
    unset($strTable);
    while($row = mysql_fetch_assoc($query))
    {
      /* Her opbygges din table */
      $strTable .= '
      <tr>
        <td>'.$row['tekst'].'</td>
        <td><a target="_blank" href="'.$_SERVER['PHP_SELF'].'?link='.$row['id'].'">'.$row['tekst'].'</a></td>
        <td>'.$row['hits'].'</td>
      </tr>';
      /* Her opbygges din table */
    }
  }
?>
<html>
  <head>
    <meta http-equiv="Content-Language" content="da">
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Filnavn</title>
  </head>
  <body>
    <div align="center">
      <table border="1" cellpadding="0" style="border-collapse: collapse" bordercolor="#000000" width="375">
      <tr>
        <td>Filnavn</td>
        <td>Download</td>
        <td>Hits</td>
      </tr>
      <?=$strTable;?>
      </table>
    </div>
  </body>
</html>
Avatar billede casio151 Nybegynder
10. marts 2007 - 11:27 #11
Hvad så med den der connect.php fil... Hvad skal der stå i den?
Avatar billede jakobdo Ekspert
10. marts 2007 - 11:46 #12
F.eks.:

<?php

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
  die('Not connected : ' . mysql_error());
}

// make foo the current db
$db_selected = mysql_select_db('foo', $link);
if (!$db_selected) {
  die ('Can\'t use foo : ' . mysql_error());
}
?>

Husk at ret data til.
Avatar billede casio151 Nybegynder
10. marts 2007 - 21:52 #13
Okay prøver jeg i morgen. Vender tilbage når jeg har prøvet. Men tak indtil videre! :)
Avatar billede casio151 Nybegynder
15. marts 2007 - 10:51 #14
Kan sku ikke finde ud af det.
Avatar billede sjh Nybegynder
15. marts 2007 - 10:58 #15
Hvad er det du ikke kan finde ud af..?? hvad fejl for du..??
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