Avatar billede Jakie Juniormester
12. august 2011 - 03:19 Der er 12 kommentarer og
1 løsning

Indsætte pageviews i i mysql tabel

Hej Eksperter :)

Jeg vil gerne have visninger, så man kan se, hvor mange der har set forumindlægget, så jeg skal ligesom indsætte visninger i min tabel views.

Men hvordan kunne det script se ud?

På forhånd tak for hjælpen :)
12. august 2011 - 05:47 #1
Det lyder som en 'hitcounter'.  Her er en simpel opskrift:

http://www.developingwebs.net/phpclass/hitcounter.php
Avatar billede jakobdo Ekspert
12. august 2011 - 10:33 #2
Jeg ville nok lave counteren i mysql og ikke i en text fil, som Christian henviser til.
Avatar billede magic-mouse Novice
12. august 2011 - 11:13 #3
Først kører du flg. i din SQL editor, hvor table_name = din tabels navn.

ALTER TABLE table_name
ADD counter INT


Så lægger du til denne kode linie der hvor du henter din forum post.

Husk at skifte table_name, post_id og some_value med det de skal være.

samt sætte `` rundt variablerne.

<?php
$sql = 'UPDATE table_name SET counter = counter + 1 WHERE post_id = some_value';

mysql_query($sql);
?>
Avatar billede Jakie Juniormester
12. august 2011 - 16:39 #4
'tak for jeres svar! :)

Jeg har dog valgt at bruge magic-mouse's metode - der bare et problem - tabellens værdi bliver ved med at have null.

kode:

$sql = "SELECT
            topic_id,
            topic_subject
        FROM
            topics
        WHERE
            topics.topic_id = " . mysql_real_escape_string($_GET['id']);
           
$sql2 = "UPDATE `topics` SET `counter` = `counter` + 1 WHERE `topic_id` = " . mysql_real_escape_string($_GET['id']);

mysql_query($sql2);           
           

Nogen der kan se hvad jeg gør forkert?
Avatar billede jakobdo Ekspert
13. august 2011 - 07:30 #5
Har du en default værdi i dit felt counter?
Hvis ikke, sæt den til 0
15. august 2011 - 06:34 #6
Jakie, eftersom du valgte at gå en anden vej end mit forslag, så holdt jeg mig udenfor den videre debat.  Men den kode du viser ser rigtig nok ud for mig.  Ligger problemet måske i tabellen?  Hvordan har du defineret feltet `counter`?  Det er vel en INT?  Prøv at set en 'error message' på, så mysql selv fortæller dig hvad problemet er, altså:

$sql2 = "UPDATE `topics` SET `counter` = `counter` + 1 WHERE `topic_id` = " . mysql_real_escape_string($_GET['id']) OR DIE(mysql_error());

mysql_query($sql2);
Avatar billede magic-mouse Novice
15. august 2011 - 07:30 #7
Eventuelt gøre sådan her:
$sql2 = "UPDATE `topics` SET `counter` = '0'";
mysql_query($sql2);

og kør den 1 gang.

Det den kode gør er at sætte værdien 0 i alle felter.
Avatar billede Jakie Juniormester
15. august 2011 - 12:17 #8
Det er fordi at default ikke var sat til 0 - beklager mit sene svar :)
Avatar billede Jakie Juniormester
15. august 2011 - 12:17 #9
Der må gerne vedlægges svar:)
16. august 2011 - 15:35 #10
Du siger ikke hvem du ønsker svar fra.  Ikke fra mig - du brugte andre indlæg til din løsning.
Avatar billede Jakie Juniormester
16. august 2011 - 18:34 #11
Det må være jakobdo, da det var hans løsning :)
18. august 2011 - 19:21 #12
Jackie, du fik ikke noget svar.  En mulighed er, at du selv opretter svar og accepterer det.  Så er der 'ryddet op', og pointene kommer tilbage til dig selv.  Skulle der så bagefter komme bud efter points, kan du oprette et spørgsmål 'Points til xxxx'.
Avatar billede magic-mouse Novice
19. august 2011 - 20:26 #13
Skulle nu mene at det var min løsning som blev brugt. At der så manglede default værdi var en lille korrigering men hovedsageligt var det jo min kode fra #3 som anvendes (hvis jeg forstår korrekt) så jeg vælger på den baggrund at lægge et svar og så må du selv bestemme om du godtager argumentet.
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