login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Login bij houden in de db. (Opgelost)

Offline willie - 02/05/2009 17:51
Avatar van willie0 Ik wil graag, weten hoe ik in de db kan bijhouden hoeveel keer er is ingelogd op de site per dag door een persoon.

Dus de db structuur en het gedeelte op de login pagina.
Als eerst de db.
Moet dat met VARCHAR of met TEXT aangemaakt worden.
Of met een andere keuze.

18 antwoorden

Gesponsorde links
Offline svloeberghs - 02/05/2009 18:01
Avatar van svloeberghs Nieuw lid je maakt een kolom aantal_aanmelding bij de user tabel bij en je doet altijd +1 als je de sessie registreert..
int is nog beter daarvoor ;)
Offline willie - 02/05/2009 18:03 (laatste wijziging 02/05/2009 18:05)
Avatar van willie 0 oke, ik ga even kijken.
dat +1 bedoelje zeker voor het loginscript met de update table.
Offline larssy1 - 02/05/2009 18:06 (laatste wijziging 02/05/2009 18:07)
Avatar van larssy1 MySQL beginner yep , aantal_aanmelding +1

dat is alles^^
Offline willie - 02/05/2009 18:07
Avatar van willie 0 oke en de instelling in de db heeft geen waarde nodig?
Offline larssy1 - 02/05/2009 18:18
Avatar van larssy1 MySQL beginner hoe bedoel je?

maak in de tabel waar in je je leden opslaat,
een nieuwe kolom genaamd `keer_ingelogd`, INT, `3`

Dan als de gebruiker is ingelogd, zet je er een update query neer, zodat er +1 komt bij keer_ingelogd.

En natuurlijk zet je in de cronjob dat het om 1uur snachts op 0 word gezet.
Offline willie - 04/05/2009 15:38 (laatste wijziging 04/05/2009 15:49)
Avatar van willie 0 Maar hij moet juist niet op 0 worden gezet.
Het is voor het bij houden per jaar van het bezoek aan de site.

Nou moet ik het update gedeelte hier inplaatsen.
Alleen weet ik niet precies waar ik dat het beste tussen kan zetten.Plaatscode: 136345
Offline ArieMedia - 04/05/2009 15:50 (laatste wijziging 04/05/2009 15:55)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Ik log elke bezoeker op mn site, en heb hier een apparte tabel voor, denk dat jij precies dezelfde structuur kan gebruiken.

  1. id pagina ip dag refer gebr_id

Pagina > welke pagina?
dag > DATE
refer > Vanaf waar?

Edit: ziet er bij mij zo uit
  1. id pagina ip dag refer
  2. 2011 blog 92.64.95.62 2009-05-04 http://arie2zero.nl/pagina/script
  3. 2012 blog 92.64.95.62 2009-05-04 http://arie2zero.nl/pagina/script
  4. 2013 blog 92.64.95.62 2009-05-04 http://arie2zero.nl/pagina/script
  5. 2014 blog 92.64.95.62 2009-05-04 http://arie2zero.nl/pagina/script
Offline willie - 04/05/2009 15:51 (laatste wijziging 04/05/2009 15:58)
Avatar van willie 0 ja, zou kunnen.

heb jij hiervoor een compleet script dan, met db gegevens?
Offline ArieMedia - 04/05/2009 16:19 (laatste wijziging 04/05/2009 16:28)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Script:
script gebruik is op eigen verantwoordelijkheid, het is "snel" gemaakt en het is mijn tijdelijke oplossing
  1. <?php
  2. class statistieken {
  3.  
  4. function statistieken() {
  5. $this->pageit();
  6. }
  7.  
  8. function pageit() {
  9. if(isset($_GET['p'])) {
  10. $page = addslashes($_GET['p']);
  11. $sql = 'INSERT INTO stats__page
  12. (pagina, ip, dag, refer)
  13. VALUES ("'.$page.'", "'.$_SERVER['REMOTE_ADDR'].'", NOW(), "'.$_SERVER['HTTP_REFERER'].'")';
  14. }
  15. }
  16.  
  17. function counthits() {
  18. $sql = 'SELECT DISTINCT ip
  19. FROM stats__page
  20. WHERE dag = DATE(NOW())';
  21. $res = mysql_query($sql);
  22. $uniek = mysql_num_rows($res);
  23.  
  24. $sql = 'SELECT DISTINCT ip
  25. FROM stats__page';
  26. $res = mysql_query($sql);
  27. $tuniek = mysql_num_rows($res);
  28.  
  29. $sql = 'SELECT COUNT(*) as pv, MAX(id) as totaal
  30. FROM stats__page
  31. WHERE dag = DATE(NOW())';
  32. $res = mysql_query($sql);
  33. $pv = mysql_fetch_object($res);
  34. $perc = $pv->pv / $pv->totaal;
  35. $perc = number_format($perc * 100, 1, ',', '.');
  36. $stats = array('uniek' => $uniek,
  37. 'tuniek' => number_format($tuniek, 0, ',', '.'),
  38. 'pv' => number_format($pv->pv, 0, ',', '.'),
  39. 'tpv' => number_format($pv->totaal, 0, ',', '.'). ' ('.$perc.'%)');
  40. return $stats;
  41. }
  42. }
  43. ?>


