Page 1 sur 1

Modifier une annonce avec la fonction Update

Posté : 12 janv. 2022, 21:10
par max303
Bonjour, je sollicite votre aide pour essayer de modifier une annonce donnée. mes tables étant liées de la façon suivante:
https://imgur.com/a/i2au2Zx

Le problème c'est qu'en cliquant 'modifier' sur n'importe quelle annonce, je n'arrive pas à récupérer l'id de l'annonce qui a été cliquée, les values dans le formulaires sont donc vides. De plus, l'url n'affiche pas l'id de l'annonce lorsque le bouton modifier est cliqué.
Encore pour les images le Update est ambigu, j'ai l'erreur suivante: Undefined Variable id_annonce.
Est-ce que l'erreur est dans la façon dont j'ai écrit le code?

Code : Tout sélectionner

if(isset($_SESSION['id'])) { $id_membre= $_SESSION['id']; $idannonce= !empty($_GET['id']); //id de la table annonce $reqannonce = $bdd->prepare(" SELECT * FROM annonces WHERE id= ?"); $reqannonce->execute(array($idannonce)); $annonceinfo = $reqannonce->fetch(); $idannonce = $annonceinfo['id'] ; var_dump($annonceinfo); var_dump($idannonce); $reqimage = $bdd->prepare(" SELECT * FROM images_annonces WHERE id_annonce= ?"); $reqimage->execute(array($idannonce)); $imageinfo = $reqannonce->fetch(PDO::FETCH_GROUP); //Annonce if(!empty($_POST['newcategorie']) AND !empty($_POST['newvilles']) AND !empty($_POST['newtitre']) AND !empty($_POST['newdescription']) AND !empty($_POST['newprix'])){ $newcategorie = trim($_POST['newcategorie']); $newville = trim($_POST['newvilles']); $newtitre=trim($_POST['newtitre']); $newdescription=trim($_POST['newdescription']); $newprix=intval($_POST['newprix']); $update = $bdd->prepare("UPDATE annonces SET id_categorie = :id_categorie, id_ville = :id_ville, titre = :titre, description = :description WHERE id = :id"); $update->execute(array( ':id_categorie' => $newcategorie, ':id_ville' => $newville, ':titre' => $newtitre, ':description' => $newdescription, ':prix' => $newprix, ':id' => $id)); header('Location: profilannonce.php?id='.$id_membre.''); } //Les images if(!empty($_FILES['newimg1']) AND !empty($_FILES['newimg2']) AND !empty($_FILES['newimg3']) AND !empty($_FILES['newimg4']) AND !empty($_FILES['newimg5'])){ $location= "pictures/"; $newimg1 = ($_FILES['newimg1']); $newimg2 = ($_FILES['newimg2']); $newimg3=($_FILES['newimg3']); $newimg4=($_FILES['newimg4']); $newimg5=($_FILES['newimg5']); $update = $bdd->prepare("UPDATE images_annonces SET filepath = :location WHERE id_annonce = :id_annonce"); $update->execute(array( ':id_annonce' => $id_annonce, //$id_annonce de la table image_annonces liée à annonce. //On voit bien que $idannonceest différent de $id_annonce ':filepath' => $location)); header('Location: profilannonce.php?id='.$id_membre.''); }

Re: Modifier une annonce avec la fonction Update

Posté : 12 janv. 2022, 21:22
par or 1
quelle est l'url de la page qui contient ce code ?
$id = !empty($_GET['id']) ? trim($_GET['id']) : null;

Re: Modifier une annonce avec la fonction Update

Posté : 12 janv. 2022, 21:37
par max303
J'ai modifié le code en haut. Et les vardump sont respectivement false et null
L'url de la page est toujours: http://projetsite/editerannonce.php . On voit bien que l'id de l'annonce n'apparait pas.
Et ce code:

Code : Tout sélectionner

$idannonce = !empty($_GET['id'])
était censé récupérer l'id de l'annonce
NB: La table image_annonces contient les colonnes: id, id_annonce et filepath
La table annonce contient toutes les informations de l'annonces les colonnes: id, created_by_member, id_categorie, id_ville, description, titre, prix..

Donc 2 requêtes que j'ai faites: reqannonce et reqimage.

Re: Modifier une annonce avec la fonction Update

Posté : 13 janv. 2022, 08:36
par @rthur
Et ce code:

Code : Tout sélectionner

$idannonce = !empty($_GET['id'])
était censé récupérer l'id de l'annonce
Ce code ne fait pas cela.
Utilises var_dump() pour voir le contenu de tes variables, ça t'aidera à comprendre.

Et voici la doc de la fonction empty() :
https://www.php.net/empty

Re: Modifier une annonce avec la fonction Update

Posté : 13 janv. 2022, 18:42
par max303
Bonjour @rthur, merci pour ta réponse. J'ai lu le doc de la fonction empty().
J'ai utilisé le vardump, mais apparememt cette variable $idannonce est false, alors que je cherche à récupérer l'id de l'annonce censé être modifiée. Aurais tu-une idée?

Re: Modifier une annonce avec la fonction Update

Posté : 14 janv. 2022, 00:29
par @rthur
Pourquoi as-tu utilisé la fonction empty() dans ton code ?
Car là dans ta variable $idannonce tu stocke l'inverse du résultat de cette fonction