Ik probeer om in de database de datum+tijd dat iemand heeft ingelogd, in een ander veld in de database vast te leggen voordat de datum+tijd wordt opgeslagen als NOW().
Hier is de code:

<? 
$sql = "SELECT lastactive FROM '".$db_tbl."' WHERE id='".$_SESSION['user_id']."'";
  $query = mysql_query($sql);
  $row = mysql_fetch_object($query);
  $vorigeactief = ($row->lastactive);
	
	  $sql = "UPDATE `".$db_tbl."` SET vorigeactief = '".$vorigeactief."', lastactive = NOW() WHERE id = '".$_SESSION['user_id']."'";
	  mysql_query($sql);
?>


wie weet waar ik de fout in ga?
Als je nou eerst die NOW() opslaat, en dan die ophaalt en in dat andere veld opslaat. Dan heb je altijd twee keer dezelfde datum ;-).
Ik snap je vraag niet helemaal. Je wil bijhouden wanneer iemand voor 't laatst heeft ingelogd en wanneer er gebruikers actief zijn?

De eerste voer je alleen uit bij het inloggen, de andere tijdens elke pagina load. Toch?
<?php
$sql = "UPDATE tabel SET vorigeactief = laatste_login WHERE id = '". $_SESSION['user_id']."'";
$result = mysql_query($sql);
if(mysql_affected_rows()==1){
// sql gelukt

}
elseif(mysql_affected_rows() > 1) {

// fout datamodel

}
else {

// iets fout gegaan mail naar beheerder oid

}



?>

[/code]
Oke, ik heb misschien niet genoeg info gegeven;

Ik werk met phpMyLogon van Jorik Berkepas. Hierin wordt de inlogdatum/tijd weggeschreven als lastactive.
Nu wil ik op de persoonlijke pagina van elk lid de datum en tijd laten zien wanneer zij voor het laatst hebben ingelogd. Die gegevens moeten dus uit de kolom 'lastactive' worden gehaald voordat (direct na het inloggen) die gereset wordt naar de actuele datum en tijd. Hier is het gehele script:

<?php
###################################
##   PHPMYLOGON: A LOGIN SYSTEM  ##
##    (c) 2006 Jorik Berkepas    ##
##   Under the GNU GPL license   ##
##     [email protected]      ##
###################################

// Inlucde this file (safe.php) to let a page only access by members/admins

include_once("config.php");
include_once("lang/lang_".$lang.".php");
include_once("connect.php");

if(isset($_SESSION['user_id'])) 
 {
 // Login ok, get lastactive, then update last active and ip
  
  $sql = "SELECT lastactive FROM '".$db_tbl."' WHERE id='".$_SESSION['user_id']."'";
  $query = mysql_query($sql);
  $row = mysql_fetch_object($query);
  $vorigeactief = ($row->lastactive);
	
	  $sql = "UPDATE `".$db_tbl."` SET vorigeactief = '".$vorigeactief."', lastactive = NOW() WHERE id = '".$_SESSION['user_id']."'";
	  mysql_query($sql);
 }
else
 {
if(isset($_COOKIE['cookie_id'])) 
  {
  $sql = "SELECT cookie_pass,state FROM `".$db_tbl."` WHERE id = '".$_COOKIE['cookie_id']."'";
  $query = mysql_query($sql);
  $row = mysql_fetch_object($query);
  $dbpass = htmlspecialchars($row->cookie_pass);
  $dbstatus = htmlspecialchars($row->state);
  	
	if($dbpass == $_COOKIE['cookie_pass'])
	{
   	 $_SESSION['user_id'] = $_COOKIE['cookie_id'];
  	 $_SESSION['user_status'] = $dbstatus;
  	}
	else
	{
   	setcookie("cookie_id", "", time() - 3600);
   	setcookie("cookie_pass", "", time() - 3600);
   	header("Location:index.php?goto=login");
  	}
 }
 else
 {
  header("Location:index.php?goto=login");
 }
}
?>


Het probleem is dat hij de kolom 'vorigeactief' niet bijwerkt, terwijl de kolom 'lastactive' wel gewoon wordt bijgewerkt. Ik heb geprobeerd om beide acties te splitsen:

<?
  $sql1 = "UPDATE `".$db_tbl."` SET vorigeactief='".$vorigeactief."' WHERE id='".$_SESSION['user_id']."'";
  mysql_query($sql1);
  
  $sql2 = "UPDATE `".$db_tbl."` SET lastactive=NOW() WHERE id='".$_SESSION['user_id']."'";
  mysql_query($sql2);
?>

maar dat werkte ook niet......
Waarom kan je niet gewoon al deze acties laten inserten. Daarna haal je de laaste op als actief, en de een na laaste als laatste actief... Dit scheelt weer een query volgens mij...
Ik heb hieronder mijn query aangepast naar wat jij wilt.

<?php
$sql = "UPDATE ".
$db_tbl.
" SET
vorigeactief = lastactive,
lastactive=NOW()
WHERE
id = '". $_SESSION['user_id']."'";
$result = mysql_query($sql);
if(mysql_affected_rows()==1){
// sql gelukt

}
elseif(mysql_affected_rows() > 1) {

// fout datamodel

}
else {

// iets fout gegaan mail naar beheerder oid

}



?>
al geprobeerd, werkt niet:

<?
  $sql1 = "INSERT INTO `".$db_tbl."` (vorigeactief, lastactive) VALUES ('".$vorigeactief.", NOW()') WHERE id='".$_SESSION['user_id']."'";
  mysql_query($sql1);
?>
Snap ik. Je quotes staan fout, je gebruikt ook nog eens backtics en WHERE kun je niet gebruiken in INSERT...

<?php
$query = "INSERT INTO ".$db_tbl." (vorigeactief, lastactive) VALUES ('".$vorigeactief."', NOW())";
?>
Vreemd genoeg doet hij het dan nog niet???
wat krijg je als foutmelding?
en doe eens echo van $query

Reageren