Ik heb een liedjes en video's systeem, nu wil ik graag de volgende erin zetten. Maar hierbij vraag ik graag om jullie hulp!
Ik wil bij de video's het aantal x bekeken erin maken, maar dan dat het ook per ip wordt opgeslagen. Hoe kan ik dit het beste aanpakken:p? Als het me gelukt is met jullie hulp, dan probeer ik het ook met de liedjes het aantal x beluisterd.
Wie wilt me hierbij graag helpen ?
Je maakt dan een nieuwe tabel met kollommen voor id, video, ip, aantal (aantal keer bekeken)
Dan maak je een script wat eerst kijkt of het unieke bekijkers zijn. (Wil je echt alle vieuws zien kan je de controle regel ook weghalen.)
Je kan dit op de volgende manier doen, maar mischien zijn er ook wel snellere opties.
<?PHP
if(getenv("HTTP_X_FORWARDED_FOR"))
{ $ip = getenv("HTTP_X_FORWARDED_FOR"); }
elseif(getenv("HTTP_CLIENT_IP"))
{ $ip = getenv("HTTP_CLIENT_IP"); }
else
{ $ip = $_SERVER["REMOTE_ADDR"]; }
$bVideo = mysql_query("SELECT COUNT(`id`) FROM `stats_video` WHERE `ip` ='".$ip."' AND `ip` ='".$id_van_video."'");
$Video = mysql_result($bVideo,0);
if($Video >= '1')
{ // De video is al een keer bekeken door die bezoeker
$stats = "UPDATE `stats_video` SET aantal=aantal+1 WHERE ip='".$ip."' AND video='".$id_van_video."'";
mysql_query($stats) or die (mysql_error());
}
else
{
$stats="INSERT INTO `stats_video` (video, ip, aantal) VALUES ('".$id_van_video."','".$ip."','1')";
mysql_query($stats) or die (mysql_error());
}
?>
Bedankt Thomasje voor je hulp. Maar toch klopt er iets niet:P.
Elke keer als je de pagina vernieuwd slaat de script een nieuwe regel in de database van de zelfde id & ip. Hier een screen als voorbeeld VOORBEELD.
<?PHP
if(getenv("HTTP_X_FORWARDED_FOR"))
{ $ip = getenv("HTTP_X_FORWARDED_FOR"); }
elseif(getenv("HTTP_CLIENT_IP"))
{ $ip = getenv("HTTP_CLIENT_IP"); }
else
{ $ip = $_SERVER["REMOTE_ADDR"]; }
$bVideo = mysql_query("SELECT COUNT(`id`) FROM `stats_video` WHERE `ip` ='".$ip."' AND `ip` ='".$ID."'");
$Video = mysql_result($bVideo,0);
if($Video >= '1')
{ // De video is al een keer bekeken door die bezoeker
$stats = "UPDATE `stats_video` SET aantal=aantal+1 WHERE ip='".$ip."' AND video='".$bekijk['titel']."'";
mysql_query($stats) or die (mysql_error());
}
else
{
$stats="INSERT INTO `stats_video` (id, video, ip, aantal) VALUES ('".$ID."','".$bekijk['titel']."','".$ip."','1')";
mysql_query($stats) or die (mysql_error());
}
?>
je geeft id ook een waarde mee, (welke 0 is omdat je geen waarde toewijst) dat moet je dus niet doen. het id is een nummer dat uniek is voor elk record. Dit moet je dan ook door de database laten invullen m.b.v. de functie auto_increment en moet je gewoon weglaten uit je insert query.
Daarnaast staat in de select query een fout, namelijk twee keer ip als voorwaardekolom, maar de tweede moet uiteraard id zijn (waar het id van de film in staat)
Verder is de aangegeven methode door thomas juist, maar eventueel zou je het nog verder kunnen uitbreiden door voor elke keer bekeken een nieuw record aan te maken en daarbij de kolom aantal te vervangen voor een een datetime veld.
Dan kun je het aantal keer bekeken bepalen door de records te tellen, immers elk record is 1.
Dit levert wel meer records op uiteraard, maar je kan wel per ip en filmpje bekijken hoeveel keer en wanneer ze gekeken hebben.
Dit laatste is bijv. leuk om statistieken mee te maken op welk tijdstip van de dag de meeste filmpjes gekeken worden.
EDIT:
zoals je hem nu aanroept, zal hij overigens altijd 0 blijven aangeven, je maakt gebruik van de mysql_result van de select query, maar dan moet je de kolom aantal uiteraard wel opnemen in de geselecteerde kolommen. Nu heb je alleen de count().
Stefan14, bedankt dat je me probeert te helpen, maar wat je zegt is voor mij allemaal te ingewikkeld:$. Ik ben pas een beginner in php haha. Moet ik nou de '0' in regel 10 weg halen? Dan lukt het ook niet.