Update sur deux table

Résolu
Bonjour,

Je voudrai pouvoir mettre à jour les valeurs de mes tables mais toute mes valeur ne sont pas situé dans la même table, serait-il possible de faire la requête sous cette forme?
update fraisforfait, lignefraiforfait set ff_mois = '".$_POST['mois']."', frf_libelle = '".$_POST['libelle']."', frf_montant = '".$_POST['montant']."', lff_quantite = '".$_POST['quantite']."', total = '".$_POST['prix_total']."' where fhf_id = '".$_POST['id']."' "


ou faut-il faire une requête imbriqué?

2 réponses

  1. Modérateur
    Bonjour,

    1 - ... on Récupère "proprement" les variables AVANT de les utiliser.
    Pour se faire... on peut utiliser l'écriture TERNAIRE et ISSET ( ou !EMPTY)
    Comme ceci :
    //Récupération "Propre" des variables AVANT de les utiliser
    
    $mois = isset($_POST['mois'])? $_POST['mois'] : '';
    $libelle = isset($_POST['libelle'])? $_POST['libelle'] : '';
    $montant = isset($_POST['montant'])? $_POST['montant'] : '';
    //etc...
    


    //On utilise ensuite ces variables dans la requête
    $sql = "update fraisforfait, lignefraiforfait set ff_mois = '$mois', frf_libelle = '$libelle' ...etc.... ";
    


    2 - Fais un ECHO de ta requête .... pour voir ce qu'elle contient..... puis (en récupérant donc le résultat du echo.... ) TESTES la directement dans ta BDD

    1. Modérateur
      De plus... je ne suis pas certain que tu puisses UPDATE deux tables en même temps.....(je n'ai jamais essayé tu me diras... ) Mais je crois qu'il va falloir que tu fasses l'UPDATE sur une première table ... PUIS sur la seconde....
    2. dans la BDD ca marche mais quand je le fait sur mes pages ca ne marche pas mais avec l'echo ca affiche bien les valeurs à la première ligne donc dans le echo ca donne :

      update lignefraisforfait, fraisforfait set ff_mois = 'fevrier' frf_libelle = 'repas', frf_montant = '27', lff_quantite = '56', total = '1456' where lignefraisforfait.frf_id = fraisforfait.frf_id and fraisforfait.frf_id = '45' 


      et avant que j'execute le update le frf_montant était à 26
    3. Modérateur
      Donc reste à voir ton code php
    4. Contributeur sécurité
      Oui d'accord avec jordane.
      Essaie de faire un update sur une seule table déjà, puis la seconde, avant de regrouper les deux.
    5. il manqué une virgule, donc ça marche.
      merci beaucoup :)
  2. Contributeur sécurité
    Salut,

    Est ce que cela t'orientes:

    https://www.grafikart.fr/forum/topics/2006

    A+
    1. oui mais la requete update ne marche pas alors que quand je la teste sur phpmyadmin ca marche voila ma requete :
      "update lignefraisforfait, fraisforfait set ff_mois = '".$_POST['mois']."', frf_libelle = '".$_POST['libelle']."', frf_montant = '".$_POST['montant']."', lff_quantite = '".$_POST['quantite']."', total = '".$_POST['prix_total']."' where lignefraisforfait.frf_id = fraisforfait.frf_id and fraisforfait.frf_id = '".$_POST['id']."' ";
    2. Contributeur sécurité
      Peux tu remplacer les données que tu update dans ta requête ?
    3. non c'est ça mon problème
      voila la structure de mes deux tables :
      la 1ère c'est lignefraisforfait : ou il y'a frf_id (clé étrangère), ff_mois(clé étrangère), vis_matricule (clé étrangère) et lff_quantite.
      la deuxième table c'est fraisforfait ou il y'a frf_id (clé primaire), frf_libelle et frf_montant.
      et quand je veut update les valeur ca ne marche pas
    4. Contributeur sécurité
      Ce que je voulais voir c'était: "Est ce que tu peux mettre les valeurs que tu veux tester en dur dans ta requête ici pour voir si cela vient de la"...ou pas...