Elke pagina een "hitcounter"

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mounssif dev

mounssif dev

18/07/2013 20:24:00
Quote Anchor link
Hallo,

Ik heb een nieuws systeem gemaakt, maar nu wil ik een counter voor elke topic.

Ik heb dit wel eens gemaakt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$count_my_page
= ("hitcounter.txt");
$hits = file($count_my_page);
$hits[0] ++;
$fp = fopen($count_my_page , "w");
fputs($fp , "$hits[0]");
fclose($fp);
echo $hits[0];
?>


Maar dit is voor het aantal bezoekers..

Is er een manier om elke topic een hitcounter te zetten via een database?


Mvg
Gewijzigd op 18/07/2013 20:32:39 door Mounssif dev
 
PHP hulp

PHP hulp

20/04/2024 06:39:52
 
Frank Nietbelangrijk

Frank Nietbelangrijk

18/07/2013 20:38:44
Quote Anchor link
ja dat is mogelijk.

Ik ga er van uit dat de nieuws artikelen in een database staan. Dan zul je waarschijnlijk een tabel 'artikelen' hebben. voeg in de tabel een extra kolom toe met de naam 'requests' of iets dergelijks met een standaard waarde 0.
Daarna doe je na iedere query die een artikel uit de database ophaalt een nieuwe query die de waarde uit de vorige query met één verhoogd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

$result
= mysql_query("SELECT * FROM artikelen WHERE id=" . $id);

if($row = mysql_fetch_assoc($result))
{

   // verhoog requests met 1
   mysql_query("UPDATE artikelen SET requests=" . ++$row['requests'] . " WHERE id=" . $id);

   // laat het artikel zien
}
?>
Gewijzigd op 18/07/2013 20:40:52 door Frank Nietbelangrijk
 
Mounssif dev

mounssif dev

18/07/2013 20:49:59
Quote Anchor link
Frank Nietbelangrijk op 18/07/2013 20:38:44:
ja dat is mogelijk.

Ik ga er van uit dat de nieuws artikelen in een database staan. Dan zul je waarschijnlijk een tabel 'artikelen' hebben. voeg in de tabel een extra kolom toe met de naam 'requests' of iets dergelijks met een standaard waarde 0.
Daarna doe je na iedere query die een artikel uit de database ophaalt een nieuwe query die de waarde uit de vorige query met één verhoogd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

$result
= mysql_query("SELECT * FROM artikelen WHERE id=" . $id);

if($row = mysql_fetch_assoc($result))
{

   // verhoog requests met 1
   mysql_query("UPDATE artikelen SET requests=" . ++$row['requests'] . " WHERE id=" . $id);

   // laat het artikel zien
}
?>

Hij werkt heel erg bedankt!
Gewijzigd op 18/07/2013 20:51:29 door mounssif dev
 
Eddy E

Eddy E

18/07/2013 22:16:23
Quote Anchor link
Waarom eerst alles ophalen? Als het voor weergave is, prima. Maar ga geen opgehaalde spullen weer opslaan.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

  // verhoog requests met 1
   mysqli_query("UPDATE artikelen
SET requests = requests + 1
 WHERE id="
. $id);
?>


Gebruik geen mysql_... meer.
 
Mounssif dev

mounssif dev

19/07/2013 01:28:58
Quote Anchor link
Eddy E op 18/07/2013 22:16:23:
Waarom eerst alles ophalen? Als het voor weergave is, prima. Maar ga geen opgehaalde spullen weer opslaan.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

  // verhoog requests met 1
   mysqli_query("UPDATE artikelen
SET requests = requests + 1
 WHERE id="
. $id);
?>


Gebruik geen mysql_... meer.


Wil unieke kijkers, is er geen manier om alleen per unieke bezoeker
 
Eddy E

Eddy E

19/07/2013 06:30:18
Quote Anchor link
Ja, elke view apart opslaan met een UNIQUE INDEX op de combinatie ip-adres,datum en artikel-id.

Als ik morgen weer hetzelfde artokel lees, mag het toch meegeteld worden?
 
Chris PHP

Chris PHP

19/07/2013 10:29:19
Quote Anchor link
Eddy E op 19/07/2013 06:30:18:
Ja, elke view apart opslaan met een UNIQUE INDEX op de combinatie ip-adres,datum en artikel-id.

Als ik morgen weer hetzelfde artokel lees, mag het toch meegeteld worden?


Dit werkt natuurlijk niet als mensen vanuit grotere netwerken een nieuwsartikel lezen. Stel een bedrijf heeft 500 medewerkers en 5 daarvan hebben het nieuwsbericht gelezen, dan krijg je maar 1 te zien aangezien ze allemaal vanaf hetzelfde public ip komen.
 
Obelix Idefix

Obelix Idefix

19/07/2013 15:28:26
Quote Anchor link
Mounssif dev op 19/07/2013 01:28:58:
Wil unieke kijkers, is er geen manier om alleen per unieke bezoeker

En wat als iemand eerst op het werk kijkt, onderweg op de smartphone en later nog een keer thuis? Is dezelfde bezoeker. Hoe wil je dat gaan controleren?
 
Kris Peeters

Kris Peeters

19/07/2013 15:58:43
Quote Anchor link
Mounssif dev op 19/07/2013 01:28:58:
Wil unieke kijkers, is er geen manier om alleen per unieke bezoeker


Dat is 1 van de zaken waar Google heel erg veel energie in heeft gestoken.
Met andere woorden: het is niet zo gemakkelijk als men zou vermoeden.
 
Eddy E

Eddy E

19/07/2013 17:45:15
Quote Anchor link
Het lijkt me haast niet dat de topicstarter zo ver wil gaan.
Aangezien hij nog moet vragen hoe je een teller in een database moet verhogen.

Kan wel: gebruik Google Analystics.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.