Faire un update en PDO

[Résolu/Fermé]
Signaler
Messages postés
48
Date d'inscription
vendredi 10 octobre 2014
Statut
Membre
Dernière intervention
18 août 2020
-
Messages postés
48
Date d'inscription
vendredi 10 octobre 2014
Statut
Membre
Dernière intervention
18 août 2020
-
Bonjour,

Aidez-moi svp à faire un update en PHP et MySQL.
J'ai 2 tables sur lesquelles je fais des mises à jour. Le premier update sur la table 1 (infosfacture) fonctionne bien, mais j'ai un problème avec le update de la table 2 (facturation).


Voici la requete 1 $req1 avec son exécution :
$req1 = $base->prepare('UPDATE infosfacture
SET num = :num,
numtva = :numtva,
client = :client,
datefacture = :datefacture,
facturede = :facturede,
conditions = :conditions,
id_membre= :id_membre
WHERE id= :id');
$req1->bindParam(':id', $_GET['id'], PDO::PARAM_INT);
$req1->bindParam(':num', $_POST['num'], PDO::PARAM_STR);
$req1->bindParam(':numtva', $_POST['numtva'], PDO::PARAM_STR);
$req1->bindParam(':client', $_POST['client'], PDO::PARAM_STR);
$req1->bindParam(':datefacture', $_POST['datefacture'], PDO::PARAM_STR);
$req1->bindParam(':facturede', $_POST['facturede'], PDO::PARAM_STR);
$req1->bindParam(':conditions', $_POST['conditions'], PDO::PARAM_STR);
$req1->bindParam(':id_membre', $_SESSION['id_membre'], PDO::PARAM_INT);
$req1->execute();


Voici la partie du formulaire de la requête 2 que je veux mettre à jour :


Voici la requête 2 $req2 et son exécution :
$req2 = $base->prepare('UPDATE facturation
SET designation = :designation,
quantite = :quantite,
prixht = :prixht,
taxe = :taxe
WHERE fk_facturation_id= :fk_facturation_id');
$params = array();
foreach ($_POST['designation'] as $key => $designation) {
$params[':designation'] = $designation;
$params[':quantite'] = $_POST['quantite'][$key];
$params[':prixht'] = $_POST['prixht'][$key];
$params[':taxe'] = $_POST['taxe'][$key];
$params[':fk_facturation_id'] = $_GET['id'];
$req2->execute($params);
}


Problème :
Il n'y a pas de mise à jour quand il y a une mise à jour sur plusieurs lignes cad designation/quantite/prixht/taxe. De plus quand je rajoute des lignes cad designation/quantite/prixht/taxe, ces lignes ajoutées ne sont pas prise en compte dans la mise à jour.

1 réponse

Messages postés
33673
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 octobre 2021
3 759
Bonjour,


Il n'y a pas de mise à jour quand il y a une mise à jour sur plusieurs lignes cad designation/quantite/prixht/taxe. De plus quand je rajoute des lignes cad designation/quantite/prixht/taxe, ces lignes ajoutées ne sont pas prise en compte dans la mise à jour.

Tu veux dire que lorsque tu as plusieurs lignes dans ton formulaire, les données ne se mettent pas à jour ?
Fais tu une boucle sur tes lignes ?
Existent elles déjà dans ta bdd ? (dans le cas contraire ce n'est pas un UPDATE mais un INSERT que tu dois faire)

Sachant que là.. sans connaitre la structure (et le contenu) de tes tables, le code de ton formulaire, le contenu de la variable $_POST .....il nous sera difficile de te donner plus de réponse...
Avant de poursuivre, je t'invite à lire (et à appliquer....) le contenu de ces deux liens :
https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
https://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code



Messages postés
48
Date d'inscription
vendredi 10 octobre 2014
Statut
Membre
Dernière intervention
18 août 2020
7
J'ai changé, je ne vais plus modifier la facture, je vais la cloner ensuite modifier son duplicata et faire une insertion. C'est plus simple, je l'ai déjà fait et ça marche !