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 :

D'après vous ce code est correct ? [MySQL]


Sujet :

PHP & Base de données

  1. #21
    Membre éclairé Avatar de bilou95
    Inscrit en
    Septembre 2006
    Messages
    433
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 433
    Par défaut
    Voici le code ...

    Ce que je voudrais ce qu'il n'affiche pas tout les enregistrements concernant la requete SELECT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id, user_nom, DateConnect FROM connectes WHERE user_nom='".$user."' order by id
    qu'il s'arrete au 1er enregistrement trouvé en partant de la 2e ligne de la table ...

    J'espere que vous m'avez compris !

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <?
    //Fichier de configuration
    require ("cnx/login_sql.php");
    require ("cnx/login_sql.php");
    //Connexion à la base de données
    $db = mysql_connect($cnxhost, $cnxuser, $cnxpass) or die ("Erreur de connexion");
     
    //Connexion à la table Users
    mysql_select_db($cnxbase,$db);
     
    $date = date("d-m-Y");
     
    $user=$_SESSION['USER_NOM'];
     
    echo '<br>';
    //Affichage Dernière visite de l'utilisateur
     
    $d_conn = "SELECT id, user_nom, DateConnect FROM connectes WHERE user_nom='".$user."' order by id";
    $req_d_conn = mysql_query ($d_conn) or die ('Erreur SQL !<br>'.mysql_error());
     
    echo '<center>
    
    <table width="90%" bgcolor="#CFA8AF" cellpadding="0" cellspacing="0" border="0">	
    <tr>
    	<td align="center"><center><font size="1" color="#FFFFFF">Bienvenue <strong>'.$_SESSION['USER_PRENOM'].'</strong></font></center></td>
    </tr>';
    // On se positionne sur le 2e enregistrement
     
    mysql_data_seek($req_d_conn, 1);
     
    while($data=mysql_fetch_array($req_d_conn))
    {
    echo '<tr><td align="center"><center><font size="1" color="#FFFFFF">'.$data['DateConnect'].'<strong></strong></font></center></td>';
    }
     
    	echo'
    </tr>
    
    <tr>	
    	<td align="center"><a href="?numlien=logoff"><font color="#CD6767" size="1">Logout</font></a></td>
    </tr>
    
    </table>';
     
    echo '<br>';
     
    echo '<tr>
          <center><font size="1" color="#FFFFFF"><strong>'.$date.'</center></font></strong>
          </tr>';
    ?>

  2. #22
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Citation Envoyé par bilou95
    qu'il s'arrete au 1er enregistrement trouvé en partant de la 2e ligne de la table ...
    C'est justement la condition de "trouvage" que j'aimerais que tu expliques...

  3. #23
    Membre éclairé Avatar de bilou95
    Inscrit en
    Septembre 2006
    Messages
    433
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 433
    Par défaut
    A chaque connexion la table 'connectés' est incrémentée en renseignant le USER_NOM / DateConnect / Ip.

    Ce que j'aimerai c'est que dés qu'un utilisateur se connecte, qu'il saute le 1er enregistrement (qu'il vient bien sur d'incrémenter dans la table) et qu'il commence sa recherche a partir du 2e enregistrement. A partir du 2e enregistrement, il commence sa recherche en se basant sur le champ 'USER_NOM' via la condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id, user_nom, DateConnect FROM connectes WHERE user_nom='".$user."' order by id
    ... Dés qu'il a trouvé la ligne ou le USER_NOM est égale à $_SESSION[USER_NOM] et bien ! qu'il s'arrête.

    J'ai fais le test en me connectant essentiellement avec le meme login ... et bien il m'affiche tout les enregistrements de la table référencée par le login USER_NOM.

    Dés que je me connecte avec un autre login, voici le message d'erreur qu'il m'affiche ...
    Warning: mysql_data_seek(): Offset 1 is invalid for MySQL result index 14 (or the query data is unbuffered) in c:\program files\easyphp1-8\www\alliance\menu.html on line 33

    as tu compris ?

    Merci, en tout cas, pour ta patience.

  4. #24
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Par défaut
    Non personnellement je n'ai pas compris, alors plutot que d'exprimer ton besoin en terme technique, exprime le plutot en terme fonctionnel et organisationnel je pense qu'on avancera d'avantage.

  5. #25
    Membre éclairé Avatar de bilou95
    Inscrit en
    Septembre 2006
    Messages
    433
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 433
    Par défaut
    Dés connexion de l'utilisateur, je veux que soit affiché la derniere visite de l'utilisateur.

    Qu'il parcours la table du 2e enregistrement au dernier enregistrement et dés que la condition est vérifiée et confirmé ... qu'il m'affiche le champ DateConnect

  6. #26
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Et quel est l'intérêt de la boucle while alors

    En gros si j'ai bien compris en faisant ta requête tu vas récupérer par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Amara 9 mars 9h59
    Amara 9 mars 7h12
    Amara 9 mars 1h17
    Amara 8 mars 8h10
    Je viens de me connecter, il est 9h59, toi tu veux afficher "dernière visite : 9 mars 7h12".

    Suffit de faire une requête sur ta table en filtrant le pseudo (tu le fais déjà), en triant par date décroissante, et de prendre le deuxième enregistrement de la réponse (le data_seek). Et si c'est ça je vois pas pourquoi on ferait une boucle Sinon je capte vraiment pas.

  7. #27
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Par défaut
    Donc tu ne veux que la date de dernière connexion si j'ai bien compris...

    SELECT id, user_nom, DateConnect FROM connectes WHERE user_nom='".$user."' order by DateConnect desc

    Le premier enregistrement sera celui que tu cherches (a condition que la date soit bien formattée pour ca un format de date à la francaise c'est l'horreur )

    On va quand meme expliquer un peu la requete ca me semble nécessaire :

    SELECT id, user_nom, DateConnect FROM connectes
    Sélectionne l'id, le user_nom, et la DateConnect dans la table connectes

    WHERE user_nom='".$user."'
    Ne prend que les enregistrements dont le user_nom est égal à ma variable user (en clair ne prend que ceux qui correspond à l'utilisateur que je traite)

    order by DateConnect desc
    Ordonne les résultats par DateConnect en commençant par la plus grande (donc la plus récente)

    Honnetement amara et moi te l'avons déjà dit plusieurs fois mais avant de plonger tête baissée dans du code commence par réfléchir d'un point de vue plus global, et non seulement technique (car on a vraiment la sensation que tu n'as absolument pas tenu compte de ces remarques )

  8. #28
    Membre éclairé Avatar de bilou95
    Inscrit en
    Septembre 2006
    Messages
    433
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 433
    Par défaut
    Je suis vraiment désolé ...

    J'ai l'impression d'etre bete.

    Il faut que je prenne note de tout ce que vous venez de me dire ... merci a vous ...

    Je retourne sur mon code et vous tiens informé.

    Je pensais que la boucle WHILE permettait de parcourir la table ... non ?

  9. #29
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Par défaut
    Il y a une différence entre être bête et foncer tête baissée

    La boucle while permet bien de parcourir des enregistrements par exemple mais en l'occurence tu n'en désires qu'un : celui de la dernière connexion.

  10. #30
    Membre éclairé Avatar de bilou95
    Inscrit en
    Septembre 2006
    Messages
    433
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 433
    Par défaut
    D'accord je comprends mieux ...

    Je vais essayer de me dépétrer seul now ... Avec toutes ces infos que vous m'avez fourni si gentimment ... je vous tiens au jus

    Merci a vous ... Ce forum est EXCEPTIONNEL !

  11. #31
    Membre éclairé Avatar de bilou95
    Inscrit en
    Septembre 2006
    Messages
    433
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 433
    Par défaut
    Resource id #14

    Que veux dire ce message ?

    Thks

  12. #32
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Par défaut
    Ressource portant l'identifiant 14.

    Hem typiquement c'est un résultat de base de données.
    Si tu veux une réponse précise, il faudra une question précise ^^

  13. #33
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    T'as du oublier de faire un mysql_fetch_array pour exploiter le résultat...

  14. #34
    Membre éclairé Avatar de bilou95
    Inscrit en
    Septembre 2006
    Messages
    433
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 433
    Par défaut
    Ca me met : Array a l'excution de la page.

    la commande mysql_fetch_array fait quoi au juste ?

  15. #35
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Par défaut
    Je pense que commencer par un tutoriel php de connexion à une base de données te ferait gagner un temps certain

  16. #36
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Citation Envoyé par bilou95
    Ca me met : Array a l'excution de la page.

    la commande mysql_fetch_array fait quoi au juste ?
    Tu as le droit de consulter la doc tout seul hein

    http://fr.php.net/manual/fr/function...etch-array.php

    Et le tuto qui pourrait t'aider il est là :
    http://eusebius.developpez.com/phpmysql-base/

  17. #37
    Membre éclairé Avatar de bilou95
    Inscrit en
    Septembre 2006
    Messages
    433
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 433
    Par défaut
    Ou est ce que ca peche cette fois ... Ca commence a me saouler là !

    Récupérer dans les tutoriaux : mysql_data_seek() déplace le pointeur interne de résultat, dans le résultat associé à l'identifiant de résultat result_identifier. Il le fait pointer à la ligne row_number. Le prochain appel à une fonction MySQL de récupération de données, comme la fonction mysql_fetch_assoc() retournera cette ligne.

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    <?
    //Fichier de configuration
    require ("cnx/login_sql.php");
    require ("cnx/login_sql.php");
    //Connexion à la base de données
    $db = mysql_connect($cnxhost, $cnxuser, $cnxpass) or die ("Erreur de connexion");
    
    //Connexion à la table Users
    mysql_select_db($cnxbase,$db);
    
    $date = date("d-m-Y");
    
    $user=$_SESSION['USER_NOM'];
    
    echo '<br>';
    //Affichage Dernière visite de l'utilisateur
    
    $d_conn = "SELECT user_nom, DateConnect FROM connectes WHERE user_nom='".$user."'";
    $req_d_conn = mysql_query ($d_conn) or die ('Erreur SQL !<br>'.mysql_error());
      
      echo '<center>
    
    <table width="90%" bgcolor="#CFA8AF" cellpadding="0" cellspacing="0" border="0">	
    <tr>
    	<td align="center"><center><font size="1" color="#FFFFFF">Bienvenue <strong>'.$_SESSION['USER_PRENOM'].'</strong></font></center></td>
    </tr>';	
    
    
    // On se positionne sur le 2e enregistrement
    
    mysql_data_seek($req_d_conn, 1);
    
    $data=mysql_fetch_assoc($req_d_conn); 
    
    echo '<tr><td align="center"><center><font size="1" color="#FFFFFF">'.$data.'<strong></strong></font></center></td>';
    
    
    	echo'
    </tr>
    
    <tr>	
    	<td align="center"><a href="?numlien=logoff"><font color="#CD6767" size="1">Logout</font></a></td>
    </tr>
    
    </table>';
    
    echo '<br>';
    	
    echo '<tr>
          <center><font size="1" color="#FFFFFF"><strong>'.$date.'</center></font></strong>
          </tr>';
    ?>

  18. #38
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Par défaut
    Dernier essai avant que je jette l'éponge : ton problème est un problème d'avantage algorithmique que d'écriture du code.

    Ce code m'a l'air à première vue correct, d'un point de vue syntaxe.

    Maintenant si je sors un peu de l'esprit codeur et que je m'interroge sur les tenants et les aboutissants de ce code :

    Je veux récupérer la date de dernière connexion de l'utilisateur.
    Pour cela à chaque fois qu'il se connecte, j'enregistre dans la base la date de connexion.

    1er point : je me dis que c'est tout de meme plus pratique de récupérer sa date de dernière connexion avant d'enregistrer celle actuelle, puisqu'ainsi j'aurai à récupérer le dernier enregistrement et pas l'avant dernier (chose qui justifierait que tu te places à la 2ème ligne).

    2ème point : je me dis que c'est d'autant plus fiable que si l'utilisateur ne s'est jamais connecté et que je me place au deuxième enregistrement, ca risque de ne pas passer puisque je n'aurai aucune donnée sur lui en base.

  19. #39
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    $data c'est quoi ? Un tableau associatif.

    Je doute que tu veuilles afficher un tableau.

    La date est dans $data['DateConnect'].

    Et oui par rapport à ce que dit ratapapa il faut faire gaffe qu'il existe bien une date de dernière connexion (test avant le data_seek peut-être avec mysql_num_rows par exemple).

  20. #40
    Membre éclairé Avatar de bilou95
    Inscrit en
    Septembre 2006
    Messages
    433
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 433
    Par défaut
    justement en parlant de ca ... je l'avais testé ... (mysql_num_rows)

    J'avais 2 enregistrements dans ma table

    A l'affichage sur ma page ... il m'indiquait '2'

    ????
    Le mysql_data_seek ne s'applique pas

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Est ce que ce code est correcte? vb6 ADO
    Par zidane2 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 30/09/2010, 00h14
  2. est ce que ce bout de code est correct?
    Par Elay dans le forum C++
    Réponses: 5
    Dernier message: 03/03/2010, 11h37
  3. Est ce que ce code est correct ?
    Par foot.c dans le forum Débuter
    Réponses: 6
    Dernier message: 12/05/2008, 02h49
  4. Réponses: 15
    Dernier message: 19/09/2007, 19h46
  5. Modifier le code après la compilation, c'est possible?
    Par marcus333 dans le forum Langage
    Réponses: 1
    Dernier message: 12/09/2005, 10h52

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