Avatar billede peet_dk Novice
22. november 2002 - 16:50 Der er 9 kommentarer og
1 løsning

Hjælp til at lave "top 10 over mest læste artikeler"

Hejsa, jeg kunne godt tænke mig sådan en over sigt som der er til højre på den her side: http://www.scope.dk/mestlaestefilmografier.php

Den skal bruges på en "tips og tricks" side. Jeg er slet ikke haj til php eller sql. Det der er på min side http://www.peet.dk er alt sammen nogle forskellige script jeg har downloadet og fulgt deres instruktion. Og den eneste som sådan "php" command som jeg selv har lavet er <?php include("blablabla");?>

Det bedste ville være hvis der fandes et færdig lavet script hvor jeg bare skulle tilføje et "tag" på hver arktikel. Hvor sql så registert "nyeste arktikel" "mest læste arktikel" o.s.v.

Håber i forstår hvad jeg vil.....
Avatar billede iqzero Nybegynder
22. november 2002 - 16:57 #1
Mht. antal læste skal du jo bare 'tælle' hvor mange gange en artikel er blevet læst.

Dvs. en SQL query i stil med:

mysql_query("UPDATE artikelLaest SET antal=antal+1 WHERE artikelId ='".$nuvaerendeArtikel."'");

Og i top-whatever'en skal du så have en query i stil med denne:

mysql_query(SELECT * FROM artikelLaest ORDER BY antal);
Avatar billede iqzero Nybegynder
22. november 2002 - 16:58 #2
og i anden query skal vi så lige huske "" uden om. ;)
Avatar billede tipsen Nybegynder
22. november 2002 - 17:00 #3
og da det skulle være en top 10 ville det måske også være en meget god ide med:

SELECT * FROM artikelLaest ORDER BY antal DESC LIMIT 10
Avatar billede nemeier Nybegynder
22. november 2002 - 17:25 #4
Du brude gøre din statistik periode/dato afhænnig idet du ellers kan resikere at de 10 artikler du skrev for 5 år siden som vagte stor intresse altid vil blive vist øverst.

Ved at opdatere pr. dato kan du lave en statistik som f.eks. går en mdr. tilbage i tiden.
Avatar billede iqzero Nybegynder
22. november 2002 - 17:37 #5
Det må jeg jo give tipsen ret i. ;)
Avatar billede peet_dk Novice
22. november 2002 - 19:21 #6
men hvad skal jeg tilføje i de arktikler jeg har? Skal jeg ikke ligge noget kode ind i dem, som så sender. Hvad kalder man det jeg søger? Det er mere så jeg kan læse nogle guides rund omkring. Jeg fatter nemlig hat af det ind til vidre...

Det som iqzero skriver forstår jeg godt, altså

Det her ind vha. phpMyAdmin: (Run SQL query/queries on database)

mysql_query("UPDATE artikelLaest SET antal=antal+1 WHERE artikelId ='".$nuvaerendeArtikel."'");

Også det her ind på selve side(?)

(SELECT * FROM "artikelLaest" ORDER BY antal DESC LIMIT 10);
Avatar billede iqzero Nybegynder
22. november 2002 - 23:18 #7
Nej, du misforstod:

mysql_query("UPDATE artikelLaest SET antal=antal+1 WHERE artikelId ='".$nuvaerendeArtikel."'");

skal køres ved hver artikel - dvs. hver gang den bliver læst. (Inkrementerer antal læste gange.)

mysql_query(SELECT * FROM "artikelLaest" ORDER BY antal DESC LIMIT 10);

skal bruges til at generere selve top 10'en. Oversættelse: SELECT * from artikelLæst (vælg alt fra tabellen artikelLæst) ORDER BY antal DESC (sorter efter antal - faldende (10, 9, 8)) LIMIT 10 (hvis kun de første 10 resultater.)
Avatar billede peet_dk Novice
23. november 2002 - 21:25 #8
Well.. nu har jeg oprettet 5 php filer som hedder:

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php mysql_query("UPDATE artikelLaest SET antal=antal+1 WHERE artikelId ='".$nuvaerendeArtikel."'"); ?>

