Bonjour,
Voila je rencontre un petit problème avec mon code.
je veux prendre une photo, et l'inserer à ma base de donnée pour la recuperer sur les profils de chacun.
Ca c'est ma page de modiffication de profil: tout fonctionne sauf la photo
<?php
session_start();
try {
$bdd = new PDO('mysql:host=localhost;dbname=dbprotect', 'root', ''); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);;
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage()); }
if(isset($_SESSION['id_user']))
{
$req= $bdd->prepare("SELECT * FROM membres WHERE id_user= ?");
$req ->execute(array($_SESSION['id_user']));
$userinfo= $req->fetch();
/*remplacer login (nom d'utilisateur)*/
if(isset($_POST['new_login']) AND !empty($_POST['new_login']) AND $_POST['new_login'] != $userinfo['login'])
{
$new_login = htmlspecialchars($_POST['new_login']);
$insert_login = $bdd->prepare("UPDATE membres SET login = ? WHERE id_user = ?");
$insert_login->execute(array($new_login, $_SESSION['id_user']));
header('Location: profil.php?id_user='.$_SESSION['id_user']);
}
/*remplacer mail*/
if(isset($_POST['new_mail']) AND !empty($_POST['new_mail']) AND $_POST['new_mail'] != $userinfo['mail'])
{
$new_mail = htmlspecialchars($_POST['new_mail']);
$insert_mail = $bdd->prepare("UPDATE membres SET mail = ? WHERE id_user = ?");
$insert_mail->execute(array($new_mail, $_SESSION['id_user']));
header('Location: profil.php?id_user='.$_SESSION['id_user']);
}
/*remplacer mot de passe si les deux sont égaux */
if(isset($_POST['new_pass']) AND !empty($_POST['new_pass']) AND isset($_POST['new_pass2']) AND !empty($_POST['new_pass2']))
{
$new_pass= sha1($_POST['new_pass']);
$new_pass2= sha1($_POST['new_pass2']);
if($new_pass==$new_pass2)
{
$insert_pass = $bdd->prepare("UPDATE membres SET pass = ? WHERE id_user = ?");
$insert_pass->execute(array($new_pass, $_SESSION['id_user']));
header('Location: profil.php?id=_user'.$_SESSION['id_user']);
}
else
{
$msg = "Vos mots de passe ne correspondent pas!";
}
}
if(isset($_FILES['photo_profil']) AND !empty($_FILES['photo_profil']['name']))
{
/*2 mega octet */
$tailleMax= 2097152;
$extensionsValides= array('jpg', 'jpeg', 'gif', 'png');
if($_FILES['photo_profil']['size']<=$tailleMax)
{
/* strtolower= mettre en minuscule au cas où "JPeg" substr= ignorer premier caractere (ici 1) strrchr=prendre extension fichier avec '.' */
$extensionUpload = strtolower(substr(strrchr($_FILES['photo_profil']['name'], '.'),1));
if(in_array($extensionUpload, $extensionsValides))
{
$chemin= "membres/photo_profil/".$_SESSION['id_user'].".".$extensionUpload;
$resultat = move_uploaded_file($_FILES['photo_profil']['tmp_name'], $chemin);
if($resultat)
{
$updatephoto=$bdd->prepare("UPDATE membres SET photo_profil = ? WHERE id_user = ?");
$updatephoto ->execute(array(
'photo_profil' => $_SESSION['id_user'].".".$extensionUpload ,
'id_user'=> $_SESSION['id_user'] ));
}
else
{
echo'Erreur lors du transport de vote fichier ';
}
}
else
{
echo'Votre photo de profil doit être du format jpg, jpeg, gif, png ';
}
}
else
{
echo'Votre photo de profil ne doit pas dépasser 2Mo';
}
}
if(isset($_POST['new_login']) AND $_POST['new_login'] == $userinfo['login'])
{
header('Location: profil.php?id_user='.$_SESSION['id_user']);
}
?>
<html>
<head>
<title> Profil </title>
<link rel = "stylesheet" type="text/css" href="css/visuel_modif_profil.css" />
</head>
<body>
<form method="POST" action="" enctype="multipart/form-data">
<label> Nom d'utilisateur: </label>
<input type="text" name="new_login" placeholder="Nom utilisateur" value=<?php echo $userinfo['login']?> /> <br /> <br />
<label> Mail: </label>
<input type="text" name="new_mail" placeholder="mail"value=<?php echo $userinfo['mail']?> /> <br /> <br />
<label> Nouveau Mot de passe: </label>
<input type="password" name="new_pass" placeholder="Mot de passe" /> <br /> <br />
<label> Confimation: </label>
<input type="password" name="new_pass2" placeholder="Confirmation du mot de passe"/> <br /> <br />
<input type="submit" value="Mettre à jour"/> <br /> <br />
</form>
<p><a href="profil.php?id_user=".<?php $_SESSION['id_user']?> ."> <strong> Ne rien changer et retourner au profil <a></p>
<?php if(isset($msg)) {echo $msg; } ?> <br />
<a href='deconnexion.php'> Se déconnecter </a>
</div>
</body>
</html>
<?php
}
else
{header("Location:ConnexionDepart.php");
exit;
}
?>
Donc je mets l'image dans mon dossier membres puis photo de profil en lui donnant le nom: "id de la session"."extension"
Ce nom je le mets dans ma base de donnée pour qu'on puisse le retrouver facilement
L'image se mets bien dans mes dosser et a le bon nom, SAUF! qu'ellle n'apparait pas dans ma base de donnée... Qu'est ce qui cloche?
Bonjour,
Bonjour!
Je devrais le placer où? comme pour des $-POST classiques mais du coup sur le $FILES?
D'accord! Je vais cherche comment çamarche, merci!
En fait dans le code de base ils etaient nommé, mais comme je n'arrivais pas à les rentrer je les ai remplacé par "?" dans la requete pour voir si ca changait quelque chose, j'ai oublie de remodifier après. Ca ne change rien au resultat.
$updatephoto=$bdd->prepare("UPDATE membres SET photo_profil = :photo_profil WHERE id_user = :id_user");
$updatephoto ->execute(array(
'photo_profil' => $_SESSION['id_user'].".".$extensionUpload ,
'id_user'=> $_SESSION['id_user'] ));
Bonsoir.
Il n'y a aucun input dans ton formulaire correspondant à ton upload de fichier.
Autre chose, ton lien pour la page profil.php, tu devrais le corriger au niveau PHP.