Faire un update en PDO

Résolu/Fermé
Anouchka2586 Messages postés 51 Date d'inscription vendredi 10 octobre 2014 Statut Membre Dernière intervention 20 mars 2022 - 18 avril 2018 à 12:52
Anouchka2586 Messages postés 51 Date d'inscription vendredi 10 octobre 2014 Statut Membre Dernière intervention 20 mars 2022 - 19 avril 2018 à 00:37
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.
A voir également:

1 réponse

jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
18 avril 2018 à 23:52
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://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code



0
Anouchka2586 Messages postés 51 Date d'inscription vendredi 10 octobre 2014 Statut Membre Dernière intervention 20 mars 2022 5
19 avril 2018 à 00:37
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 !
0