Je travaille sur un site web qui contient une partie espace membre, et je souhaite mettre en place un système de photo de profil.
j'ai créé un formulaire en html permettant de choisir un fichier (ici, une photo) et ce fichier sera traité par une page php qui enregistrera la photo dans un fichier sur le serveur (en local pour l'instant), et qui enregistrera le nom de la photo dans une table 'membre' pour pouvoir associer le compte à la photo sélectionnée.
Voila le formulaire :
<form method="POST" action="Controleur/modifier-profil-photo.php" enctype="multipart/form-data">
<?php include("Controleur/photo-profil.php"); ?>
<p class="modifier-profil-bloc-droite-image-label">Modifier votre photo de profil : </p>
<input id="photo-profil" class="modifier-profil-bloc-droite-image-input" type="file" name="photo-profil"/>
<input class="modifier-profil-submit2" type="submit" value="Upload"/>
</form>
Et voila la page qui traite les données du formulaire :
<?php
//Propriétés du fichier téléchargé
$name = $_FILES['photo-profil']['name'];
$type = $_FILES['photo-profil']['type'];
$size = $_FILES['photo-profil']['size'];
$temp = $_FILES['photo-profil']['tmp_name'];
$error = $_FILES['photo-profil']['error'];
if ($error > 0)
{
//Une erreur s'est produite au niveau de la photo, la photo ne convient pas.
header('Location: ../index.php?page=modifier-profil&erreur=error');
}
elseif (substr($type, 0, 5) != 'image')
{
//On vérifie qu'il s'agit bien d'une image
header('Location: ../index.php?page=modifier-profil&erreur=image');
}
elseif ($size > 5000000)
{
//On vérifie le poids de l'image
header('Location: ../index.php?page=modifier-profil&erreur=poids');
}
else
{
//Il n'y a pas d'erreurs au niveau de la photo, on peut envoyer la photo dans le fichier Images/photo-profil/
move_uploaded_file($temp, "../Images/photos-profil/" . $name);
//On enregistre le chemin vers la photo dans la table membre
//On se connecte à la base de données
include("../Modele/connexion-bdd.php");
//On effectue la requête
$req = $bdd->prepare('UPDATE membre SET photo = ? WHERE id_membre == ?');
$req->execute(array($name, $_SESSION['id_membre']));
//Redirection vers la page de modification de profil
header('Location: ../index.php?page=modifier-profil&modif=photo');
}
?>
La partie formulaire est bonne, l'enregistrement de la photo dans un fichier fonctionne bien, mais un seul problème : la requête SQL. Apparemment les deux petites lignes de PHP/SQL sont mal interprétées/mal écrites.J'ai relu plein de fois mon code, je comprends pas pourquoi le nom de la photo uploadée ne veut pas aller dans ma base de données :/
Peut être que l'erreur vient d'autre part
Quelqu'un pour m'aider, plz ?