test2
</body>
</html>

Ud over dem har jeg oprettet en "top10" som indenholder det her:
(SERVER, BRUGERNAVN, PASSWORD og DATABASE har jeg selv sat ind)

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
  $connection = mysql_connect("localhost", "brugern", "kodeordert");
  mysql_select_db("databasen", $connection);
?>
<?php
mysql_query("SELECT * FROM artikelLaest ORDER BY antal DESC LIMIT 4");
  ?>
</body>
</html>

Ud over det jeg har også oprettet en database i phpMyAdmin

Screenshot:

http://www.peet.dk/tmp/test/ss.jpg

Alle filerne kan i finde her: http://www.peet.dk/tmp/test

Når jeg køre http://www.peet.dk/tmp/test/top10.php sker der intet...
Avatar billede peet_dk Novice
25. november 2002 - 17:54 #9
ingen der kan hjælpe?
Avatar billede peet_dk Novice
27. november 2002 - 21:24 #10
Hmm.. jeg har arbejdet vidre med kraftig hjælp fra nyhedsgruppen alt.php.sql

Så nu ser de "test sider" sådan her ud:

----kodestart--------
<html>
<head>
<title>TEST PAGE</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
test1<br>
<?php
      // Connecting, selecting database
      $link = mysql_connect("localhost", "sql_brugernavn", "kodeord")  or die("Could not connect");
      mysql_select_db("database")  or die("Could not select database");

      // Performing SQL query
    $query = "UPDATE artikelLaest SET antal=antal+1 WHERE artikelId='".$nuvaerendeArtikel."'";
    $result = mysql_query($query,$link)  or die("Query failed");
{
    if (mysql_affected_rows($link) == 0)
      // Means that your record do not exists in your database. You should Add it.
        // BTW, Antal means number of hits in your language ??
        // BTW, Antal means number of hits in your language ??
      $query = "INSERT INTO artikelLaest (artikelId,antal) VALUES ('',1)";
      $result = mysql_query($query,$link)  or die("Query failed");
    }
    mysql_close($link);
?>

</body>
</html>
-----kodeslut----------

Dem har jeg så oprettet et par stykker af.. Og så er det så meningen af denne side skulle vise de mest viste sider som en top10 (top "whatever")

---kodestart--------
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
top10:
<?php

// Connecting, selecting database
$link = mysql_connect("localhost", "sql_brugernavn", "kodeord")
    or die("Could not connect");
print "Connected successfully";
mysql_select_db("database")
    or die("Could not select database");
   
// Performing SQL query
$query = "SELECT artikelId,antal  FROM artikelLaest ORDER BY antal DESC
LIMIT 4";
$result = mysql_query($query,$link)  or die("Query failed");
   
// Printing results in HTML
if (mysql_num_rows($result) != 0)
{
  print "<table>\n";
  while ($line = mysql_fetch_array($result)) {
        print "\t<tr>\n";
        print "\t\t<td>".$line["artikelId"]."</td>\n";
        print "\t\t<td>".$line["antal"]."</td>\n";
        print "\t</tr>\n";
    }
    print "</table>\n";
}
else
{  // Do you already add something in your database ?? i didn't see an insert script in your page ?
    print "there's no data in your database";
}
@mysql_free_result($result);
@mysql_close($link);

?>
</body>
</html>
-----kodeslut------

Men det gør den ikke... den viser kun et tal som stiger med 2 for hver gang der bliver klikket på en af test siderne... Jeg aner ikke hvad jeg skal gøre nu.. kan i hjælpe?

her er et screenshot af hvordan min phpmyadmin ser ud:

http://www.peet.dk/tmp/test/ss4.jpg
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