probleempje

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Arno

Arno

31/12/2008 09:17:00
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?
$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?
Gewijzigd op 01/01/1970 01:00:00 door Arno
 
PHP hulp

PHP hulp

15/03/2025 07:52:27
 
Jesper Diovo

Jesper Diovo

31/12/2008 09:30:00
Quote Anchor link
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 ;-).
 
Crispijn -

Crispijn -

31/12/2008 09:40:00
Quote Anchor link
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?
 
Klaasjan Boven

Klaasjan Boven

31/12/2008 10:01:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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

}



?>


Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
 
Arno

Arno

31/12/2008 10:25:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
###################################
##   PHPMYLOGON: A LOGIN SYSTEM  ##
##    (c) 2006 Jorik Berkepas    ##
##   Under the GNU GPL license   ##
##     helpdesk90@gmail.com      ##
###################################

// 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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
  $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......
 
Crispijn -

Crispijn -

31/12/2008 10:33:00
Quote Anchor link
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...
 
Klaasjan Boven

Klaasjan Boven

31/12/2008 10:59:00
Quote Anchor link
Ik heb hieronder mijn query aangepast naar wat jij wilt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?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

}



?>
 
Arno

Arno

31/12/2008 11:01:00
Quote Anchor link
al geprobeerd, werkt niet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?
  $sql1
= "INSERT INTO `".$db_tbl."` (vorigeactief, lastactive) VALUES ('".$vorigeactief.", NOW()') WHERE id='".$_SESSION['user_id']."'";
  mysql_query($sql1);
?>
 
Jesper Diovo

Jesper Diovo

31/12/2008 11:08:00
Quote Anchor link
Snap ik. Je quotes staan fout, je gebruikt ook nog eens backtics en WHERE kun je niet gebruiken in INSERT...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= "INSERT INTO ".$db_tbl." (vorigeactief, lastactive) VALUES ('".$vorigeactief."', NOW())";
?>
 
Arno

Arno

31/12/2008 11:25:00
Quote Anchor link
Vreemd genoeg doet hij het dan nog niet???
 
Hipska BE

Hipska BE

31/12/2008 11:32:00
Quote Anchor link
wat krijg je als foutmelding?
en doe eens echo van $query
 
Arno

Arno

31/12/2008 12:30:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in safe.php on line 15

Notice: Trying to get property of non-object in safe.php on line 16
INSERT INTO gebruikers (vorigeactief, lastactive) VALUES ('', NOW())
Gewijzigd op 01/01/1970 01:00:00 door Arno
 
Klaasjan Boven

Klaasjan Boven

31/12/2008 12:46:00
Quote Anchor link
Je doet heel iets anders dan ik.
Hoe wil je overigens een INSERT doen met een WHERE?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
  $sql1
= "INSERT INTO `".$db_tbl."` (vorigeactief, lastactive) VALUES ('".$vorigeactief.", NOW()') WHERE id='".$_SESSION['user_id']."'";
  mysql_query($sql1);
?>


Heb je enig idee wat je aan het doen bent?
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
 
Klaasjan Boven

Klaasjan Boven

31/12/2008 13:02:00
Quote Anchor link
zo dan
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
###################################
##   PHPMYLOGON: A LOGIN SYSTEM  ##
##    (c) 2006 Jorik Berkepas    ##
##   Under the GNU GPL license   ##
##     helpdesk90@gmail.com      ##
###################################

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

error_reporting(E_ALL);
ini_set('display_errors',1);



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
    // we gaan laats online setten

     $sql = "UPDATE ".
                $db_tbl.
          " SET
                vorigeactief = lastactive,  
                lastactive=NOW()
            WHERE
                id = '"
. $_SESSION['user_id']."'";
    
       $result = mysql_query($sql) or die(mysql_error());
    
   // kijken of de sql gelukt is    
   if(!mysql_affected_rows()==1){
        
       // bijvoorbeeld mail aan de beheerder
       
   }
 }

 elseif(isset($_COOKIE['cookie_id'])) { // blijkbaar is de user aan het inloggen
      
    
  
        // codehieronder vind ik eng overigens

        $sql = "SELECT cookie_pass,state FROM `".$db_tbl."` WHERE id = '".$_COOKIE['cookie_id']."'";
          $result = mysql_query($sql);
          while($gegevens = mysql_fetch_array($result)){
              
          $dbpass     = htmlspecialchars($gegevens['cookie_pass']);
          $dbstatus     = htmlspecialchars($gegevens['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");
              }
          }
// while afsluiten
 }
 else
 {
  header("Location:index.php?goto=login");
 }

 

?>
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
 
Tikkes C

Tikkes C

31/12/2008 13:31:00
Quote Anchor link
Arno, zet je NOW() eens vooraan in je insert...maw:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
  $sql1
= "INSERT INTO '".$db_tbl."' (lastactive, vorigeactief) VALUES (NOW(), '".$vorigeactief."')";
  mysql_query($sql1);
?>


zo lukte het bij mij toch...

let ook op je quotes! die stonden niet helemaal goed...maar zo zou hij moeten lukken geloof ik....
 
Arno

Arno

31/12/2008 13:41:00
Quote Anchor link
Krijg je dan niet het probleen dat eerst de laatst ingelogde datum overschreven wordt door now(), waardoor de $vorigeactief gelijk wordt aan de lastactive?
maw als je dan kijkt wanneer je voor het laatst hebt ingelogd, zie je dat dat een halve minuut geleden is..?
 
Tikkes C

Tikkes C

31/12/2008 13:44:00
Quote Anchor link
goede vraag maar aangezien het hier om insert gaat en je de variabele lastactive al gefetched hebt geloof ik niet dat dit een probleem zal geven...testen is de boodschap ;)
 
Arno

Arno

31/12/2008 13:46:00
Quote Anchor link
Net even geprobeerd, ook door een echo te geven, maar die fout

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in safe.php on line 15

blijft terugkomen. Hij schrijft nog steeds niets in de db :(
 
Tikkes C

Tikkes C

31/12/2008 13:47:00
Quote Anchor link
waar komt je $db_tabel eigenlijk vandaan?
 
Arno

Arno

31/12/2008 13:55:00
Quote Anchor link
Die komt uit de config.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
[code]<?php

session_start();
ob_start();

// MySQL settings
$db_user    = "root"; // MySQL username
$db_pass    = "****"; // MySQL password
$db_host    = "localhost"; // MySQL host, mostly localhost
$db_db      = "login"; // MySQL database
$db_tbl     = "gebruikers"; // MySQL table

// Settings

$site_url   = "http://www.mijnsite.nl/"; // URL to PhpMyLogon, / at end
$site_mail  = "mail@mijnsite.nl"; // Mail address website
$site_name  = "mijnsite.nl"; // Website name
$activate   = "TRUE"; // E-mail validation at registration, TRUE or FALSE
$afterlogin = "index.php"; // Page to go to after login
$lang       = "nl"; // Language of PhpMyLogon
?>



?>

Config.php wordt aan het begin ge-include
Gewijzigd op 01/01/1970 01:00:00 door Arno
 
Klaasjan Boven

Klaasjan Boven

31/12/2008 14:01:00
Quote Anchor link
He Arno heb je mijn scriptje geprobeerd. Ik ben namelijk niet voor Jan l.l bezig geweest en je reageert er niet eens op.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.