IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Ma requête ne semble pas vouloir fonctionner?


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 21
    Par défaut Ma requête ne semble pas vouloir fonctionner?
    Bonjour,
    Je viens de trouver un script qui affiche les membres connectés sur mon site ainsi que leur pseudo.J'ai dû créer une table nommé "`cpt_connectes` avec les champs "pseudo" et "timestamp". Voici le code que j'ai installé sur ma page "index.php".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     <?php
    if(isset($_SESSION['login']))
     {
             $dnns = mysql_fetch_array(mysql_query('select count(pseudo) as nb from cpt_connectes where pseudo="'.$_SESSION['login'].'"'));
             if($dnns['nb']>0)
             {
                     mysql_query('update cpt_connectes set timestamp="'.time().'" where pseudo="'.$_SESSION['login'].'"');
             }
             else
             {
                     mysql_query('insert into cpt_connectes (pseudo, timestamp) values ("'.$_SESSION['login'].'", "'.time().'")');
             }
     }
     $times_m_5mins = time()-(60*5);
     mysql_query('detete from cpt_connectes where timestamp<"'.$times_m_5mins.'"');
     $dnns2 = mysql_query('select pseudo from cpt_connectes');
     $num = mysql_num_rows($dnns2);
     echo 'Il y a actuellement <strong>'.$num.'</strong> membre(s) connect&eacute;(s)';
     if($dnns['nb']>0)
     {
             echo ':<br />';
             $i=0;
             while($dn2 = mysql_fetch_array($dnns2))
             {
                     $i++;
                     echo $dn2['pseudo'];
                     if($i<$num)
                     {
                             echo ',&nbsp;';
                     }
             }
     }
     echo '.';
     ?>
    Le script fonctionne très bien. Mais c'est ma requête que je dois installer dans ma page "deconnexion.php" qui semble ne pas fonctionner. La voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query('delete from cpt_connectes where pseudo="'.$_SESSION['login'].'"');
    Et voici ma page "deconnexion.php":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
     
    require_once("conf.php");
    require_once("template.php");
    require_once("class/class.mysql.php");
    require_once("class/class.espace.membre.php");
     
    //-- Preparation de la class mysql
     
    $mysql   = new mysql;
    $db_link = $mysql -> connexion_mysql($cheminbdd,$userbdd,$passbdd,$tablebdd);
     
    //-- Preparation de la class espace membre
     
    $espace_membre = new espace_membre;
    $espace_membre -> parametres();
     
    //-- Deconnexion de l'utilisateur
     
    $espace_membre -> dexonnexion_membre();
     
    //-- Redirection
     
    redirection_alert("../connexion.php",MSG_CONFIRMATION_DEXONNEXION);
     
    //-- Deconnexion de la base de données
     
    $mysql -> deconnexion_mysql($db_link);
    mysql_query('delete from cpt_connectes where pseudo="'.$_SESSION['login'].'"');
    ?>
    <head>
    Les membres déconnectés devraient disparaître au bout de 5 minutes maximum mais rien ne se passe.
    Auriez-vous une suggestion?

  2. #2
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    ça te choque pas d'utiliser un objet pour gérer ta connexion mysql puis un truc qui n'est pas un appel à une méthode de l'objet et en plus après avoir cloturé ta connexion...


  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 21
    Par défaut
    Il est toujours étonnant que sur ce forum les "experts confirmés" soient toujours enclins à faire des remarques désobligeantes aux profanes ( car j'en suis un et j'aurais bien de la misère à le cacher) qui ne demandent qu'un éclaircissement à un problème. J'ai un haut respect pour ces programmeurs qui sont capables de monter des scripts de A à Z avec un sens de la méthode qui m'échappe encore et que je tente, à tout le moins, d'en comprendre les bases. Pour ce qui est du code, je l'ai bien installé entre les balises proposées dans le menu plus haut. Ai-je oublié quelque chose? Sûrement, d'après vous.
    En excluant le sarcasme dont vous avez fait preuve, vous avez quand même eu l'extrême gentillesse de m'indiquer mon erreur et je vais "plancher dessus" pour reprendre vos termes.
    En passant: "...problèmatique soit disant..." s'écrit "problématique soi-disant"

  4. #4
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    je corrige la faute merci

    ce n'est pas vraiment du sarcasme mais juste une réflexion pour te faire percuter ton erreur... et tu n'es pas si débutant que ça vu l'utilisation d'un objet encapsulent tes appels au connecteur mysql et le code général que tu montres... d'où le fait que je ne réagisse pas forcément comme avec un étudiant ou un vrai débutant...

    désolé si tu as mal pris la tournure... il est vrai que tu fais quelques erreurs de débutant

    au passage aussi abandonne l'extension mysql_ pour te connecter à mysql vu qu'elle va carrément disparaitre au profit des extension mysqli ou pdo...

    la première erreur c'est d'ouvrir et fermer ta connexion avant de chercher à l'utiliser... la 2ème c'est de commencer à utiliser un objet (que tu as fait et dont je ne sais pas ce que tu utilise dedans):
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $mysql   = new mysql;
    $db_link = $mysql -> connexion_mysql($cheminbdd,$userbdd,$passbdd,$tablebdd);
    ...
    $mysql -> deconnexion_mysql($db_link);
    et en même temps tu passes des commandes avec du procédural après la fermeture de la connexion:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query('delete from cpt_connectes where pseudo="'.$_SESSION['login'].'"');
    donc ça ne risque jamais d'exécuter cette commande...

    dans ton script de connexion tu passes des commande sql en procédural mais aucune initialisation de la connexion n'est visible...

    le but d'un objet est notamment d'encapsuler des données et de réguler leur accès via des méthodes qui évitent de pouvoir justement mixer différentes approches et avoir des loupés...

    exemple: tu peux encapsuler dans un objet une connexion à un sgbd ou l'accès au données d'un fichier car tu génères un identifiant unique pour la manipulation de ce genre de flux... par contre, tu ne peux pas pour manipuler une session php car si tu crées une nouvelle session avec une des fonction php dédiées (procédural donc) tu vas corrompre le contenu de ton objet...

    donc quand tu commences à manipuler un truc précis (ici ta connexion mysql) ne mixe pas procédural et objet...

    là où tu as de la chance dans ton script (1er bout de code que tu montres) c'est que les fonctions mysql_... prennent par défaut la connextion mysql ouverte (ton objet mysql doit utiliser en interne mysql_...)

Discussions similaires

  1. [Framework] JdbcTemplate - la requête ne semble pas s'exécuter
    Par ref92 dans le forum Spring
    Réponses: 2
    Dernier message: 06/08/2013, 01h23
  2. [Google Maps] Google Distance Matrix API et jQuery : la requête ne semble pas fonctionner
    Par [ZiP] dans le forum APIs Google
    Réponses: 2
    Dernier message: 19/05/2011, 08h50
  3. Réponses: 7
    Dernier message: 25/03/2008, 20h57
  4. requête de selection qui ne fonctionne pas
    Par emmablue dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 28/07/2006, 13h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo