[RESOLU] Afficher les avatars des membres inscrits

Eléphant du PHP | 386 Messages

09 août 2012, 19:35

Bonjour,

Dans mon cas, j'ai un script d'affichage de membres inscrits.
Les avatars sont renommés par l'id des membres.

Je me suis inscrit en tant qu'Administrateur et donc je n'ai pas encore d'avatar, et donc selon mon script, il devrait affiché un avatar par défaut (homme ou femme selon le sexe du membre)
Le problème c'est que lavatar s'affiche mais c'est l'avatar femme alors que je suis un homme :lol:

Femme : Image
Homme : Image

Dans ma base de donnée, le champ "sexe" est un smallint avec 2 checkbox qui ont pour value = 1 et 2 (1 étant l'homme, et 2 la femme)

$filename va déterminé si l'avatar existe
$adresse_image est comme son nom l'indique l'image de l'avatar par défaut

Voici mon script :
				<div class="bloc_04">
					<h1>Membres inscrits</h1>
					<?php
					$sql = connect_sql();
					$query = mysql_query('SELECT id, nom, prenom, sexe FROM wa_communaute');
					$result = mysql_fetch_array($query);
					$filename = '../images/upload/'.$id.'.png';
					$adresse_image = $sexe ==1 ? '../images/upload/homme.png' : '../images/upload/femme.png';
					if (file_exists($filename)) {
					echo '
						<table class="list-membres">
							<tr>
								<td><a href=""><img src="../images/upload/'.$id.'.png" alt="" /></a></td>
							<tr>
						</table>';
					} else {
                                        echo '
						<table class="list-membres">
							<tr>
								<td><a href=""><img src="'.$adresse_image.'" alt="" /></a></td>
							<tr>
						</table>';
                                        }
					?>
				</div>
Voila, je pense que j'ai donné assez d'infos pour vous permettre de m'aider.

Merci d'avance

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

09 août 2012, 20:43

Tes variables $id et $sexe ne sont pas définies. Ton code fonctionnera sans doute mieux avec $result['id'] ou $result['sexe'] pour récupérer les données de ta requête :)

Ps : active les warnings quand tu développes, ça te permet de repérer ce genre d'erreur puisque tu aurais un message "variable non définie" :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 386 Messages

09 août 2012, 21:42

Ça marche oui et non.
Déjà le script repère si je suis un homme ou une femme ^^
J'ai modifié un peu le script et ça affiche bien un avatar, mais c'est l'avatar par défaut qui est affiché.

Mon id est "1" et j'ai une image 1.png sur le serveur, je ne comprend pas pourquoi l'avatar (id) du membre ne veut pas s'afficher :(

Voici le script :
					<?php
					$sql = connect_sql();
					$query = mysql_query('SELECT id, nom, prenom, sexe FROM wa_communaute');
					if ($query) {
						while ($result = mysql_fetch_object($query)) {
							$prenom = $result->prenom;
							$nom = $result->nom;
							$id = $result->id;
							$sexe = $result->sexe;
							$adresse_image = $sexe ==1 ? '../images/upload/homme.png' : '../images/upload/femme.png';
							$filename = '../images/upload/'.$id.'.png';
							if (file_exists($filename)) {
							echo '
					<table class="list-membres">
						<tr>
							<td><a href=""><img src="../images/upload/'.$id.'.png" alt="" /></a></td>
						<tr>
					</table>';
							} else {
							echo '
					<table class="list-membres">
						<tr>
							<td><a href=""><img src="'.$adresse_image.'" alt="" /></a></td>
						<tr>
					</table>';
							}
						}
					}
					mysql_close();
					?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

09 août 2012, 21:56

S'il rentre dans le else, c'est que la condition du if() est fausse. Donc que le fichier $filename n'est pas trouvé.

Est-ce que ton fichier 1.png est bien dans le dossier images/upload/ ? (c'est bien un png et pas un jpg ou un gif ou autre ?)
Si tu affiches $id, est ce qu'il contient bien la valeur 1 ? (et pas 01 ou je ne sais quoi...)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 386 Messages

09 août 2012, 22:02

J'ai résolu l'erreur
Explication :

Il fallait enlever les "../" des chemins de l'url
$adresse_image = $sexe ==1 ? 'images/upload/homme.png' : '../images/upload/femme.png';
$filename = 'images/upload/'.$id.'.png';