logo

NPDS : Gestion de contenu et de communauté


Content & Community Management System (CCMS) robuste, sécurisé, complet, performant, parlant vraiment français, libre (Open-Source) et gratuit.
29 visiteur(s) et 0 membre(s) en ligne.
Activité du Site

Pages vues depuis 25/05/2001 : 108 383 017

  • Nb. de membres 8 693
  • Nb. d'articles 1 695
  • Nb. de forums 26
  • Nb. de sujets 8
  • Nb. de critiques 92

Top 10  Statistiques

Index du forum »»  Questions »» Afficher la dernière connexion d'un membre

Nouveau sujet
 Afficher la dernière connexion d'un membre#21383Répondre

6Contributeur(s)
FURAX69jmslecoqxgoninAnonymeskippy
3 Modérateur(s)
developpeurjpbJireck
FURAX69 FURAX69icon_post
Bonjour à tous,

J'ai cherché comment afficher la date/heure de dernière connexion d'un membre (dans le carnet d'adresse par ex.) sans trouver de solution... Pourtant, ce paramètre semble être intégré à la base MySQL dans la table user... On trouve un champs nommé clairement "Lastconnect" et qui contient ces information sour la forme d'un nombre entier que je cherche d'ailleur à déchiffrer...

Sur quoi est-il basé et quelle est la date de référence ?


Merci d'avance pour toute aide et éclaircissement... ;-)
jms jmsicon_post
Effectivement ce champ existe mais la date est codée. Plutot que de chercher à la décoder, peut-être par fainantse j'ai rajouter un champ date en clair dans la base que j'alimente au moment de l'insertion dans la table session (donc modif de code aussi).
FURAX69 FURAX69icon_post
merci pour ta réponse jms... Je n'ai pour le moment, pas les compétences pour modifier le code... je me mets tout juste au PhP et SQL... Mais je comprends ce que tu veux dire... Mais si je sais ajouter le champ, je ne sais pas comment intéger la mise à jour dans session ni comment afficher cette donnée une fois récoltée...

J'attends donc de pouvoir éventuellement utiliser ce qui existe !
Sinon, je serai contraint de mettre les mains dans le camboui ;-)
Ce n'est pas que cela me fasse peur, mais c'est plutot parce que le temps me manque...
jms jmsicon_post
Le code pour mettre à jour la table.
Dans Mainfile.php, fonction session_manage, juste après la ligne :
mysql_query("INSERT INTO session (username, time, host_addr, guest) VALUES ('$username', '".time()."', '$ip', '$guest')");

rajouter :

mysql_query("UPDATE users SET derniere_visite=now() WHERE uname='$username'");

En supposant que la colonne nouvelle s'appelle "derniere_visite".

Faire la même chose dans la fonction "online" du même fichier mainfile.php


lecoq lecoqicon_post
Je l'ai fait dans mon memberslist.php. Je l'ai mis dans une colonne en remplacement d'une autre qui ne m'itéressait pas trop.


      $last=$temp_user[user_lastvisit];
      $today = date("d.m.Y",time()+($gmt*3600)); //la date du jour
      $zlast=date("d.m.Y",$last); // la dernière connection
      if ($today==date("d.m.Y",$last)) { // si aujourd'hui, renvoi l'heure
      $zlast = date("H:i",$last);  //renvoi l'heure
      }
      if ($last<1) { $zlast=""; }

   echo "<td>$zlast</td>\n";



Il faut rajouter le champ "user_lastvisit" dans l'appel SQL vers la ligne 173.
Notez que la colonne est visible par tout les membres.
FURAX69 FURAX69icon_post
Bonjour Lecoq et merci pour ta réponse...

Ta solution me convient parfaitement mais je n'arrive pas à placer le code que tu me donne correctement dans memberslist.php... J'ai bien ajouté "user_lastvisit" dans l'appel SQL à la ligne 175... Et tenté de remplacer la colonne URL mais...

