Problème affichage visiteur

Eléphant du PHP | 129 Messages

17 juin 2009, 11:46

Bonjour tous
Sur ma page d'index j'affiche les personnes connecter au site avec leur avatars, problème et que un visiteur qui arrive sur la page, a le droit lui aussi à une petite image, l'image est vite y a rien dessus vu que le code donne ceci :
<img src="avatars/'.$data_count_membres['membre_avatar'].'" width="50" height="50" />

J'arrive pas à faire qu'il n'est pas d'image pour le visiteur, j'ai fait un if avec un else mais rien à faire !
Merci de votre aide.
<?php
//Création des variables
$ip = ip2long($_SERVER['REMOTE_ADDR']);
if (!isset($_SESSION['id'])) $id=0;
else $id = intval($_SESSION['id']);

//Requête
mysql_query('INSERT INTO forum_whosonline VALUES('.$id.', '.time().','.$ip.')
ON DUPLICATE KEY UPDATE
online_time = '.time().' , online_id = '.$id.'');

$time_max = time() - (60 * 5);
mysql_query('DELETE FROM forum_whosonline WHERE online_time < '.$time_max);

//Décompte des membres
$time_max = time() - (60 * 5);
$requete_count_membres = mysql_query('SELECT membre_id, membre_pseudo, membre_avatar 
FROM forum_whosonline
LEFT JOIN membres ON membre_id = online_id
WHERE online_time > '.$time_max);
$count_membres = mysql_result(mysql_query('
SELECT COUNT(*) AS nbr_membres FROM forum_whosonline WHERE online_id <> 0 && online_time > '.$time_max.''),0);

$count_online = $count_visiteurs + $count_membres;
while ($data_count_membres = mysql_fetch_assoc($requete_count_membres))
{
if ($count_membres)
{
$texte_a_afficher .= '
- <a href="index.php?nav=compte&v=voirprofil&m='.$data_count_membres['membre_id'].'&action=consulter"><img src="avatars/'.$data_count_membres['membre_avatar'].'" width="50" height="50"/>
'.stripslashes(htmlspecialchars($data_count_membres['membre_pseudo'])).'</a><br> ';
}
else
$count_visiteurs .= '';
}
$texte_a_afficher = substr($texte_a_afficher, 0, -1);
echo $texte_a_afficher.'<br>';

Eléphant du PHP | 65 Messages

17 juin 2009, 14:59

Je ne suis pas sûr de bien comprendre ce que tu as codé.
Peut-être qu'en essayant de m'expliquer,
vas-tu découvrir ton erreur ?
Voilà déjà quelques questions que je me pose :
mysql_query('INSERT INTO forum_whosonline VALUES('.$id.', '.time().','.$ip.')
ON DUPLICATE KEY UPDATE
online_time = '.time().' , online_id = '.$id.'');
Dans ta table forum_whoisonline, tu enregistres tous les visiteurs (membres ou non) en évitant de les dupliquer.
L'id=0 est réservé aux visiteurs. Tu ne sais finalement pas combien de visiteurs sont connectés ?
Pour les membres, l'id est égal à l'id de la table membres ?
$requete_count_membres = mysql_query('SELECT membre_id, membre_pseudo, membre_avatar 
FROM forum_whosonline
LEFT JOIN membres ON membre_id = online_id
WHERE online_time > '.$time_max); 
Cette requête permet de récupérer toutes les infos sur les membres connectés, à condition qu'il n'y ait pas de membre avec un id=0 (le visiteur serait alors considéré comme membre) ?
$count_membres = mysql_result(mysql_query('
SELECT COUNT(*) AS nbr_membres FROM forum_whosonline WHERE online_id <> 0 && online_time > '.$time_max.''),0);
Cette requête permet de compter les membres connectés.
$count_online = $count_visiteurs + $count_membres; 
Tu calcules combien de personnes sont en ligne. Mais $count_visiteurs = combien ?
while ($data_count_membres = mysql_fetch_assoc($requete_count_membres)) 
Tu parcours la liste des membres connectés pour afficher leurs infos (avatar).
if ($count_membres)
{préparation texte à afficher}
else $count_visiteurs .= '';
A quoi sert le if ($count_membres) ? Si il vaut zéro, tu ne devrais pas rentrer dans ta boucle while ?
A quoi sert de concaténer $count_visiteurs à rien ?

Voilà,
peut-être que mon incompréhension t'aidera à comprendre ton problème.

Fred

Eléphant du PHP | 129 Messages

17 juin 2009, 15:11

Merci Micetf, en effet je vais revoir tous sa....