[RESOLU] Timestamp : l'UPDATE ne se fait pas !

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Timestamp : l'UPDATE ne se fait pas !

Re: Timestamp : l'UPDATE ne se fait pas !

par edison1986 » 03 avr. 2013, 12:07

Ok je comprend mieux se que tu veu faire.
Lorsque je vais consulter le profil d'un autre utilisateur et qu'il n'a pas montré d'activité depuis plus d'une minute je le rend hors ligne...

Tu dois à ce moment là faire plutôt comme ça:
if($_SESSION['pseudo'] == $result['pseudo'])
{
    $req1 = $connect->prepare('UPDATE wa_communaute SET statut = :statut, lastquerytime = :lastquerytime WHERE pseudo = :pseudo');
    $req1->execute(array('statut' => '1','lastquerytime' => time(),'pseudo' => $_SESSION['pseudo']));
    $req1->closeCursor();

    echo('Connecté');
}
else
{
    $timestamp_1min = time() - 60;
	
    /*RECHERCHE DES UTILISATEURS AVEC CE PSEUDO ET ETANT INACTIF DEPUIS PLUS D'UNE MINUTE*/
    
    if(/*AUCUN RESULTAT TROUVE*/)
        echo('Connecté');
    else
    {
        /* ON UPDATE L'UTILISATEUR POUR LE METTRE INACTIF*/
        echo('Hors ligne');
    }
}
Tu remplace les commentaires par du code valide biensur...

Re: Timestamp : l'UPDATE ne se fait pas !

par nico44530 » 03 avr. 2013, 11:46

Je ne souhaite pas de rechargement ajax. Juste un rechargement manuel
Je reformule mon message :

Quand 2 membres se connectent, 1 membre veut aller visiter un profil du 2ème membre. Ce 2ème membre est inactif pendant une minute (Pendant 1 minute, il ne recharge pas de page)
Quand le 1er membre rechargera son profil, il verra "hors ligne".

On peut faire ça sans javascript ?
C'est le même principe que les compteurs en php je crois.

Ca m'embêterais d'utiliser ajax, et surtout un setInterval, ça consomme beaucoup de requête update vers le serveur (surtout toutes les minutes)

Re: Timestamp : l'UPDATE ne se fait pas !

par edison1986 » 03 avr. 2013, 11:34

Tu ne peux pas détecter l'inactivité avec du PHP, car c'est un langage côté serveur.

Il n'est donc exécute que lorsque la page est rechargée, donc lorsque l'utilisateur est actif.

Pour l'inactivité tu dois utiliser du JavaScript et de l'AJAX...

Regarde du côté de jQuery: http://jquery.com/ et si tu as des incompréhensions n'hésite pas...

Timestamp : l'UPDATE ne se fait pas !

par nico44530 » 03 avr. 2013, 11:25

Bonjour,

J'ai réussi à créer un script pour afficher le statut du membre (En ligne - Hors ligne)
Maintenant, je voudrais faire un timestamp, et je n'arrive pas à trouver comment faire.

J'ai créé un champ : lastquerytime qui contient time();

J'ai essayé pourtant avec le code ci-dessous : (Et l'update ne se fait pas quand $lastquerytime est plus petit que $timestamp_1min)
Autrement dit quand il y a 1 min d'inactivité, je souhaiterais que le statut passe de 1 à 0 donc de "En ligne" à "Hors ligne".

A moins que ce ne soit pas la façon de faire... :?

PS : La partie après le else ne concerne pas le problème ;)
<?php
if($_SESSION['pseudo'] == $result['pseudo'])
{								
	$req1 = $connect->prepare('UPDATE wa_communaute SET statut = :statut, lastquerytime = :lastquerytime WHERE pseudo = :pseudo');
	$req1->execute(array('statut' => '1','lastquerytime' => time(),'pseudo' => $_SESSION['pseudo']));
	$req1->closeCursor();

	echo('Connecté');
										
	$timestamp_1min = time()-(60 * 1);
	$req2 = $connect->prepare('UPDATE wa_communaute SET statut = :statut WHERE lastquerytime < '.$timestamp_1min.' AND pseudo = :pseudo');
	$req2->execute(array('statut' => '0','pseudo' => $_SESSION['pseudo']));
} else {
	if($result['statut'] == 1){
		echo('Connecté');
	} else {
		echo('Hors ligne');
	}
}
?>
Merci d'avance pour votre aide ;)