Avatar par defaut
- Accueil
- Forum
- Programmation
- PHP
- Avatar par defaut
Ce topic est suivi par : TheOldNoob, Nobodief, Kam3leoN, Cirilla33
natarss Le 5 août 2016 à 05:49 (Édité le 25 janvier 2019 à 17:52)
j'ai suivie le tuto de primFx : Ajouter une photo de profil / avatar (celui-ci, https://www.youtube.com/watch?v=lDZLZAdr1is),
je voudrais rajouter une photo de profil/avatar par default (comme sur Facebook).
Comment faire ?
J'ai regardé sur internet, mais rien de qui marche.
Merci d'avance.
Bonne journée.
natarss Le 5 août 2016 à 05:54 (Édité le 1 janvier 1970 à 01:00)
if(isset($_SESSION['id']))
{
$requser = $bdd->prepare("SELECT * FROM users WHERE id = ?");
$requser->execute(array($_SESSION['id']));
$user = $requser->fetch();
$imagedefault = "images/logo.png";
if(isset($_FILES['avatar']) AND !empty($_FILES['avatar']['name']))
{
$tailleMax = 11111111111111111111111111111104; //ne faite pas attention à cette ligne
$extensionValides = array('jpg','jpeg', 'gif', 'png');
if($_FILES['avatar']['size'] <= $tailleMax)
{
$extensionUpload = strtolower(substr(strrchr($_FILES['avatar']['name'], '.'), 1));
if(in_array($extensionUpload, $extensionValides))
{
$chemin = "menbre/avatar/".$_SESSION['id'].".".$extensionUpload;
$resultat = move_uploaded_file($_FILES['avatar']['tmp_name'], $chemin);
if($resultat)
{
$updateavatar = $bdd->prepare('UPDATE users SET avatar = :avatar WHERE id = :id');
$updateavatar->execute(array(
'avatar' => $_SESSION['id'].".".$extensionUpload,
'id' => $_SESSION['id']
));
header('Location: profil.php?id='.$_SESSION['id']);
}
else{
$msg = "Il y a eu une erreure durant l'importation du fichier";
}
}
else
{
$msg = "Votre profile doit etre au format jpg jpeg gif png";
}
}
else
{
$msg = "votre profle ne doit pas depasse 2Mo";
}
}
TheFlameflo Le 5 août 2016 à 06:04 (Édité le 1 janvier 1970 à 01:00)
Premièrement, je te conseille de ne pas ajouter un avatar par défaut ou avec un chemin (j'ai pas suivi le tuto, désolé) directement dans la base de données.
Pourquoi ?
Car, si tu changes l'avatar par défaut, il faudra changer tous ceux qui ne sont pas définis et ça prend de la place en trop pour rien.
Je te conseille donc de faire le test suivant lorsque tu tentes d'afficher l'avatar d'un membre : si l'avatar existe à quelque part, tu l'affiches, s'il n'existe pas, tu affiches l'avatar par défaut.
Si tu as d'autres questions où que je n'ai pas été clair, n'hésite pas à poser plus de questions ! 😀
Bonne chance pour la suite ! 😀
TheOldNoob Le 5 août 2016 à 08:41 (Édité le 5 août 2016 à 08:43)
bon, déjà, c'est un code pour édité une photo et non ajouter une photo, donc dans le principe celui qui va utilisé se code n'aura pas besoin d'avoir un avatar par défaut.
Ensuite, généralement on utilise l'avatar par défaut lors de la création d'un profil, car si l'utilisateur n'a pas de photo a mettre ou si ça le soul d'aller chercher une photo dans son pc, alors on va lui dire de prendre la photo par défaut.
Je te met le code que j'utilise pour importer une image, avec la possibilité d'y mettre un avatar par défaut.
TRES IMPORTANT, se code ne fonctionne que si dans ton répertoire img/ tu a une image qui s'appel link-default.jpg
ATTENTION, $folder, défini le chemin relatif du dossier ou se trouve MES images, donc a toi de changer en fonction du nom et de l'emplacement de TON fichier image 😉
$dirlink = "link-default.jpg";
$folder = 'img/'; // création de la variable indiquant le chemin du répertoire destination pour les fichiers uploadés (important : le slash à la fin de la chaine de caractère).
$maxSize = 1000000 * 5; // 5Mo
if(!empty($_FILES) && isset($_FILES['picture'])) {
if ($_FILES['picture']['error'] == UPLOAD_ERR_OK AND $_FILES['picture']['size'] <= $maxSize) {
$nomFichier = $_FILES['picture']['name']; // récupère le nom de mon fichier au sein de la superglobale $_FILES (tableau multi-dimentionnel)
$tmpFichier = $_FILES['picture']['tmp_name']; // Stockage temporaire du fichier au sein de la superglobale $_FILES (tableau multi-dimentionnel)
$file = new finfo(); // Classe FileInfo
$mimeType = $file->file($_FILES['picture']['tmp_name'], FILEINFO_MIME_TYPE); // Retourne le VRAI mimeType
$mimTypeOK = array('image/jpeg', 'image/jpg', 'image/png', 'image/gif'); // Attention, image n'indique pas le répertoire, mais le typemime !
if (in_array($mimeType, $mimTypeOK)) { // in_array() permet de tester si la valeur de $mimeType est contenue dans le tableau $mimTypeOK
$newFileName = explode('.', $nomFichier);
$fileExtension = end($newFileName); // Récupère la dernière entrée du tableau (créé avec explode) soit l'extension du fichier
// nom du fichier link au format : crea-id-timestamp.jpg
$finalFileName = 'crea-'.time().'.'.$fileExtension; // Le nom du fichier sera donc crea-id-timestamp.jpg (time() retourne un timestamp à la seconde)
if(move_uploaded_file($tmpFichier, $folder.$finalFileName)) { // move_uploaded_file() retourne un booleen (true si le fichier a été envoyé et false si il y a une erreur)
// Ici je suis sûr que mon image est au bon endroit
$dirlink = $finalFileName;
}
else {
// Permet d'assigner un link par défaut
$dirlink = "link-default.jpg";
}
} // if (in_array($mimeType, $mimTypeOK))
else {
$error[] = 'Ce type de fichier est interdit, mime type incorrect !';
}
} // end if ($_FILES['picture']['error'] == UPLOAD_ERR_OK AND $_FILES['picture']['size'] <= $maxSize)
else {
$error[] = 'Merci de choisir un fichier image (uniquement au format jpg) à uploader et ne dépassant pas 5Mo !';
}
} // end if (!empty($_FILES) AND isset($_FILES['picture'])
else {
// Permet d'assigner l link par défaut si la crea n'en a aucun
$dirlink = "link-default.jpg";
}
Dwardower Le 5 août 2016 à 09:56 (Édité le 1 janvier 1970 à 01:00)
natarss Le 5 août 2016 à 10:17 (Édité le 1 janvier 1970 à 01:00)
Merci à vous deux pour vos réponse.
J'ai utiliser le code de TheHoldNoob, il marche très bien.
Le seul problème est que je n'arrive pas à afficher la photo que l'utilisateur à éditer ainsi que celle par Default.
Comment faire ?
Merci d'avance.
Bonne journée.
:)
natarss Le 5 août 2016 à 10:49 (Édité le 1 janvier 1970 à 01:00)
Merci de ta réponse.
Comment tu ferais ?
TheOldNoob Le 5 août 2016 à 10:54 (Édité le 1 janvier 1970 à 01:00)
Si oui,
Est-ce que dans ton code pour afficher la photo tu va la chercher dans le bon repertoire?
natarss Le 5 août 2016 à 10:58 (Édité le 1 janvier 1970 à 01:00)
TheOldNoob Le 5 août 2016 à 11:23 (Édité le 1 janvier 1970 à 01:00)
natarss Le 5 août 2016 à 11:44 (Édité le 1 janvier 1970 à 01:00)
Upload c'est ok!
Dwardower Le 6 août 2016 à 09:09 (Édité le 6 août 2016 à 09:19)
`avatar` varchar(255) NOT NULL DEFAULT 'default.jpg',
Si tu veux supprimer l'ancienne image de profil lors de l'upload d'une nouvelle image de profil, n'oublie pas de mettre un
if($truc['avatar'] != 'default.jpg')
La valeur par défaut signifie que si sql voit que tu n'as pas définit 'avatar' dans ton insert, alors il va remplacer la valeur NULL par la valeur par défaut (Null = rien ou cas ou 😉)
Image de la manip dans phpmyadmin
https://yip-social.fr/Capture.PNG
natarss Le 8 août 2016 à 08:45 (Édité le 1 janvier 1970 à 01:00)
Merci beaucoup!
Nobodief Le 8 août 2016 à 13:17 (Édité le 8 août 2016 à 13:20)
Ensuite lorsque tu développe ta fonction d'avatar si jamais il y à un soucis sévère tu fait une requête d'update pour rétablir l'avatar par défaut, si jamais des modifications ont eu lieu où que le chemin présente des soucis.
Jimmy Le 9 août 2016 à 23:52 (Édité le 9 août 2016 à 23:57)
if($photodeprofils = "0.png"){
$insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse, photodeprofils) VALUES(?, ?, ?, ?) ");
$insertmbr->execute(array($pseudo, $mail, $mdp, $photodeprofils));
}
Et là dans le dossier où tu range les photo de profil tu met ton image par défaut et tu la nomme 0.png ou un autre nom ;-) TheOldNoob Le 10 août 2016 à 11:23 (Édité le 1 janvier 1970 à 01:00)
Kam3leoN Le 27 décembre 2018 à 22:38 (Édité le 27 décembre 2018 à 22:40)
désolé pour le déterrage mais comme je reste bloqué à ce stade autant que cela serve à d'autres personne dans la même galère 😀
J'utilise le code de TheOldNoob et il fonctionne très très bien le seul problème est que je n'arrive pas à insérer l'avatar créer dans ma bdd une fois celui-ci générer
Quelqu'un pourrait-il me venir en aide ?
// UPLOAD AVATAR
$dirlink = "anonymous.png";
$folder = 'assets/avatars/'; // création de la variable indiquant le chemin du répertoire destination pour les fichiers uploadés (important : le slash à la fin de la chaine de caractère).
$maxSize = 1000000 * 2; // 5Mo
if(!empty($_FILES) && isset($_FILES['avatar'])) {
if ($_FILES['avatar']['error'] == UPLOAD_ERR_OK AND $_FILES['avatar']['size'] <= $maxSize) {
$nomFichier = $_FILES['avatar']['name']; // récupère le nom de mon fichier au sein de la superglobale $_FILES (tableau multi-dimentionnel)
$tmpFichier = $_FILES['avatar']['tmp_name']; // Stockage temporaire du fichier au sein de la superglobale $_FILES (tableau multi-dimentionnel)
$file = new finfo(); // Classe FileInfo
$mimeType = $file->file($_FILES['avatar']['tmp_name'], FILEINFO_MIME_TYPE); // Retourne le VRAI mimeType
$mimTypeOK = array('image/jpeg','image/jpg','image/png','image/gif'); // Attention, image n'indique pas le répertoire, mais le typemime !
if (in_array($mimeType, $mimTypeOK)) { // in_array() permet de tester si la valeur de $mimeType est contenue dans le tableau $mimTypeOK
$newFileName = explode('.', $nomFichier);
$fileExtension = end($newFileName); // Récupère la dernière entrée du tableau (créé avec explode) soit l'extension du fichier
// nom du fichier link au format : crea-id-timestamp.jpg
$finalFileName = 'crea-'.time().'.'.$fileExtension; // Le nom du fichier sera donc crea-id-timestamp.jpg (time() retourne un timestamp à la seconde)
if(move_uploaded_file($tmpFichier, $folder.$finalFileName)) { // move_uploaded_file() retourne un booleen (true si le fichier a été envoyé et false si il y a une erreur)
// Ici je suis sûr que mon image est au bon endroit
$dirlink = $finalFileName;
}
else {
// Permet d'assigner un link par défaut
$dirlink = "anonymous.png";
}
} // if (in_array($mimeType, $mimTypeOK))
else {
$error[] = 'Ce type de fichier est interdit, mime type incorrect !';
}
} // end if ($_FILES['avatar']['error'] == UPLOAD_ERR_OK AND $_FILES['avatar']['size'] <= $maxSize)
else {
$error[] = 'Merci de choisir un fichier image (uniquement au format jpg) à uploader et ne dépassant pas 5Mo !';
}
} // end if (!empty($_FILES) AND isset($_FILES['avatar'])
else {
// Permet d'assigner l link par défaut si la crea n'en a aucun
$dirlink = "anonymous.png";
}
// FIN UPLOAD AVATAR