[Trouvé]Nombre de connectés ?

Discussion dans 'Web, design' créé par SkYlEsS, 9 Janvier 2006.

Statut de la discussion:
Fermée.
  1. Offline
    SkYlEsS Kawai
    Code:
    <a href="chat.php?id=0">Chat <? $connsql = mysql_query("SELECT DISTINCT chat.pseudo, ad_joueurs.id_joueur, ad_joueurs.nom_joueur FROM chat, ad_joueurs WHERE chat.pseudo = ad_joueurs.id_joueur"); while($tab = mysql_fetch_array($connsql)) {echo '('.$tab[2].' connectés)'; } ?></a>
    Avec ce code-ci, il m'affiche donc les pseudos des connectés au chat. Mais seulement, j'aurais aimé qu'il m'affiche seulement le nombre de connectés au chat. Il faut rajouter un "count" quelque part ? Je ne sais aps trop comment faire alors que cela doit surement être facile :oops: :?
    SkYlEsS, 9 Janvier 2006
    #1
  2. Offline
    mOrbide Elite
    Jamais travaillé avec des distincts, mais si tu remplaces simplement ton SELECT par un COUNT ?
    mOrbide, 10 Janvier 2006
    #2
  3. Offline
    SkYlEsS Kawai
    J'ai remplacé le DISTINCT par un COUNT (*) AS mais çà ne fonctionne pas ... :x :? :-(
    SkYlEsS, 10 Janvier 2006
    #3
  4. Offline
    guslinux Gamerz'ien
    Code:
    <? $connsql = mysql_query("SELECT DISTINCT count(chat.pseudo) AS nb, FROM chat, ad_joueurs WHERE chat.pseudo = ad_joueurs.id_joueur"); 
    $tab = mysql_fetch_assoc($connsql)
         echo '('.$tab['nb'].' connectés)'; } ?>
    ou

    Code:
    <? $connsql = mysql_query("SELECT DISTINCT chat.pseudo, ad_joueurs.id_joueur, ad_joueurs.nom_joueur FROM chat, ad_joueurs WHERE chat.pseudo = ad_joueurs.id_joueur");
    while($tab[] = mysql_fetch_array($connsql)) {}
    echo count($tab).' connectés'; ?>
    guslinux, 10 Janvier 2006
    #4
  5. Offline
    FoX SpeEd Touriste
    tu fait simplement :

    Code:
    //requète mysql
    $req = mysql_query("SELECT * FROM ....");
    
    //nbr de connecté
    $nbr = mysql_num_rows($req):
    
    //affichage
    echo $nbr."connecté";
    
    et voila, donc en résumer "mysql_num_rows( )" compte le nombre d'occurence récupére grace a la requète SELECT
    FoX SpeEd, 10 Janvier 2006
    #5
  6. Offline
    guslinux Gamerz'ien
    Pas vraiment non : http://www.nexen.net/docs/php/annotee/function.mysql-fetch-assoc.php

    fetch_assoc traite la ligne en court provenant de la réponce de MySQL et la met dans un tableau associatif. En bref plus tot que de faire $result[$i] pour le champ n°$i dans la requete, on fais $result['Nom_Champ'] et ce, peut importe le n° du champ dans le select.

    Il faut utiliser la clause COUNT() ce qui te permet en une requete de compter le nombre de connectés. D'autre part, ajoutes un LIMIT 1 à la fin du select, ainsi le retour ne fera qu'une seule ligne. Cette ligne aura un seul champ le NB.

    => SELECT COUNT(*) AS Nb FROM Table WHERE ... LIMIT 1
    => http://www.nexen.net/docs/mysql/annotee/select.php?lien=count
    guslinux, 10 Janvier 2006
    #6
  7. Offline
    SkYlEsS Kawai
    Voilà bien des réponses complètes ! Merci beaucoup à tous ! Je me ferai un plaisir de voir lequel de vous à raison demain et je vous en ferai part :wink:
    SkYlEsS, 10 Janvier 2006
    #7
  8. Offline
    SkYlEsS Kawai
    Code:
    <? $connsql = mysql_query("SELECT DISTINCT chat.pseudo, ad_joueurs.id_joueur, ad_joueurs.nom_joueur FROM chat, ad_joueurs WHERE chat.pseudo = ad_joueurs.id_joueur); while($tab = mysql_fetch_array($connsql)) {echo '('.count($tab).' connectés)';} ?>
    Il me note "(6 connectés)" fois le nombre de connectés :

    S'il y a 4 connectés, il me notera 4 x "(6 connectés)" à la suite de l'autre ... Je ne sais pas d'où il sort le 6 ... :D

    Il est possible d'indiquer "connecté" si il y a 0 ou 1 connecté et "connectés" si il y a plus de 2 connectés compris ? :D
    SkYlEsS, 11 Janvier 2006
    #8
  9. Offline
    SkYlEsS Kawai
    Lorsque :

    Code:
    <? $connsql = mysql_query("SELECT DISTINCT chat.pseudo, ad_joueurs.id_joueur, ad_joueurs.nom_joueur FROM chat, ad_joueurs WHERE chat.pseudo = ad_joueurs.id_joueur"); while($tab[] = mysql_fetch_array($connsql)) { } echo '('.count($tab).' connectés)'; ?>
    Il me compte correctement le nombre de connecté mais en en rajoutant un de trop ... :shock:

    On rajoute un "-1" quelque part alors ? :p
    SkYlEsS, 11 Janvier 2006
    #9
  10. Offline
    alan Elite
    ben si yen a 0 on a pas besoin de s'en occuper ;) mais bon!

    Code:
    [...code SQL...]
    $nb_con = count($tab);
    $connecte = ($nb_con>1)?' connectés':' connecté';
    echo '('.$nb_con. $connecte')'; ?>
    alan, 11 Janvier 2006
    #10
  11. Offline
    guslinux Gamerz'ien
    Code:
    <? $connsql = mysql_query("SELECT COUNT(chat.pseudo) as nb, ad_joueurs.id_joueur, ad_joueurs.nom_joueur FROM chat, ad_joueurs WHERE chat.pseudo = ad_joueurs.id_joueur LIMIT 1"); 
    $tab = mysql_fetch_array($connsql);
    echo '('.$tab['nb'].' connectés)'; ?>
    Testes le code ci dessu. Utiliser le count permet de compter le nombre de champs qui correspondent au WHERE. Le LIMIT ne prends qu'une seule ligne.

    Evidement, si tu veux afficher les pseudo là le count n'est pas de mise, une simple incrémentation suffira.
    guslinux, 12 Janvier 2006
    #11
  12. Offline
    SkYlEsS Kawai
    'fonctionne pas :cry:
    SkYlEsS, 12 Janvier 2006
    #12
  13. Offline
    guslinux Gamerz'ien
    Tu as phpMyAdmin sur ton hébergement ?

    Il faut tester la requete ... et voir ce qu'elle renvoie.
    guslinux, 12 Janvier 2006
    #13
  14. Offline
    SkYlEsS Kawai
    Oui, je vais voir :wink:

    Mais je dois mettre quoi en test au fait alors ? :oops:
    SkYlEsS, 12 Janvier 2006
    #14
  15. Offline
    SkYlEsS Kawai
    Bouhouhou je ne trouverai jamais :cry:
    SkYlEsS, 12 Janvier 2006
    #15
  16. Offline
    SkYlEsS Kawai
    Code:
    						<?
    						$connsql = mysql_query("SELECT DISTINCT chat.pseudo, ad_joueurs.id_joueur, ad_joueurs.nom_joueur FROM chat, ad_joueurs WHERE chat.pseudo = ad_joueurs.id_joueur");
    						while($tab = mysql_fetch_array($connsql));
    						{
    							$nb_con = count($tab); 
    							$connecte = ($nb_con>1)?' connectés':' connecté';
    							echo '('.$nb_con.' '.$connecte.')';
    						}
    						?>
    Comment rajouter un "-1" après le calcul du nombre de connectés ? :p
    SkYlEsS, 13 Janvier 2006
    #16
  17. Offline
    guslinux Gamerz'ien
    Code:
    						<?
    						$connsql = mysql_query("SELECT DISTINCT chat.pseudo, ad_joueurs.id_joueur, ad_joueurs.nom_joueur FROM chat, ad_joueurs WHERE chat.pseudo = ad_joueurs.id_joueur");
    $nb_con = 0;
    						while($tab = mysql_fetch_array($connsql));
    						{
    							$nb_con++; 
    						}
    $connecte = ($nb_con>1)?' connectés':' connecté';
    							echo '('.$nb_con.' '.$connecte.')';
    						?>
    Comme ceci ca devrait te compter le nombre de lignes de ta requete = nombre de connectés.

    Attention que si ton nombre de connectés est assé important, ton traitement vas etre lent, d'où l'intéret du COUNT().
    guslinux, 13 Janvier 2006
    #17
  18. Offline
    SkYlEsS Kawai
    Toujours pas ... :x

    J'y arriverai jamais :cry:
    SkYlEsS, 13 Janvier 2006
    #18
  19. Offline
    SkYlEsS Kawai
    Pourquoi, à certains tests de code il me note "Array" à la place du chiffre ? :?
    SkYlEsS, 13 Janvier 2006
    #19
  20. Offline
    guslinux Gamerz'ien
    parce que tu as un tableau dans ta variable, fais un print_r($var) pour voir le contenu.
    guslinux, 13 Janvier 2006
    #20
Statut de la discussion:
Fermée.