login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Bekeken per ip

Offline az0w - 20/08/2009 00:58
Avatar van az0wNieuw lid Beste mensen,

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 ?

4 antwoorden

Gesponsorde links
Offline thomasje - 20/08/2009 06:54
Avatar van thomasje MySQL beginner Ik neem aan dat de liedjes in een DB staan.

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.
  1. <?PHP
  2. if(getenv("HTTP_X_FORWARDED_FOR"))
  3. { $ip = getenv("HTTP_X_FORWARDED_FOR"); }
  4. elseif(getenv("HTTP_CLIENT_IP"))
  5. { $ip = getenv("HTTP_CLIENT_IP"); }
  6. else
  7. { $ip = $_SERVER["REMOTE_ADDR"]; }
  8.  
  9. $bVideo = mysql_query("SELECT COUNT(`id`) FROM `stats_video` WHERE `ip` ='".$ip."' AND `ip` ='".$id_van_video."'");
  10. $Video = mysql_result($bVideo,0);
  11.  
  12. if($Video >= '1')
  13. { // De video is al een keer bekeken door die bezoeker
  14. $stats = "UPDATE `stats_video` SET aantal=aantal+1 WHERE ip='".$ip."' AND video='".$id_van_video."'";
  15. mysql_query($stats) or die (mysql_error());
  16. }
  17. else
  18. {
  19. $stats="INSERT INTO `stats_video` (video, ip, aantal) VALUES ('".$id_van_video."','".$ip."','1')";
  20. mysql_query($stats) or die (mysql_error());
  21. }
  22. ?>
Offline az0w - 21/08/2009 01:08
Avatar van az0w Nieuw lid 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.

En hier de mysql screen in de db VOORBEELD.

En de 2e foutje, Hij laat op de pagina elke keer zien, dat hij maar 0

Dit is dan de php dat ik van jou heb + aangepast:P
  1. <?PHP
  2. if(getenv("HTTP_X_FORWARDED_FOR"))
  3. { $ip = getenv("HTTP_X_FORWARDED_FOR"); }
  4. elseif(getenv("HTTP_CLIENT_IP"))
  5. { $ip = getenv("HTTP_CLIENT_IP"); }
  6. else
  7. { $ip = $_SERVER["REMOTE_ADDR"]; }
  8.  
  9. $bVideo = mysql_query("SELECT COUNT(`id`) FROM `stats_video` WHERE `ip` ='".$ip."' AND `ip` ='".$ID."'");
  10. $Video = mysql_result($bVideo,0);
  11.  
  12. if($Video >= '1')
  13. { // De video is al een keer bekeken door die bezoeker
  14. $stats = "UPDATE `stats_video` SET aantal=aantal+1 WHERE ip='".$ip."' AND video='".$bekijk['titel']."'";
  15. mysql_query($stats) or die (mysql_error());
  16. }
  17. else
  18. {
  19. $stats="INSERT INTO `stats_video` (id, video, ip, aantal) VALUES ('".$ID."','".$bekijk['titel']."','".$ip."','1')";
  20. mysql_query($stats) or die (mysql_error());
  21. }
  22. ?>


De code roep ik aan met
  1. Aantal × Bekeken: <?=$Video['aantal'];?>
Offline Stefan14 - 21/08/2009 21:47 (laatste wijziging 21/08/2009 21:50)
Avatar van Stefan14 PHP gevorderde 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().
Offline az0w - 22/08/2009 04:23
Avatar van az0w Nieuw lid 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.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.204s