Page 1 sur 1

Problème Mysql

Posté : 28 nov. 2008, 17:25
par antoniolav75
Bonjour,
j'ai voulu codé pour mon site un script permettant d'afficher si il y a des membres en ligne, et si oui, afficher leur pseudo.
J'ai mis une heure mais je n'y arrive pas et je ne comprends pas ou est le probleme ! Je dois me tromper quelque part mais je ne vois pas ou.

J'ai une table mysql, <couleur nom="rouge">Comptes_Utilisateur</couleur>, avec comme champ : LOGIN - PASS - MAIL - .... et TIME.
Voilà le code :
<?                 
 if ( !empty($_SESSION['login']))
 {
 
 $temps_actuel = date("U");
 $sql4 = "UPDATE Comptes_Utilisateur SET time = '".$temps_actuel."' where login='".$_SESSION['login']."'";
 $req4 = mysql_query($sql4) or die('Erreur base de donnée!<br><br>'.mysql_error());


 }
 
 ?>
 
 
 
 
 <?
 mysql_connect("sql5", "*******", "*******") or die("Impossible de se connecter à la base de donnée!");
 mysql_select_db("divfacile");

 $sql6 = mysql_query("SELECT * FROM Comptes_Utilisateur");
 $data9 = mysql_fetch_row($sql6);
 
 $heure = date("U");
 
 
  if ( $heure - $data9[6] < 120 )
 {
 echo "<font face=tahoma size=2>";
 echo $data9[0];
 }
 ?>
Explications :

- Si la personne connecté est un membre, donc si il a une variable login, on rajoute le nombre de secondes écoulées depuis le 1er janvier 1970 dans TIME.

Ensuite, je recupere ls valeurs de TIME de tous les membres et je la compare avec l'heure d'execution de la page : si cela fait plus de 120 secondes, la personne est considérée comme non-connectée.

Le problème c'est que mon script n'affiche rien. Je ne comprends pas pourquoi et vous demande de l'aide.
Merci d'avance

Posté : 01 déc. 2008, 01:23
par antoniolav75
UPP !!

Posté : 01 déc. 2008, 08:52
par stopher
Salut ,

Dans un premier temps , tes requêtes fonctionnent-elles ?
tu vois les modifications dans ta base ?

Ensuite , quelque chose me choque , que viens faire
mysql_connect
au milieu de ton script , alors que tu as déjà effectué une requête auparavant ?

Si tout fonctionne , que retourne ta requete :

var_dump($data9[6])

Enfin , met un else{ ... } à la fin de ton bloc de condition if{ ... } pour voir ce qu'il en est réellement , car là , si $heure - $data9[6] >= 120 il ne se passe rien , => page blanche !!

Posté : 01 déc. 2008, 09:42
par @rthur
Attention, tu as ton mot de passe dans le script...

Posté : 01 déc. 2008, 09:48
par sadeq
C'est bon je l'ai édité, Merci

Posté : 02 déc. 2008, 05:37
par antoniolav75
Bonjour,
désolé pour les identifiants de connexion, j'ai pas fais gaffe !
Donc voilà, après vos conseils, mon script :
                             <?php
                             $temps_actuel = date("U");
                             
                             if ( !empty($_SESSION['login']))
                             {
                             
                             $sql4 = "UPDATE Comptes_Utilisateur SET `time` = '".$temps_actuel."' where login='".$_SESSION['login']."'";
                             $req4 = mysql_query($sql4) or die('Erreur base de donnée!<br><br>'.mysql_error());
                             }
                             $sql6 = mysql_query("SELECT * FROM Comptes_Utilisateur");
                             $data9 = mysql_fetch_row($sql6);
                             
                             if ( $temps_actuel - $data9[6] < 120 )
                             {
                             echo "<font face=tahoma size=2>";
                             echo $data9[0];
                             }
                             else
                             {
                             echo '<br>MARCHE PAS<br>';
                             }
                             var_dump($data9[6]);
                             ?>
                            
RESULTAT = Marche Pas et pour ce qui est de var_dump : NULL .
Donc l'information s'extrait mal du tableau. Quant au mysql_connect, il ne sert à rien, la connexion avec la BDD est déjà faite avant.

Posté : 02 déc. 2008, 05:50
par antoniolav75
Ca y est, je viens de trouver la solution ;
Voilà le code :
                             <?php
                             $temps_actuel = date("U");
                             
                             if ( !empty($_SESSION['login']))
                             {
                             
                             $sql4 = "UPDATE Comptes_Utilisateur SET `time` = '".$temps_actuel."' where login='".$_SESSION['login']."'";
                             $req4 = mysql_query($sql4) or die('Erreur base de donnée!<br><br>'.mysql_error());
                             }
                             

                
                             $sql6 = mysql_query("SELECT * FROM Comptes_Utilisateur");
                             $data9 = mysql_fetch_array($sql6);
                             
                             

                             if ( $temps_actuel - $data9['time'] < 20 )
                             {
                             echo "<font face=tahoma size=2>";
                             echo $data9['login'];
                             }
                             else
                             {
                             echo '';
                             }

                             
                             
                             ?>
J'ai changé le mysql_fetch_row en mysql_fetch_array, qui après reflexion était mieux adapté.

Je vous remercie à tous pour votre aide.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 02 déc. 2008, 17:06
par sadeq
Modération :
antoniolav75, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.