Login bij houden in de db. (Opgelost)
willie - 02/05/2009 17:51
0
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
svloeberghs - 02/05/2009 18:01
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 ;)
willie - 02/05/2009 18:03 (laatste wijziging 02/05/2009 18:05)
0
oke, ik ga even kijken.
dat +1 bedoelje zeker voor het loginscript met de update table.
larssy1 - 02/05/2009 18:06 (laatste wijziging 02/05/2009 18:07)
MySQL beginner
yep , aantal_aanmelding +1
dat is alles^^
willie - 02/05/2009 18:07
0
oke en de instelling in de db heeft geen waarde nodig?
larssy1 - 02/05/2009 18:18
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.
willie - 04/05/2009 15:38 (laatste wijziging 04/05/2009 15:49)
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
ArieMedia - 04/05/2009 15:50 (laatste wijziging 04/05/2009 15:55)
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.
id pagina ip dag refer gebr_id
id pagina ip dag refer gebr_id
Pagina > welke pagina?
dag > DATE
refer > Vanaf waar?
Edit: ziet er bij mij zo uit
id pagina ip dag refer
2011 blog 92.64.95.62 2009-05-04 http://arie2zero.nl/pagina/script
2012 blog 92.64.95.62 2009-05-04 http://arie2zero.nl/pagina/script
2013 blog 92.64.95.62 2009-05-04 http://arie2zero.nl/pagina/script
2014 blog 92.64.95.62 2009-05-04 http://arie2zero.nl/pagina/script
id pagina ip dag refer
2011 blog 92. 64. 95. 62 2009 - 05 - 04 http: //arie2zero.nl/pagina/script
2012 blog 92. 64. 95. 62 2009 - 05 - 04 http: //arie2zero.nl/pagina/script
2013 blog 92. 64. 95. 62 2009 - 05 - 04 http: //arie2zero.nl/pagina/script
2014 blog 92. 64. 95. 62 2009 - 05 - 04 http: //arie2zero.nl/pagina/script
willie - 04/05/2009 15:51 (laatste wijziging 04/05/2009 15:58)
0
ja, zou kunnen.
heb jij hiervoor een compleet script dan, met db gegevens?
ArieMedia - 04/05/2009 16:19 (laatste wijziging 04/05/2009 16:28)
PHP ver gevorderde
Script:
script gebruik is op eigen verantwoordelijkheid, het is "snel" gemaakt en het is mijn tijdelijke oplossing
<?php
class statistieken {
function statistieken() {
$this->pageit();
}
function pageit() {
if(isset($_GET['p'])) {
$page = addslashes($_GET['p']);
$sql = 'INSERT INTO stats__page
(pagina, ip, dag, refer)
VALUES ("'.$page.'", "'.$_SERVER['REMOTE_ADDR'].'", NOW(), "'.$_SERVER['HTTP_REFERER'].'")';
mysql_query($sql) or die(mysql_error());
}
}
function counthits() {
$sql = 'SELECT DISTINCT ip
FROM stats__page
WHERE dag = DATE(NOW())';
$res = mysql_query($sql);
$uniek = mysql_num_rows($res);
$sql = 'SELECT DISTINCT ip
FROM stats__page';
$res = mysql_query($sql);
$tuniek = mysql_num_rows($res);
$sql = 'SELECT COUNT(*) as pv, MAX(id) as totaal
FROM stats__page
WHERE dag = DATE(NOW())';
$res = mysql_query($sql);
$pv = mysql_fetch_object($res);
$perc = $pv->pv / $pv->totaal;
$perc = number_format($perc * 100, 1, ',', '.');
$stats = array('uniek' => $uniek,
'tuniek' => number_format($tuniek, 0, ',', '.'),
'pv' => number_format($pv->pv, 0, ',', '.'),
'tpv' => number_format($pv->totaal, 0, ',', '.'). ' ('.$perc.'%)');
return $stats;
}
}
?>
<?php
class statistieken {
function statistieken( ) {
$this -> pageit ( ) ;
}
function pageit( ) {
$sql = 'INSERT INTO stats__page
(pagina, ip, dag, refer)
VALUES ("' . $page . '", "' . $_SERVER [ 'REMOTE_ADDR' ] . '", NOW(), "' . $_SERVER [ 'HTTP_REFERER' ] . '")' ;
}
}
function counthits( ) {
$sql = 'SELECT DISTINCT ip
FROM stats__page
WHERE dag = DATE(NOW())' ;
$sql = 'SELECT DISTINCT ip
FROM stats__page' ;
$sql = 'SELECT COUNT(*) as pv, MAX(id) as totaal
FROM stats__page
WHERE dag = DATE(NOW())' ;
$perc = $pv -> pv / $pv -> totaal ;
$stats = array ( 'uniek' => $uniek , 'tpv' => number_format ( $pv -> totaal , 0 , ',' , '.' ) . ' (' . $perc . '%)' ) ; return $stats ;
}
}
?>
en dan gewoon dit op je pagina zetten: $stats = new statistieken;
Dan houd het alles bij.
stats ophalen $stats->counthits();
willie - 04/05/2009 17:24
0
Oke, ik ge er even mee aan de slag.
alvast bedankt.
willie - 04/05/2009 18:18 (laatste wijziging 04/05/2009 18:38)
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.
// sessie variabelen invoeren
$_SESSION['gebruikersnaam'] = $gegevens['gebruikersnaam'];
$_SESSION['email'] = $gegevens['email'];
$_SESSION['id'] = $gegevens['gebruiker_id'];
$query = "UPDATE a_gebruikers SET
log-ch = 'log-ch+1'
WHERE 'gebruiker_id' = $gegevens[gebruiker_id]";
$berichten = "SELECT * FROM berichten WHERE ontvanger = '".$_POST['email']."' AND gelezen = 0";
$sql_aantal = mysql_query($berichten) or die(mysql_error());
$aantal = mysql_num_rows($sql_aantal);
if($aantal == 0)
{
include 'gelogd.php';
}
if($aantal != 0)
{
include('berichten.php');
}
}
// sessie variabelen invoeren
$_SESSION [ 'gebruikersnaam' ] = $gegevens [ 'gebruikersnaam' ] ;
$_SESSION [ 'email' ] = $gegevens [ 'email' ] ;
$_SESSION [ 'id' ] = $gegevens [ 'gebruiker_id' ] ;
$query = "UPDATE a_gebruikers SET
log-ch = 'log-ch+1'
WHERE 'gebruiker_id' = $gegevens[gebruiker_id] " ;
$berichten = "SELECT * FROM berichten WHERE ontvanger = '" . $_POST [ 'email' ] . "' AND gelezen = 0" ;
if ( $aantal == 0 )
{
include 'gelogd.php' ;
}
if ( $aantal != 0 )
{
include ( 'berichten.php' ) ;
}
}
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.
Joost - 04/05/2009 18:58 (laatste wijziging 04/05/2009 19:00)
PHP expert
$query = "UPDATE a_gebruikers SET
log-ch = log-ch + 1 WHERE gebruiker_id = ".$gegevens['gebruiker_id'];
$query = "UPDATE a_gebruikers SET
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.
willie - 04/05/2009 21:06
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
willie - 04/05/2009 21:25 (laatste wijziging 04/05/2009 21:52)
0
Dan krijg ik deze melding
#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
#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.
$query = "UPDATE a_gebruikers SET log_ch = log_ch + 1 WHERE gebruiker_id =".$gegevens['gebruiker_id'] ;
mysql_query($query) or die (mysql_error());
$query = "UPDATE a_gebruikers SET log_ch = log_ch + 1 WHERE gebruiker_id =" . $gegevens [ 'gebruiker_id' ] ;
Nu wordt hij geupdate bij elke inlog.
willie - 04/05/2009 21:54
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 .