en dan gewoon dit op je pagina zetten: $stats = new statistieken;
Dan houd het alles bij.
stats ophalen $stats->counthits();
Offline willie - 04/05/2009 17:24
Avatar van willie 0 Oke, ik ge er even mee aan de slag.
alvast bedankt.
Offline Joost - 04/05/2009 17:59 (laatste wijziging 04/05/2009 18:02)
Avatar van Joost PHP expert Voor wat jij wilt, is dit eigenlijk ook voldoende:

Database tabel "Login" oid:
user_id | datum | ip

Dan schrijf je bij elke keer dat iemand inlogt een record bij in die tabel.
Dan kan je via een query kijken hoevaak iemand afgelopen dag, afgelopen maand, afgelopen jaar etc, etc, is ingelogd Dan hoef je ook nooit data te verwijderen en/of te resetten, wat beter is voor de 'houdbaarheid' van je programma.
Offline willie - 04/05/2009 18:18 (laatste wijziging 04/05/2009 18:38)
Avatar van willie 0 Oke, maar ik heb al zitten kijken.
maar kwam er niet uit met dat andere script.

Zelf had ik dit gemaakt, maar dat werkt helaas niet.
  1. // sessie variabelen invoeren
  2.  
  3. $_SESSION['gebruikersnaam'] = $gegevens['gebruikersnaam'];
  4. $_SESSION['email'] = $gegevens['email'];
  5. $_SESSION['id'] = $gegevens['gebruiker_id'];
  6. $query = "UPDATE a_gebruikers SET
  7. log-ch = 'log-ch+1'
  8. WHERE 'gebruiker_id' = $gegevens[gebruiker_id]";
  9.  
  10. $berichten = "SELECT * FROM berichten WHERE ontvanger = '".$_POST['email']."' AND gelezen = 0";
  11.  
  12.  
  13. $sql_aantal = mysql_query($berichten) or die(mysql_error());
  14.  
  15. $aantal = mysql_num_rows($sql_aantal);
  16.  
  17. if($aantal == 0)
  18. {
  19. include 'gelogd.php';
  20. }
  21. if($aantal != 0)
  22. {
  23. include('berichten.php');
  24. }
  25.  
  26.  
  27.  
  28. }

hiermee gebeurt er niets.
mijn idee was eigenlijk, om alleen het aantal keren van het inloggen op een account bij te houden.
Het gaat hier dus om regel 6,7 en 8
De rest werkt wel wat er staat.
Offline Joost - 04/05/2009 18:58 (laatste wijziging 04/05/2009 19:00)
Avatar van Joost PHP expert
  1. $query = "UPDATE a_gebruikers SET
  2. log-ch = log-ch + 1 WHERE gebruiker_id = ".$gegevens['gebruiker_id'];

Je deed iets fout bij het stukje waarbij je log-ch met 1 verhoogde, en je had het gebruikersid niet helemaal goed ge-escaped.
Offline willie - 04/05/2009 21:06
Avatar van willie 0 Ik heb het aan gepast, maar de log-ch wordt niet bij gewerkt.

de rij log-ch staat in de db op INT(11) not null en standaardwaarde 0.

Hij blijft gewoon op 0 staan
Offline Joost - 04/05/2009 21:17
Avatar van Joost PHP expert En als je de query eens in phpMyAdmin gooit, en even het gebruikers id veranderd naar een getal (van een gebruiker )? Wordt er dan wel 1 bij opgeteld?
Offline willie - 04/05/2009 21:25 (laatste wijziging 04/05/2009 21:52)
Avatar van willie 0 Dan krijg ik deze melding
  1. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$query = "UPDATE a_gebruikers SET log-ch = log-ch + 1 WHERE gebruiker_id = '4'"' at line 1


Ik heb hier maar even het hele loginscript neer gezetPlaatscode: 136363
zo als die oorspronkelijk is, zonder het UPDATE gedeelte er in.
--------------------------------------------------------

Ik heb de oplossing gevonden in de Tutorials.
  1. $query = "UPDATE a_gebruikers SET log_ch = log_ch + 1 WHERE gebruiker_id =".$gegevens['gebruiker_id'] ;
  2. mysql_query($query) or die (mysql_error());

Nu wordt hij geupdate bij elke inlog.
Offline Joost - 04/05/2009 21:47 (laatste wijziging 04/05/2009 21:49)
Avatar van Joost PHP expert Je moet even alleen tussen de " " invoeren in phpMyAdmin, niet met $query enzo  
Offline willie - 04/05/2009 21:54
Avatar van willie 0
Medieval schreef:
Je moet even alleen tussen de " " invoeren in phpMyAdmin, niet met $query enzo  


Ja klein foutje van mij, ben nog niet zo goed, maar komt nog wel een keer(hoop ik).
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2026 Sitemasters.be - Regels - Laadtijd: 0.257s