Hallo,

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

Ik heb dit wel eens gemaakt:

<?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
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.

<?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
}
?>
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.

<?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!
Waarom eerst alles ophalen? Als het voor weergave is, prima. Maar ga geen opgehaalde spullen weer opslaan.

<?php

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

Gebruik geen mysql_... meer.
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.

<?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
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?
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.
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?

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.
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.

Reageren