Bonjour à tous, je suis entrain de créer un site web en php et je suis débutant, donc j'ai créer un formulaire où les gens doivent s'inscrire ils doivent mettre leur photo mais c'est pas obligatoire donc j'aimerai que si la personne ne met pas de fichier c'est à dire ne veut pas mettre de photo qu'on puissent recuperer directement l'avatar photo par defaut qui est dans un dossier du site et le mettre dans la base de donnée.
Si vous pouvez m'aider à le faire
Sur la ligne 60 j'ai quelque chose mais ça marche pas
// Vérifie si le fichier a été uploadé sans erreur.
if(isset($_FILES["photo"]) && $_FILES["photo"]["error"] == 0){
$allowed = array("jpg" => "image/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png");
$filename = $_FILES["photo"]["name"];
$filetype = $_FILES["photo"]["type"];
$filesize = $_FILES["photo"]["size"];
// Vérifie l'extension du fichier
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if(!array_key_exists($ext, $allowed)) die("Erreur : Veuillez sélectionner un format de fichier valide.");
// Vérifie la taille du fichier - 8Mo maximum
$maxsize = 8 * 1024 * 1024;
if($filesize > $maxsize) die("Error: La taille du fichier est supérieure à la limite autorisée.");
// Vérifie le type MIME du fichier
if(in_array($filetype, $allowed)){
// Vérifie si le fichier existe avant de le télécharger.
if(file_exists("uploads/" . $_FILES["photo"]["name"])){
echo $_FILES["photo"]["name"] . " existe déjà.";
} else{
move_uploaded_file($_FILES["photo"]["tmp_name"], "uploads/" . $_FILES["photo"]["name"]);
echo "Votre fichier a été téléchargé avec succès.";
}
} else{
echo "Error: Il y a eu un problème de téléchargement de votre fichier. Veuillez réessayer.";
}
} else {
"uploads/avatar.png" . $_FILES["photo"]["name"];
}
Merci de colorer votre code à l'aide du bouton Code
Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: php;">Votre code ici</pre>.
Merci de modifier votre message d'origine en fonction.
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Ta ligne 60 ne sert à rien telle qu'elle est et pourquoi tu réutilises $_FILES['photo']['name'] si justement tu n'as pas d'image ?!?
Où est l'INSERT ? On ne voit pas où tu l'insères, d'autant que tu ne passes pas par une variable.
C'est simple en gros : si tu passes dans le if tu affectes à une variable, disons $avatar la valeur de 'uploads/' . $_FILES['photo']['name'] sinon (dans la partie else) tu affectes à cette même variable le chemin de cette image par défaut. Ensuite, lors de ton INSERT tu bindes cette variable $avatar pour la colonne de l'avatar. (encore que l'on pourrait éventuellement jouer avec la valeur par défaut de la colonne - bien que je ne le recommande pas et c'est plus "difficile" à gérer avec la requête préparée)
Variante qui me paraît meilleure : tu ne mets pas de else, initialises explicitement cette variable à NULL (la colonne en question doit donc être nullable) et tu le gères à l'affichage (si l'avatar de l'utilisateur est NULL alors tu prends ton avatar par défaut sinon le sien)
Le code pourrait être amélioré :
mélange die/echo, die n'est pas terrible pour gérer les erreurs (tu stoppes net le script et la page générée risque d'être partielle - pas de footer notamment - et un simple echo va tout de même continuer le script donc ça risque de donner des choses un peu aberrantes
tu ne prends pas en compte un échec lié à l'upload, tu le gères comme s'il n'y avait pas eu de fichier uploadé. Sauf si c'est vraiment volontaire, les deux cas sont très différents et ça risque d'être potentiellement mal compris par un utilisateur
je te comprend pas trop tu peux me détailler encore plus s'il vous plait
- Edité par FatouTouré 18 mai 2021 à 13:30:15
mettre un avatar photo en valeur par defaut
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Pas d'aide concernant le code par MP, le forum est là pour ça :)
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli