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 :

Séparer les membres connectés et non connectés en 2 tableaux


Sujet :

PHP & Base de données

  1. #1
    je_suis_tres_gentil
    Invité(e)
    Par défaut Séparer les membres connectés et non connectés en 2 tableaux
    bonjour, j'ai un tableau avec listes des membres

    donc voilà le codes

    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
    <?php
    //Requête
     
    $requete2 = mysql_query('SELECT membre_id, membre_pseudo, membre_inscrit, membre_post, membre_derniere_visite, online_id
    FROM forum_membres
    LEFT JOIN forum_whosonline ON online_id = membre_id
    ORDER BY '.$sort.', online_id '.$tri.'
    LIMIT ' . $premier . ', ' . $MembreParPage .'')
    or die (mysql_error());
     
     
    if (mysql_num_rows($requete2) > 0)
    {
    ?>
           <table>
           <tr>
           <th class="pseudo"><strong>Pseudo</strong></th>             
           <th class="posts"><strong>Messages</strong></th>
           <th class="inscrit"><strong>Inscrit depuis le</strong></th>
           <th class="derniere_visite"><strong>Dernière visite</strong></th>                       
           <th><strong>Connecté</strong></th>             
     
           </tr>
           <?php
           //On lance la boucle
     
           while ($data2 = mysql_fetch_assoc($requete2))
           {
           echo '<tr><td>
           <a href="./voirprofil.php?m='.$data2['membre_id'].'&amp;action=consulter">
           '.stripslashes(htmlspecialchars($data2['membre_pseudo'])).'</a></td>
           <td>'.$data2['membre_post'].'</td>
           <td>'.date('d/m/Y',$data2['membre_inscrit']).'</td>
           <td>'.date('d/m/Y',$data2['membre_derniere_visite']).'</td>';
             if (empty($data2['online_id'])) echo '<td>non</td>'; 
           else echo '<td>oui</td>';
           echo '</tr>';
           }
           ?>
           </table>
    et moi j'aimerais faire faire ce même tableau mais en séparant les oui et non

    mais je sais le principe mais ça n'a pas marché vraimment

    donc j'ai éssaye de mettre en sous de ma requette

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if ($data2['online_id']==1)
    {
    echo '<td>non</td>';
    }
    else 
     
           		if ($data2['online_id']==2)
    {
    echo '<td>oui</td>';
    }
    et dans le tableau j'ai remis le meme code

    mais ça n'a pas voulu

    car j'aimerais bien faire un tableau pour les non connecté et un autre avec les connecté

    donc c'est pour celà j'ai mis le 1 pour non et 2 pour le oui

    ça n'a pas voulu marché et les membres nn connecté reste toujour dans le tableau des membres connecté

    si quelqu'un à une idée pour faire 2 tableaux et séparé les connecté et les non connecté

    ca seras sympas de votre part de m'aidé

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 369
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 369
    Billets dans le blog
    17
    Par défaut
    Tu affiches directement les résultats de ta requête = ton code n'est pas souple.
    Ce que je ferais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $sql = 'SELECT...' ;
    $rs = mysql_query($sql) ;
    $online = array( ) ; // Tableau PHP contenant les membres online
    $offline = array( ) ; // Tableau PHP contenant les membres offline
    while ( $tuple = mysql_fetch_object($rs) ) {
        if ( $tuple est l'enregistrement d'un membre connecté ) {
            $online[ ] = $tuple ;
        } else {
            $offline[ ] = $tuple ;
        }
    }
    // Affichage de $online et $offline à ta convenance
    // ...

  3. #3
    Membre expérimenté Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Par défaut
    Sinon encore plus simple, un ORDER BY dans la requête.

  4. #4
    je_suis_tres_gentil
    Invité(e)
    Par défaut
    merci mais sinon j'avais aussi pensé à mettre

    WHERE online_id=1

    mais comme j'avais mis aussi

    WHERE membre_rang=2

    ça m'a fait une érreur

    j'ai pensé à ça car c'était une idée

    WHERE online_id=1

    vue comme ça il pouvait cherche tout les oui donc le 1

    merci de votre aide

  5. #5
    Membre expérimenté Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Par défaut
    Ben tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ... FROM ... WHERE membre_rang=2 ... ORDER BY online_id DESC
    Cette reqête te retourneras tes membres de rang=2 trié par online_id décroissant : d'abord ceux ayant un online_id=2 puis online_id=1, retournant d'abord les utilisateurs connectés, puis les déconnectés (je me réfère à ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if ($data2['online_id']==1)
    {
    echo '<td>non</td>';
    }
    else 
     
           		if ($data2['online_id']==2)
    {
    echo '<td>oui</td>';
    }
    1 = déconnecté, 2 = connecté

  6. #6
    je_suis_tres_gentil
    Invité(e)
    Par défaut
    mais il y as une érreur qui est

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT ... FROM ... WHERE membre_rang=2 ... ORDER BY online_id DESC ORDER BY mem' at line 4
    c'est comme la 1 fois que j'ai fais mais avec 2 where

    donc voilà tout le tableau qui est censé d'avoir que des membres déconnecté par exemple

    voilà

    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
    <?php
    //Requête
     
    $requete2 = mysql_query('SELECT membre_id, membre_pseudo, membre_inscrit, membre_post, membre_derniere_visite, online_id
    FROM forum_membres
    LEFT JOIN forum_whosonline ON online_id = membre_id
    SELECT ... FROM ... WHERE membre_rang=2 ... ORDER BY online_id DESC
    ORDER BY '.$sort.', online_id '.$tri.'
    LIMIT ' . $premier . ', ' . $MembreParPage .'')
    or die (mysql_error());
     
     
    if (mysql_num_rows($requete2) > 0)
    {
    ?>
           <table>
           <tr>
           <th class="pseudo"><strong>Pseudo</strong></th>             
           <th class="posts"><strong>Messages</strong></th>
           <th class="inscrit"><strong>Inscrit depuis le</strong></th>
           <th class="derniere_visite"><strong>Dernière visite</strong></th>                       
           <th><strong>Connecté</strong></th>             
     
           </tr>
           <?php
           //On lance la boucle
     
           while ($data2 = mysql_fetch_assoc($requete2))
           {
           echo '<tr><td>
           <a href="./voirprofil.php?m='.$data2['membre_id'].'&amp;action=consulter">
           '.stripslashes(htmlspecialchars($data2['membre_pseudo'])).'</a></td>
           <td>'.$data2['membre_post'].'</td>
           <td>'.date('d/m/Y',$data2['membre_inscrit']).'</td>
           <td>'.date('d/m/Y',$data2['membre_derniere_visite']).'</td>';
           if ($data2['online_id']==1)
    {
    echo '<td>non</td>';
    }
    else 
     
           		if ($data2['online_id']==2)
    {
    echo '<td>oui</td>';
    }
     
     
           echo '</tr>';
           }
           ?>
           </table>
    merci de ton aide

  7. #7
    Membre expérimenté Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Par défaut
    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
    $requete2 = mysql_query('SELECT membre_id, membre_pseudo, membre_inscrit, membre_post, membre_derniere_visite, online_id FROM forum_membres LEFT JOIN forum_whosonline ON online_id = membre_id WHERE membre_rang=2 ORDER BY online_id DESC, '.$sort.', '.$tri.' LIMIT ' . $premier . ', ' . $MembreParPage .'') or die (mysql_error());
     
    if (mysql_num_rows($requete2) > 0)
    {
    ?>
           <table>
           <tr>
           <th class="pseudo"><strong>Pseudo</strong></th>             
           <th class="posts"><strong>Messages</strong></th>
           <th class="inscrit"><strong>Inscrit depuis le</strong></th>
           <th class="derniere_visite"><strong>Dernière visite</strong></th>                       
           <th><strong>Connecté</strong></th>             
     
           </tr>
           <?php
           //On lance la boucle
     
           while ($data2 = mysql_fetch_assoc($requete2))
           {
           echo '<tr><td>
           <a href="./voirprofil.php?m='.$data2['membre_id'].'&amp;action=consulter">
           '.stripslashes(htmlspecialchars($data2['membre_pseudo'])).'</a></td>
           <td>'.$data2['membre_post'].'</td>
           <td>'.date('d/m/Y',$data2['membre_inscrit']).'</td>
           <td>'.date('d/m/Y',$data2['membre_derniere_visite']).'</td>';
           if (empty($data2['online_id']))
                echo '<td>non</td>';
           else
                echo '<td>oui</td>';
            echo '</tr>';
           }
           ?>
           </table>
    Ça devrait marcher.

  8. #8
    je_suis_tres_gentil
    Invité(e)
    Par défaut
    merci mais là il y as une autre érreur :

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ASC LIMIT 0, 25' at line 1
    merci d'avance

  9. #9
    Membre expérimenté Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete2 = mysql_query('SELECT membre_id, membre_pseudo, membre_inscrit, membre_post, membre_derniere_visite, online_id FROM forum_membres LEFT JOIN forum_whosonline ON online_id = membre_id WHERE membre_rang=2 ORDER BY online_id DESC, '.$sort.' '.$tri.' LIMIT ' . $premier . ', ' . $MembreParPage .'') or die (mysql_error())
    Et comme ça ? (sisi y'a une différence, une "," en moins )

  10. #10
    je_suis_tres_gentil
    Invité(e)
    Par défaut
    merci on dirais il marche mais j'ai une question

    j'aimerais le tableau qui seras en ligne n'apparait pas mais il apparais quand un membre se connecte
    car pour les hors ligne les membres seront dans le tableau hors ligne

    voilà

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    <h5 align="center">liste des membres en ligne</h5>
    <?php
    //Requête
     
    $requete2 = mysql_query('SELECT membre_id, membre_pseudo, membre_inscrit, membre_post, membre_derniere_visite, online_id FROM forum_membres LEFT JOIN forum_whosonline ON online_id = membre_id WHERE membre_rang=2 ORDER BY online_id DESC, '.$sort.' '.$tri.' LIMIT ' . $premier . ', ' . $MembreParPage .'') or die (mysql_error()); 
    if (mysql_num_rows($requete2) > 0)
    {
    ?>
           <table>
           <tr>
           <th class="pseudo"><strong>Pseudo</strong></th>             
           <th class="posts"><strong>Messages</strong></th>
           <th class="inscrit"><strong>Inscrit depuis le</strong></th>
           <th class="derniere_visite"><strong>Dernière visite</strong></th>                       
           <th><strong>Connecté</strong></th>             
     
           </tr>
           <?php
           //On lance la boucle
     
           while ($data2 = mysql_fetch_assoc($requete2))
           {
           echo '<tr><td>
           <a href="./voirprofil.php?m='.$data2['membre_id'].'&amp;action=consulter">
           '.stripslashes(htmlspecialchars($data2['membre_pseudo'])).'</a></td>
           <td>'.$data2['membre_post'].'</td>
           <td>'.date('d/m/Y',$data2['membre_inscrit']).'</td>
           <td>'.date('d/m/Y',$data2['membre_derniere_visite']).'</td>';
           if (empty($data2['online_id']))
                echo '<td>non</td>';
           else
                echo '<td>oui</td>';
            echo '</tr>';
           }
           ?>
           </table>
           <?php
    }
    else //S'il n'y a pas de message
    {
            echo'<p>Ce forum ne contient aucun membre en ligne</p>';
    }
    ?>
     
    <h5 align="center">liste des membres hors ligne</h5>
    <?php
    //Requête
     
    $requete2 = mysql_query('SELECT membre_id, membre_pseudo, membre_inscrit, membre_post, membre_derniere_visite, online_id FROM forum_membres LEFT JOIN forum_whosonline ON online_id = membre_id WHERE membre_rang=2 ORDER BY online_id DESC, '.$sort.' '.$tri.' LIMIT ' . $premier . ', ' . $MembreParPage .'') or die (mysql_error()); 
    if (mysql_num_rows($requete2) > 0)
    {
    ?>
           <table>
           <tr>
           <th class="pseudo"><strong>Pseudo</strong></th>             
           <th class="posts"><strong>Messages</strong></th>
           <th class="inscrit"><strong>Inscrit depuis le</strong></th>
           <th class="derniere_visite"><strong>Dernière visite</strong></th>                       
           <th><strong>Connecté</strong></th>             
     
           </tr>
           <?php
           //On lance la boucle
     
           while ($data2 = mysql_fetch_assoc($requete2))
           {
           echo '<tr><td>
           <a href="./voirprofil.php?m='.$data2['membre_id'].'&amp;action=consulter">
           '.stripslashes(htmlspecialchars($data2['membre_pseudo'])).'</a></td>
           <td>'.$data2['membre_post'].'</td>
           <td>'.date('d/m/Y',$data2['membre_inscrit']).'</td>
           <td>'.date('d/m/Y',$data2['membre_derniere_visite']).'</td>';
           if (empty($data2['online_id']))
                echo '<td>non</td>';
           else
                echo '<td>oui</td>';
            echo '</tr>';
           }
           ?>
           </table>
           <?php
    }
    else //S'il n'y a pas de message
    {
            echo'<p>Ce forum ne contient aucun membre hors ligne</p>';
    }
    ?>
    et aussi es ce que tu peut m'explque la requette car on dirais pas qui ne trouve le id pour les oui et non

    donc si tu peux m'expliquer ça seras sympas

    merci

  11. #11
    Membre expérimenté Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Par défaut
    Ah, en fait tu auras un tableau pour les membres en lignes et un autre pour les membres hors-ligne ?

    Auquel cas :
    requête pour le tableau "en ligne" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $requete2 = mysql_query('SELECT membre_id, membre_pseudo, membre_inscrit, membre_post, membre_derniere_visite, online_id FROM forum_membres WHERE membre_rang=2 AND online_id IN (SELECT membre_id FROM forum_whosonline) ORDER BY '.$sort.' '.$tri.' LIMIT ' . $premier . ', ' . $MembreParPage .'') or die (mysql_error());
    pour le tableau "hors-ligne" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $requete2 = mysql_query('SELECT membre_id, membre_pseudo, membre_inscrit, membre_post, membre_derniere_visite, online_id FROM forum_membres WHERE membre_rang=2 AND online_id NOT IN (SELECT membre_id FROM forum_whosonline) ORDER BY '.$sort.' '.$tri.' LIMIT ' . $premier . ', ' . $MembreParPage .'') or die (mysql_error());
    Dans la première requête on vérifie que le online_id est bien présent dans la table forum_whosonline avec l'instruction IN (SELECT...) et pour la deuxième on vérifie qu'il n'y est pas avec NOT IN (SELECT...)

  12. #12
    je_suis_tres_gentil
    Invité(e)
    Par défaut
    re

    oui en faite il y as 2 tableaux un pour en lign et l'autre pour hors ligne

    donc j'ai changé les requette que tu m'a dit mais voilà l'érreur

    Unknown column 'online_id' in 'field list'

    on dirais il ne trouve pas online_id

  13. #13
    Membre expérimenté Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Par défaut
    Oui, je me suis emmêler les pinceaux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $requete2 = mysql_query('SELECT membre_id, membre_pseudo, membre_inscrit, membre_post, membre_derniere_visite, online_id FROM forum_membres, forum_whosonline WHERE membre_id=online_id AND membre_rang=2 AND membre_id IN (SELECT online_id FROM forum_whosonline) ORDER BY '.$sort.' '.$tri.' LIMIT ' . $premier . ', ' . $MembreParPage .'') or die (mysql_error());
    pour le tableau "hors-ligne" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $requete2 = mysql_query('SELECT membre_id, membre_pseudo, membre_inscrit, membre_post, membre_derniere_visite FROM forum_membres WHERE membre_rang=2 AND membre_id NOT IN (SELECT online_id FROM forum_whosonline) ORDER BY '.$sort.' '.$tri.' LIMIT ' . $premier . ', ' . $MembreParPage .'') or die (mysql_error());
    Dans la première requête on vérifie que le online_id est bien présent dans la table forum_whosonline avec l'instruction IN (SELECT...) et pour la deuxième on vérifie qu'il n'y est pas avec NOT IN (SELECT...)[/QUOTE]

  14. #14
    je_suis_tres_gentil
    Invité(e)
    Par défaut
    merci tout fonctionne

    donc si je comprend ça seras le même principe pour liste d'ami
    je le ferais quand j'aurais analyser tout le code pour que je puisse un peux comprendre

    je t'en remerci

  15. #15
    Membre expérimenté Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Par défaut
    Avec plaisir

  16. #16
    je_suis_tres_gentil
    Invité(e)
    Par défaut
    a oui j'avais oublier de faire ou juste comprendre comment on fait pour compter les membres qui seront en ligne et hors ligne

    car dans le tableau hors ligne il faut dire il y as 3 membres hors ligne

    et si quelqu'un se connecte là s'afficheras

    1 membres en ligne

    et 2 membres hors ligne

    en sachant il ne faut pas comptabilisé le pseudo avec membre rang 2 qui napparais pas dans le tableau

    je ne sais pas si tu as compris sinon tu me diras et je te réspliquerais

    car j'ai un code qui comptabilise il met a chaque fois 4 membres qui est nomal

    mais il faut trouvé un moyen de le dire il y as 3 membres le 4 membres seras pour admin qui ne seras pas dans le tableau des membres

    si je retrouve le code je te met et on modifieras ca

Discussions similaires

  1. Membre connecté ou non connecté
    Par drick35 dans le forum Langage
    Réponses: 2
    Dernier message: 20/09/2013, 10h54
  2. Choisir Mode connecté ou non connecté
    Par bazoga dans le forum Développement
    Réponses: 7
    Dernier message: 30/11/2011, 16h00
  3. C# - BD : mode connecté ou non-connecté
    Par rousseau_damien dans le forum C#
    Réponses: 5
    Dernier message: 10/11/2010, 22h57
  4. Afficher les membres connectés
    Par tano93220 dans le forum Langage
    Réponses: 4
    Dernier message: 20/09/2006, 18h32

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