Page 1 sur 1
Affichage d'un avatar
Posté : 24 mai 2015, 14:22
par Eloïse
Bonjour,
Sur phpmyadmin j'ai créée une table "membre" dans laquelle se trouve la colonne "avatar" en varchar 255.
Cela fonctionne bien, je peux voir le lien de mon image uploader mais impossible de l'afficher.
Voici mon code pour l'upload :
Code : Tout sélectionner
$avatarBdd = '';
if(!empty($_FILES['avatar']['name'])) // si une image est uplaodé
{
// affichageTableau($_FILES['avatar']);
$avatarPhoto = $_FILES['avatar']['name'];
// echo 'nomPhoto: ' . $nomPhoto . '<br />' ;
$avatarBdd = RACINE_SITE . "img/avatar/$nomPhoto";
// echo 'photoBdd: ' . $photoBdd . '<br />';
$avatarDossier = $_SERVER['DOCUMENT_ROOT'] . RACINE_SITE . "img/avatar/$avatarPhoto";
// echo 'photoDossier: ' . $photoDossier. '<br />';
copy($_FILES['avatar']['tmp_name'], $avatarDossier);
}
$pdo->query("UPDATE membre SET prenom='$_POST[prenom]', nom='$_POST[nom]', email='$_POST[email]', avatar='$avatarBdd' WHERE idMembre ='" . $_SESSION['membre']['idMembre'] . "'");
Et voici mon code pour l'affichage sur une autre page :
Code : Tout sélectionner
<?php if(empty($_SESSION['membre']['avatar'])) // avatar vide
{
echo '<img src="img/avatar/avatar.jpg" width="300" /><br />';
}
else // avatar présent
{
echo '<img src="' . $_SESSION['membre']['avatar'] . '" width="300" />';
}?>
Le seul truc qui s'affiche c'est echo '<img src="img/avatar/avatar.jpg" width="300" /><br />';
comme si mon avatar était vide, or ce n'est pas le cas car il se trouve bien dans le dossier avatar et dans la base de donnée.
Quelqu'un aurait une idée pour m'aider?
Merci
Re: Affichage d'un avatar
Posté : 24 mai 2015, 15:04
par Ryle
Bonjour,
Effectivement, les premières choses à vérifier sont que le fichier est bien présent sur le serveur et que l'url est bien enregistrée dans ta base de données.
Si ton code php affiche systématiquement l'image par défaut au lieu de celle renseignée en base, c'est que le test " empty($_SESSION['membre']['avatar'] " est toujours vrai. Il faut donc chercher du côté de la session pour savoir pourquoi cette donnée n'est pas renseignée.
Est-ce qu'une fois l'image uploadée tu vas mettre à jour la session ? (la session est-elle bien démarrée pour ce script ?)
Si c'est le cas, vérifie le contenu de la variable utilisé, celui-ci est à priori vide ou null...
Re: Affichage d'un avatar
Posté : 24 mai 2015, 15:31
par Eloïse
Je crois que ça vient de là
Bonjour,
Est-ce qu'une fois l'image uploadée tu vas mettre à jour la session ? (la session est-elle bien démarrée pour ce script ?)
Si c'est le cas, vérifie le contenu de la variable utilisé, celui-ci est à priori vide ou null...
En fait, je ne sais pas comment on met à jour une session, je pensais que comme ma base était mise à jour par l'UPDATE cela suffisait. Pour tu m'éclairer là-dessus?
Re: Affichage d'un avatar
Posté : 24 mai 2015, 17:05
par tof73
dans quelle page veux tu afficher cet avatar ?
avec la session, celle le membre connecté verra son avatar, donc il y a des chances que ce soit plutôt dans la base de donnée qu'il faille récupérer les infos, afin que tout le monde puisse voir cet avatar.
Re: Affichage d'un avatar
Posté : 24 mai 2015, 18:14
par Eloïse
Pour le moment je voudrais l'afficher dans la page profil du membre (donc visible que par lui)
Code : Tout sélectionner
<?php if(empty($_SESSION['membre']['avatar'])) // avatar vide
{
echo '<img src="img/avatar/avatar.jpg" width="300" /><br />';
}
else // avatar présent
{
echo '<img src="' . $_SESSION['membre']['avatar'] . '" width="300" />';
}
?>
<div>
<ul class="list-group">
<li class="list-group-item"><?php echo 'Nom : ' . $_SESSION['membre']['nom']; ?></li>
<li class="list-group-item"><?php echo 'Prenom : ' . $_SESSION['membre']['prenom']; ?></li>
<li class="list-group-item"><?php echo 'Métier : ' . $_SESSION['membre']['metier']; ?></li>
<li class="list-group-item"><?php echo 'Code postal : ' . $_SESSION['membre']['cp']; ?></li>
<li class="list-group-item"><?php if(AdminEstConnecte()) echo 'Vous êtes Admin';
else echo 'Vous êtes Membre'; ?></li>
<li class="list-group-item"><i class="fa fa-envelope"></i> <?php echo 'Email : ' . $_SESSION['membre']['email']; ?></li>
</ul>
</div>
Tout s'affiche bien sauf l'avatar qui me met celui par défaut au lieu de celui téléchargé, c'est pour ça que je ne vois pas d'où vient le problème
Re: Affichage d'un avatar
Posté : 24 mai 2015, 19:44
par Ryle
Ton test et ton affichage sont à priori corrects. Le problème c'est simplement que ta variable $_SESSION['membre']['avatar'] ne contient rien
Lorsque tu fais ton upload de fichier, une fois que celui-ci a été bien enregistré en base et sur le serveur, il suffit simplement de définir ta variable en session
$_SESSION['membre']['avatar'] = $avatarBdd;
(il faut t'assurer que tu as bien fait appel à session_start() au préalable dans ce script sinon tu auras un message d'erreur)
Re: Affichage d'un avatar
Posté : 24 mai 2015, 22:57
par Eloïse
J'ai rajouté le code que tu m'as conseillé à la fin de ma requète, mais ça ne fonctionne pas.
J'ai bien une session_start() donc je ne vois pas de quoi cela provient.
Code : Tout sélectionner
if(isset($_POST['modifier']))
{
if(!empty($_POST['mdp'])) $_POST['mdp'] = md5($_POST['mdp']);
if(!empty($_POST['mdp'])) $mdp = "mdp='$_POST[mdp]',"; else $mdp = '';
$avatarBdd = '';
if(!empty($_FILES['avatar']['name'])) // si une image est uplaodé
{
// affichageTableau($_FILES['avatar']);
$avatarPhoto = $_FILES['avatar']['name'];
// echo 'nomPhoto: ' . $nomPhoto . '<br />' ;
$avatarBdd = RACINE_SITE . "img/avatar/$nomPhoto";
// echo 'photoBdd: ' . $photoBdd . '<br />';
$avatarDossier = $_SERVER['DOCUMENT_ROOT'] . RACINE_SITE . "img/avatar/$avatarPhoto";
// echo 'photoDossier: ' . $photoDossier. '<br />';
copy($_FILES['avatar']['tmp_name'], $avatarDossier);
}
$pdo->query("UPDATE membre SET prenom='$_POST[prenom]', nom='$_POST[nom]', email='$_POST[email]', avatar='$avatarBdd' WHERE idMembre ='" . $_SESSION['membre']['idMembre'] . "'");
// echo '</div>';
$content .= '<div class="validation">Modification enregistree!</div>';
$_SESSION['membre']['avatar'] = $avatarBdd;
}
?>
Re: Affichage d'un avatar
Posté : 25 mai 2015, 01:20
par Eloïse
Sujet résolu, j'ai simplement changé le nom de mes variables et ça fonctionne, le mystère restera.
Code : Tout sélectionner
if(isset($_POST['modifier']))
{
if(!empty($_POST['mdp'])) $_POST['mdp'] = md5($_POST['mdp']);
if(!empty($_POST['mdp'])) $mdp = "mdp='$_POST[mdp]',"; else $mdp = '';
$photoBdd = '';
if(!empty($_FILES['image']['name'])) // si une image est uplaodé
{
// affichageTableau($_FILES['image']);
$nomPhoto = $_FILES['image']['name'];
// echo 'nomPhoto: ' . $nomPhoto . '<br />' ;
$photoBdd = RACINE_SITE . "img/portfolio/$nomPhoto";
// echo 'photoBdd: ' . $photoBdd . '<br />';
$photoDossier = $_SERVER['DOCUMENT_ROOT'] . RACINE_SITE . "img/portfolio/$nomPhoto";
// echo 'photoDossier: ' . $photoDossier. '<br />';
copy($_FILES['image']['tmp_name'], $photoDossier);
}
$pdo->query("UPDATE membre SET prenom='$_POST[prenom]', nom='$_POST[nom]', email='$_POST[email]', metier='$_POST[metier]', image='$photoBdd' WHERE idMembre ='" . $_SESSION['membre']['idMembre'] . "'");
// echo '</div>';
$content .= '<div class="validation">Modification enregistree!</div>';
}