Ma meilleure tentative fonctionne mais seulement sur la première page de membres !!!
http://mtg.lyon.online.fr/memberslist2a.php
Dès que l'on passe à la suivante, l'affichage se fait avec la colonne URL d'origine !!!???
http://mtg.lyon.online.fr/memberslist.php?letter=&sortby=uid%20DESC&list=&page=2

Je suis peut-être gonflé pour le coup, mais si jamais tu avais décidé de supprimer la même colonne URL que moi, serais-tu ok pour me passer ton fichier memberslist.php ?
Mon adresse email, si tu est d'accord, est furax88 [at] thierryschmitt.com

Je te remercie pour le temps que tu pourras m'accorder car je débute vraiment en PhP/sql et c'est une des première fois que je trifouille ce code ;)


lecoq lecoqicon_post
Ouups! :D
Avec moins de 20 membres (site familial) je na'i pas vu cela.
Je regarde dès que possible pour l'intégrer sur les pages suivantes.
Aujourd'hui j'ai un anni donc un ptit peu de patience.
xgonin xgoninicon_post
Furax, c'est parce que ta 2ème page appelle memnerlist.php et non memberlist2a.php !!!

Mais perso, vos modif chez moi ça donne rien... :-?

Message édité par : xgonin / 26-10-2006 17:29

lecoq lecoqicon_post
Oui juste, :=! et bien vu, car en regardant bien les appels tournent sur la même routine et chez moi tout est ok, contrairement à ce j'ai écris sur mon message précédent.
xgonin xgoninicon_post
good...

Comment faire pour rajouter ces colonnes "connexion" en plus des colonnes existantes, avec la même ecriture que le reste de la liste... histoire de faire joli ????


Furax, peus-tu reposter les modifs faites dans les différents fichiers, car celle qui sont dans le forum ne marche absolument pas chez moi :-? :-? :paf

Amicalement
Anonyme Anonymeicon_post
Il y a finallement plusieurs modifications à faire... Voici donc l'intégralité du code modifié à ma sauce pour faire apparaitre

une colonne "Dernière connexion" à la place de la colonne "URL"...

Le code a également été modifié afin de faire un tri par date et heure de connexion... Vous pouvez ainsi suivre les logs de vos membre plus clairement
:=!






<?PHP

/************************************************************************/

/* NPDS V : Net Portal Dynamic System .                                 */

/* ===========================                                          */

/*                                                                      */

/* Original Copyright (c) 2001 by Francisco Burzi (fburzi@ncc.org.ve)   */

/* http://phpnuke.org                                                   */

/*                                                                      */

/* This version name NPDS Copyright (c) 2001-2004   */

/*                                                                      */

/* =========================                                            */

/* Based on MyPHPortal Modified MembersList                             */

/*                                                                      */

/* This program is free software. You can redistribute it and/or modify */

/* it under the terms of the GNU General Public License as published by */

/* the Free Software Foundation; either version 2 of the License.       */

/************************************************************************/

if (!function_exists("Mysql_Connexion")) {!include! ("mainfile.php");}



// Make Member_list Private or not

if (!AutoReg()) 
{ unset($user); }

if (($member_list==1) AND ($user==
"") AND ($admin=="")) {

   Header(
"Location: index.php");

}



