Modifier une annonce avec la fonction Update

Eléphant du PHP | 54 Messages

12 janv. 2022, 21:10

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.''); }
Modifié en dernier par max303 le 13 janv. 2022, 00:43, modifié 1 fois.

Mammouth du PHP | 2055 Messages

12 janv. 2022, 21:22

quelle est l'url de la page qui contient ce code ?
$id = !empty($_GET['id']) ? trim($_GET['id']) : null;

Eléphant du PHP | 54 Messages

12 janv. 2022, 21:37

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.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9163 Messages

13 janv. 2022, 08:36

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
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 54 Messages

13 janv. 2022, 18:42

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?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9163 Messages

14 janv. 2022, 00:29

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
Quand tout le reste a échoué, lisez le mode d'emploi...