Modifier ou ajouter une photo via un formulaire

Mammouth du PHP | 643 Messages

04 sept. 2017, 20:49

Salut à tous
Voilà j'ai mon code qui marche bien sauf pour un champ le "champ photo".
L'utilisateur peut modifier son post en ajoutant une photo ou en la modifiant mais rien ne se passe.
Je ne vois pas trop l'erreur dans mon code.
Pour les autres champs c'est ok

Mon traitement PHP:

<?php
$erreurs = array();

if (isset($_GET['id_annonce'])) {
$idAnn = $_GET['id_annonce'];
} elseif (isset($_POST['id_annonce'])) {
$idAnn = $_POST['id_annonce'];
} else {
$idAnn = 0;
}


if(!empty($_POST)) {//soumission du formulaire
// Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
// Upload des fichier
if(empty($namefile)) {

if(!empty($_FILES)) {

if(!empty($_FILES['photo']['tmp_name'])) {

$path = 'img-big-format/';
$namefile = filename($_FILES['photo']['name'], $_POST['titre']);

$return = upload($_FILES['photo'], $namefile, $path, array('image/jpg', 'image/jpeg'));
$message = $return[0];
$erreur = $return[1];

if($erreur <= 1) {
imageparfaite(600, 400, $path.$namefile, $path.$namefile, 1);
imageparfaite(335, 225, $path.$namefile, $path.'miniature/'.$namefile, 1);
} else {
$erreurs['image'] = $message;
}


}
}

}

//le tableau d'erreurs est vide alors on insère les données
if( empty( $erreurs) ){

$departement = substr($_POST['postcode'], 0, 2); regionIdByDepartement($departement);


if (!empty($namefile)) {
$modif = $bdd->prepare("UPDATE loisirs SET id_region = :id_region, id_departements = :id_departements, id_type_loisirs = :id_type_loisirs, photo = :photo, titre = :titre, date_debut_sortie = :date_debut_sortie, date_fin_sortie = :date_fin_sortie, description = :description, phone = :phone, email = :email, website = :website, street = :street, postcode = :postcode, city = :city, price = :price WHERE id_loisirs =".$idAnn);

//conversion de la date debut du format fr(jj:mm:aaaa hh:mm:ss) en format us(aaaa-mm-jj hh:mm:ss)'];
$date = DateTime::createFromFormat('d/m/Y', $_POST['date_debut_sortie']);
$date_debut = $date->format('Y-m-d H:i:s');
$date = DateTime::createFromFormat('d/m/Y', $_POST['date_fin_sortie']);
$date_fin = $date->format('Y-m-d H:i:s');


$modif->execute(array(
'id_region'=>regionIdByDepartement($departement),
'id_departements'=> $departement,
'id_type_loisirs' => $_POST['type_loisirs'],
'photo' =>$namefile,
'titre' => $_POST['titre'],
'date_debut_sortie'=>$date_debut,
'date_fin_sortie'=>$date_fin,
'description' => $_POST['description'],
'phone' => $_POST['phone'],
'email' => $_POST['email'],
'website' => $_POST['website'],
'street' => $_POST['street'],
'postcode' => $_POST['postcode'],
'city' => $_POST['city'],
'price' => $_POST['price']
));

unset($_POST);

//*
}

echo '<div class="container"><div class="col-md-6 col-md-offset-2 col-sm-8 col-sm-offset-2">
<div class="alert alert-success okay" role="alert" style="margin-top:80px"> <i class="fa fa-smile-o"></i>
Votre annonce à bien était modifiée</div></div></div>';

}else{//le tableau ne contient
echo '<div class="container"><div class="col-md-6 col-md-offset-2 col-sm-8 col-sm-offset-2">
<div class="alert alert-danger okay" role="alert">Renseignez les champs vides</div></div></div>';
}

}//fin de la soumission du formulaire



$reponse = $bdd->query('SELECT * FROM loisirs WHERE id_loisirs = ' .$idAnn);
$donnees = $reponse->fetch(PDO::FETCH_ASSOC);

//conversion de la date debut du format fr(jj:mm:aaaa hh:mm:ss) en format us(aaaa-mm-jj hh:mm:ss)'];
$date = DateTime::createFromFormat('Y-m-d H:i:s', $donnees['date_debut_sortie']);
$date_debut = $date->format('d/m/Y');
$date = DateTime::createFromFormat('Y-m-d H:i:s', $donnees['date_fin_sortie']);
$date_fin = $date->format('d/m/Y');

?>

Champ photo:
  <label>Photo</label>
      <?php 
      echo '<img src="img-big-format/miniature/'.$donnees['photo'].'" alt="'.$donnees['titre'].'" class="img-responsive" /><br />
      <em>Si vous souhaitez remplacer la photo, choisissez en une nouvelle.</em>';
	
	  ?>
      <input id="photo" name="photo" type="file" accept="image/jpeg" />

Eléphant du PHP | 337 Messages

05 sept. 2017, 08:25

As-tu pensé à ajouter enctype="multipart/form-data" dans ta balise <form> ?