[Trouvé]Nombre de connectés ?

Statut
N'est pas ouverte pour d'autres réponses.

SkYlEsS

Elite
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: :?
 

mOrbide

Elite
Jamais travaillé avec des distincts, mais si tu remplaces simplement ton SELECT par un COUNT ?
 
1er
OP
SkYlEsS

SkYlEsS

Elite
J'ai remplacé le DISTINCT par un COUNT (*) AS mais çà ne fonctionne pas ... :x :? :-(
 

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'; ?>
 

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
 

guslinux

Gamerz'ien
FoX SpeEd a dit:
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
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
 
1er
OP
SkYlEsS

SkYlEsS

Elite
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:
 
1er
OP
SkYlEsS

SkYlEsS

Elite
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
 
1er
OP
SkYlEsS

SkYlEsS

Elite
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
 

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')'; ?>
 

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.
 
1er
OP
SkYlEsS

SkYlEsS

Elite
'fonctionne pas :cry:
 

guslinux

Gamerz'ien
SkYlEsS a dit:
'fonctionne pas :cry:
Tu as phpMyAdmin sur ton hébergement ?

Il faut tester la requete ... et voir ce qu'elle renvoie.
 
1er
OP
SkYlEsS

SkYlEsS

Elite
Oui, je vais voir :wink:

Mais je dois mettre quoi en test au fait alors ? :oops:
 
1er
OP
SkYlEsS

SkYlEsS

Elite
Bouhouhou je ne trouverai jamais :cry:
 
1er
OP
SkYlEsS

SkYlEsS

Elite
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
 

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().
 
1er
OP
SkYlEsS

SkYlEsS

Elite
Toujours pas ... :x

J'y arriverai jamais :cry:
 
1er
OP
SkYlEsS

SkYlEsS

Elite
Pourquoi, à certains tests de code il me note "Array" à la place du chiffre ? :?
 

guslinux

Gamerz'ien
SkYlEsS a dit:
Pourquoi, à certains tests de code il me note "Array" à la place du chiffre ? :?
parce que tu as un tableau dans ta variable, fais un print_r($var) pour voir le contenu.
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut