Tentative d'UPDATE avec un array mais ne fonctionne pas.
Résolu
Bonjour, tout est dans le titre, je veux modifier une annonce dans ma base de données via un UPDATE, seulement la quantité d'éléments m'oblige à utiliser un array.
Y a-t-il une erreur dans mon code ? Je n'en ai pas l'impression.
$edit->prepare('UPDATE 'Annonce' SET(:id, :id_vendeur, :type_transaction, :type_bien, :departement, :ville, :adresse, :code_postal, :nbr_piece, :nbr_chambre, :nbr_toilettes, :nbr_sdb, :type_cuisine, :etage, :ascenseur, :balcon, :surface_balcon, :terrasse, :surface_terrasse, :piscine, :option, :etat_bien, :surface_carrez, :surface_autre, :dpe, :ges, :prix, :prix_vendeur, :commission_agence, :ref_annonce, :description, :exclu ) WHERE ref_annonce = ?');
$edit->execute(array('id_vendeur' => $_SESSION['id'],
'type_transaction' => $_POST['type_transaction'],
'type_bien' => $_POST['type_bien'],
'departement' => $_POST['departement'],
'ville' => $_POST['ville'],
'adresse' => $_POST['adresse'],
'code_postal' => $_POST['code_postal'],
'nbr_piece' => $_POST['nbr_piece'],
'nbr_chambre' => $_POST['nbr_chambre'],
'nbr_toilettes' => $_POST['nbr_toilettes'],
'nbr_sdb' => $_POST['nbr_sdb'],
'type_cuisine' => $_POST['type_cuisine'],
'etage' => $_POST['etage'],
'ascenseur' => $_POST['ascenseur'],
'balcon' => $_POST['balcon'],
'surface_balcon' => $_POST['surface_balcon'],
'terrasse' => $_POST['terrasse'],
'surface_terrasse' => $_POST['surface_terrasse'],
'piscine' => $_POST['piscine'],
'option' => $_POST['option'],
'etat_bien' => $_POST['etat_bien'],
'surface_carrez' => $_POST['surface_carrez'],
'surface_autre' => $_POST['surface_autre'],
'dpe' => $_POST['dpe'],
'ges' => $_POST['ges'],
'prix' => $_POST['prix'],
'prix_vendeur' => $_POST['prix_vendeur'],
'commission_agence' => $_POST['commission_agence'],
'ref_annonce' => $_POST['ref_annonce'],
'description' => $_POST['description'],
'exclu' => $_POST['exclu'],
'ref_annonce' => $_GET['ref']));
return true;
if (strlen($_POST['code_postal']) != '5'){ echo '<script>alert("Ce code postal n\'est pas valide !");</script>'; }
else if($_GET['ref'] != $_POST['ref_annonce']){ rename($_GET['ref'], $_POST['ref_annonce']); }
else
{
echo $edit->fetch() == true ? '<script>alert("Annonce Modifiée !");</script>' : '<script>alert("Une erreur est survenue !");</script>';
echo'<meta http-equiv="refresh" content="0; URL=gerer_annonces">';
}
Y a-t-il une erreur dans mon code ? Je n'en ai pas l'impression.
2 réponses
-
Salut, essaye comme ça :
$edit->prepare('UPDATE Annonce SET(:id, :id_vendeur, :type_transaction, :type_bien, :departement, :ville, :adresse, :code_postal, :nbr_piece, :nbr_chambre, :nbr_toilettes, :nbr_sdb, :type_cuisine, :etage, :ascenseur, :balcon, :surface_balcon, :terrasse, :surface_terrasse, :piscine, :option, :etat_bien, :surface_carrez, :surface_autre, :dpe, :ges, :prix, :prix_vendeur, :commission_agence, :ref_annonce, :description, :exclu ) WHERE ref_annonce = ?'); $edit->execute(array('id_vendeur' => $_SESSION['id'], 'type_transaction' => $_POST['type_transaction'], 'type_bien' => $_POST['type_bien'], 'departement' => $_POST['departement'], 'ville' => $_POST['ville'], 'adresse' => $_POST['adresse'], 'code_postal' => $_POST['code_postal'], 'nbr_piece' => $_POST['nbr_piece'], 'nbr_chambre' => $_POST['nbr_chambre'], 'nbr_toilettes' => $_POST['nbr_toilettes'], 'nbr_sdb' => $_POST['nbr_sdb'], 'type_cuisine' => $_POST['type_cuisine'], 'etage' => $_POST['etage'], 'ascenseur' => $_POST['ascenseur'], 'balcon' => $_POST['balcon'], 'surface_balcon' => $_POST['surface_balcon'], 'terrasse' => $_POST['terrasse'], 'surface_terrasse' => $_POST['surface_terrasse'], 'piscine' => $_POST['piscine'], 'option' => $_POST['option'], 'etat_bien' => $_POST['etat_bien'], 'surface_carrez' => $_POST['surface_carrez'], 'surface_autre' => $_POST['surface_autre'], 'dpe' => $_POST['dpe'], 'ges' => $_POST['ges'], 'prix' => $_POST['prix'], 'prix_vendeur' => $_POST['prix_vendeur'], 'commission_agence' => $_POST['commission_agence'], 'ref_annonce' => $_POST['ref_annonce'], 'description' => $_POST['description'], 'exclu' => $_POST['exclu'], 'ref_annonce' => $_GET['ref'])); return true; if (strlen($_POST['code_postal']) != '5'){ echo '<script>alert("Ce code postal n\'est pas valide !");</script>'; } else if($_GET['ref'] != $_POST['ref_annonce']){ rename($_GET['ref'], $_POST['ref_annonce']); } else { echo $edit->fetch() == true ? '<script>alert("Annonce Modifiée !");</script>' : '<script>alert("Une erreur est survenue !");</script>'; echo'<meta http-equiv="refresh" content="0; URL=gerer_annonces">'; } -
J'ai essayé ça. Mais ça ne fonctionne pas.
require '../Class/bdd.params.php'; try { $bdd = new PDO('mysql:host='.__SQL_HOST.';dbname='.__SQL_BDD, __SQL_LOGIN, __SQL_PASSWORD); } catch(Exception $e) { exit('Erreur lors de la connexion à la BDD: '.$e->getMessage()); } $editer = $bdd->prepare('SELECT * FROM Annonce WHERE ref_annonce = ?'); $editer->execute(array($_GET['ref'])); while ($donnees = $editer->fetch()){ $donnees->execute(array('id_vendeur' => $_SESSION['id'], 'type_transaction' => $_POST['type_transaction'], 'type_bien' => $_POST['type_bien'], 'departement' => $_POST['departement'], 'ville' => $_POST['ville'], 'exclu' => $_POST['exclu'])); $bdd->query('UPDATE Annonce SET '.$donnees.' WHERE ref_annonce = '.$editer); if (strlen($_POST['code_postal']) != '5'){ echo '<script>alert("Ce code postal n\'est pas valide !");</script>'; } //else if($_GET['ref'] != $_POST['ref_annonce']){ rename($_GET['ref'], $_POST['ref_annonce']); } else { echo $edit->fetch() == true ? '<script>alert("Annonce Modifiée !");</script>' : '<script>alert("Une erreur est survenue !");</script>'; echo'<meta http-equiv="refresh" content="0; URL=gerer_annonces">'; } }