function alpha() 
{

   global $sortby, $list;

   $alphabet = array (
"".translate("All")."""A","B","C","D","E","F","G","H","I","J","K","L","M",

                     
"N","O","P","Q","R","S","T","U","V","W","X","Y","Z","".translate("Other")."");



   echo 
"<table width=\"100%\" border=\"0\"><tr><td width=\"50%\" align=\"center\" valign=\"top\">";

   $num = count($alphabet) - 1;

   $counter = 0;

   while (list(, $ltr) = each($alphabet)) 
{

      echo 
"<a href=\"memberslist.php?letter=$ltr&amp;sortby=$sortby&amp;list=$list\" class=\"NOIR\">$ltr</a>";

      if ( $counter == round($num/2) ) 
{

         echo 
" ]<br />[ ";

      
} elseif ( $counter != $num ) {

         echo 
"&nbsp;|&nbsp;";

      
}

      $counter++;

   
}

   echo 
"</td><td class=\"NOIR\">";

   echo 
"<form action=\"memberslist.php\" method=\"post\">";

   echo translate(
"Search")." : <input class=\"TEXTBOX_STANDARD\" type=\"input\" name=\"letter\" size=\"30\" maxlenght=\"60\">";

   echo 
"<input type=\"hidden\" name=\"list\" value=\"".urldecode($list)."\">";

   echo 
"<input type=\"hidden\" name=\"TempoSuperCache\" value=\"OFF\">";

   echo 
"</form>";

   echo 
"</td></tr></table>";

}



function unique($ibid) 
{

   while (list(,$to_user) = each($ibid)) 
{

      if (!$Xto_user
[$to_user]{

         $Xto_user
[$to_user]=$to_user;

      
}

   
}

   return ($Xto_user);

}



function SortLinks($letter) 
{

   global $sortby, $list, $admin;

   if ($letter == 
"front"{

      $letter = translate(
"All");

   
}

   $sort=false;

   echo 
"<table width=\"100%\" cellspacing=\"2\" cellpadding=\"2\" border=\"0\"><tr><td align=\"center\">\n";

   echo translate(
"Sort by:")." ";

   if ($sortby == 
"uname ASC" OR !$sortby) {

      echo translate(
"nickname")."&nbsp;|&nbsp;";

      $sort=true;

   
} else {

      echo 
"<a href=\"memberslist.php?letter=$letter&amp;sortby=uname%20ASC&amp;list=$list\" class=\"NOIR\">".translate("nickname")."</a>&nbsp;|&nbsp;";

   
}

   if ($sortby == 
"name ASC"{

      echo translate(
"real name")."&nbsp;|&nbsp;";

      $sort=true;

   
} else {

      echo 
"<a href=\"memberslist.php?letter=$letter&amp;sortby=name%20ASC&amp;list=$list\" class=\"NOIR\">".translate("real name")."</a>&nbsp;|&nbsp;";

   
}

   if ($sortby == 
"user_avatar ASC"{

      echo translate(
"Avatar")."&nbsp;|&nbsp;";

      $sort=true;

   
} else {

      echo 
"<a href=\"memberslist.php?letter=$letter&amp;sortby=user_avatar%20ASC&amp;list=$list\" class=\"NOIR\">".translate("Avatar")."</a>&nbsp;|&nbsp;";

   
}

   if (($sortby == 
"femail ASC") or ($sortby == "email ASC")) {

      echo translate(
"Email")."&nbsp;|&nbsp;";

      $sort=true;

   
} else {

      if ($admin) 
{

         echo 
"<a href=\"memberslist.php?letter=$letter&amp;sortby=email%20ASC&amp;list=$list\" class=\"NOIR\">".translate("Email")."</a>&nbsp;|&nbsp;";

      
} else {

         echo 
"<a href=\"memberslist.php?letter=$letter&amp;sortby=femail%20ASC&amp;list=$list\" class=\"NOIR\">".translate("Email")."</a>&nbsp;|&nbsp;";

      
}

   
}

   if ($sortby == 
"user_from ASC"{

      echo translate(
"Location")."&nbsp;|&nbsp;";

      $sort=true;

   
} else {

      echo 
"<a href=\"memberslist.php?letter=$letter&amp;sortby=user_from%20ASC&amp;list=$list\" class=\"NOIR\">".translate("Location")."</a>&nbsp;|&nbsp;";

   
}

   if ($sortby == 
"user_lastvisit DESC"{

      echo 
"Dernière connexion |";

      $sort=true;

   
} else {

      echo 
"<a href=\"memberslist.php?letter=$letter&amp;sortby=user_lastvisit%20DESC&amp;list=$list\" class=\"NOIR\">Dernière connexion</a>&nbsp;|&nbsp;";

   
}

   if ($sortby == 
"mns DESC"{

      echo translate(
"Mini-Web site")."&nbsp;|&nbsp;";

      $sort=true;

   
} else {

      echo 
"<a href=\"memberslist.php?letter=$letter&amp;sortby=mns%20DESC&amp;list=$list\" class=\"NOIR\">".translate("Mini-Web site")."</a>&nbsp;|&nbsp;";

   
}

   if ($sortby == 
"uid DESC"{

      echo 
"I.D";

      $sort=true;

   
} else {

      echo 
"<a href=\"memberslist.php?letter=$letter&amp;sortby=uid%20DESC&amp;list=$list\" class=\"NOIR\">I.D</a>";

   
}

   if (!$sort) 
{$sortby="uname ASC";}



    echo 
"</td></tr></table>\n";

}



function avatar($user_avatar) 
{

   if (!$user_avatar) 
{

      $imgtmp=
"images/forum/avatar/blank.gif";

   
} else if (stristr($user_avatar,"users_private")) {

      $imgtmp=$user_avatar;

   
} else {

      if ($ibid=theme_image(
"forum/avatar/$user_avatar")) {$imgtmp=$ibid;} else {$imgtmp="images/forum/avatar/$user_avatar";}

      if (!file_exists($imgtmp)) 
{$imgtmp="images/forum/avatar/blank.gif";}

   
}

   return ($imgtmp);

}



   // OFF temporairement SC pour la recherche

   if ($TempoSuperCache==
"OFF"{$SuperCache=false;}



   !include!(
"header.php");

   $pagesize = $show_user;



   $letter=removeHack(stripslashes(htmlspecialchars($letter, ENT_QUOTES)));

   $sortby=removeHack($sortby);

   if (!isset($letter)) 
{ $letter = translate("All"); }

   if (!isset($sortby)) 
{ $sortby = "uid DESC"}

   if (!isset($page)) 
{ $page = 1; }



   if ($list!=
""{

      $tempo=unique(explode(
",",$list));

      $list=urlencode(implode(
",",$tempo));

   
}

   $result = mysql_query(
"select uname from users order by uid DESC limit 0,1");

   list($lastuser) = mysql_fetch_row($result);

   echo 
"<table width=\"100%\" cellspacing=\"2\" cellpadding=\"2\" border=\"0\"><tr><td class=\"HEADER\">\n";

   echo translate(
"Welcome to")." $sitename - ".translate("Members List");

   echo 
"</td></tr></table>\n";

   Opentable();

   echo 
"<p align=\"center\">".translate("Greetings to our latest registered user:")." <a href=\"user.php?op=userinfo&amp;uname=$lastuser\" class=\"NOIR\">$lastuser</a></p><br />";

   if (!$admin) 
{

      if ($SuperCache) 
{

         $cache_obj = new cacheManager();

         $cache_obj
->startCachingPage();

      
}

   
}

   if (($cache_obj
->genereting_output==1) or ($cache_obj->genereting_output==-1) or (!$SuperCache) or ($admin)) {

      alpha();

      SortLinks($letter);



      $min = $pagesize * ($page - 1);

      $max = $pagesize;



      $count = 
"SELECT COUNT(uid) AS total FROM users ";

      $select = 
"select uid, name, uname, femail, url, user_regdate, user_from, email, is_visible, user_viewemail, user_lastvisit, user_avatar, mns from users ";

      if ( ( $letter != 
"".translate("Other")."" ) AND ( $letter != "".translate("All")."" ) ) {

         $where = 
"where uname like '".$letter."%'";

      
} else if ( ( $letter == "".translate("Other")."" ) AND ( $letter != "".translate("All")."" ) ) {

         $where = 
"where uname REGEXP \"^\[1-9]\" ";

      
} else {

         $where = 
"";

      
}

      global $member_invisible;

      if ($member_invisible) 
{

         if ($admin)

            $and=
"";

         else 
{

            if ($where)

               $and=
"and is_visible=1 ";

            else

               $and=
"where is_visible=1 ";

         
}

      
} else {

         $and=
"";

      
}



      $sort = 
"order by $sortby";

      $limit = 
" LIMIT ".$min."".$max;

      $count_result = mysql_query($count.$where);

      $num_rows_per_order = mysql_result($count_result,0,0);

      $result = mysql_query($select.$where.$and.$sort.$limit) or die(mysql_error() );

      echo 
"<br />";

      if ( $letter != 
"front" ) {

         echo 
"<table width=\"100%\" cellspacing=\"0\" cellpadding=\"1\" border=\"0\"><tr class=\"HEADER\">\n";

         echo 
"<td class=\"BOX\"><span style=\"font-size: 10px;\"><b>".translate("Nickname")."</b></span></td>\n";

         echo 
"<td class=\"BOX\">&nbsp;</td>\n";

         echo 
"<td class=\"BOX\" align=\"center\">&nbsp;</td>";

         echo 
"<td class=\"BOX\" align=\"center\">&nbsp;</td>";

         echo 
"<td class=\"BOX\"><span style=\"font-size: 10px;\"><b>".translate("Real Name")."</b></span></td>\n";

         if ($sortby!=
"user_from ASC"{

            echo 
"<td class=\"BOX\"><span style=\"font-size: 10px;\"><b>".translate("Email")."</b></span></td>\n";

         
} else {

            echo 
"<td class=\"BOX\"><span style=\"font-size: 10px;\"><b>".translate("Location")."</b></span></td>\n";

         
}

         echo 
"<td class=\"BOX\"><span style=\"font-size: 10px;\">Dernière connexion</td>\n";

         $cols = 7;

         if ($admin) 
{

            $cols = 9;

            echo 
"<td class=\"BOX\" align=\"center\" width=\"12%\"><span style=\"font-size: 10px;\"><b>".translate("Functions")."</b></span></td><td class=\"BOX\">&nbsp;</td>\n";

         
}

         echo 
"</tr>";

         $a = 0;

         $num_users = mysql_num_rows($result);

         if ( $num_rows_per_order > 0  ) 
{

            global $anonymous, $user;

            while($temp_user = mysql_fetch_array($result) ) 
{

               $rowcolor = tablos();

               if ($temp_user
[mns]{$mns="<a href=\"minisite.php?op=$temp_user[uname]\" alt=\"\" title=\"".translate("Mini-Web site")."\" target=\"_blank\" class=\"HEADA\"><b>(w)</b></a>";} else {$mns="";}

               echo 
"<tr $rowcolor><td><a href=\"user.php?op=userinfo&amp;uname=$temp_user[uname]\" alt=\"\" title=\"".date(translate("dateinternal"),$temp_user[user_regdate])."\"  class=\"HEADA\">$temp_user[uname]</a>&nbsp;$mns</td>\n";

               echo 
"<td valign=\"middle\">";

               if ($ibid_avatar=avatar($temp_user
[user_avatar]))

                  echo 
"<img src=\"".$ibid_avatar."\" width=\"20\" height=\"20\" border=\"0\" alt=\"\" title=\"\" />";

               else

                  echo 
"&nbsp;";

               echo 
"</td>";

             &
Anonyme Anonymeicon_post
hello,

Quelqu'un pourrai-t-il mettre un tuto et les fichiers modifiés en ligne?
J'ai essayé mais je suis une bille et ça ne marche pas.
Anonyme Anonymeicon_post
ben alors y-a pas un pro qui répond? :-(
Anonyme Anonymeicon_post

Petit UP
Ca fait plus de 3 heures que j'essaie d'obtenir une colonne "dernière connexion"
J'ai modifié mon fichier memberlist avec un copier/coller du code ci-dessus.
J'ai hélas de très nombreux messages d'erreur (même en essayant de corriger le code)
L'un de vous pourrait il nous venir en aide s'il vous plait ?
Cette fonction serait un énorme plus dans l'administration d'NPDS

Merci

je suis sous Evol
Anonyme Anonymeicon_post

Up... si quelqu'un à la solution pour Sable Evol 08.06

Merci
skippy skippyicon_post
Pourquoi se prendre la tête ainsi ?
La date du champ lastconnect est en timestamp. Suffit de la convertir, ce qui est beaucoup plus simple et plus rapide

Il y a aussi un module lastseen (je crois) qui fait cela

A+
Anonyme Anonymeicon_post


Merci Skippy mais...en Français ça donne quoi ? 8-)

logo