Partage
  • Partager sur Facebook
  • Partager sur Twitter

Triple UPDATE en fonction d'un SELECT

    16 mars 2011 à 12:26:04

    Bonjour,
    Je ne savais pas trop où poster étant donné que c'est du php et du mysql et que les erreurs sont liés je pense, mais bon, je tente ma chance ici.

    Je fais un triple update de différentes tables suite à un select qui me retourne toutes les lignes qui me sont utiles. J'ai beau retourné le problème dans tous les sens je ne vois vraiment pas où ça cloche!
    Les update ne fonctionnent pas alors que mon select parcourt bien les résultats et trouve bien les champs nécessaires à mon traitement.
    Je précise mes champs webmaster profit sont des double et tous les champs de la dernière colonne sont des bigint.


    //On récupère les données du form
      $idcamp = $_GET['idcampaign'];
      $idweb = $_GET['idwebsite'];
      $idcust = $_GET['idcustomer'];
      $value = $_GET['budgetvalue'];
      $total = 0;
      //On sélectionne toutes les lignes de statistiques correspondantes
      $sql = "SELECT * FROM _STATISTICS s
             WHERE s.IDWEBSITE = ".$idweb."
               AND s.IDCAMPAIGN = ".$idcamp."
             ORDER BY s.DATE_SAVE DESC";
      $db->Query($sql);
    
      while($row = $db->FetchResult($db->result))
      {
        if($row['WEBMASTER_PROFIT'] <= $value-$total){
          $total += $row['WEBMASTER_PROFIT'];
          
          //Décrementation du budget dans la table customers
          $sqld = "UPDATE _CUSTOMERS SET 
                  PROFIT = PROFIT - ".(double)$row['WEBMASTER_PROFIT']." 
                  WHERE IDCUSTOMER = ".$idcust."";
          $db->Query($sqld);
          
          //Incrémentation du budget dans la table campaign
          $sqle = "UPDATE _CAMPAIGN SET 
                  BUDGET = BUDGET + ".(double)$row['WEBMASTER_PROFIT']." 
                  WHERE IDCAMPAIGN = ".$idcamp."";
          $db->Query($sqle);
          
          //RAZ des statistiques de la table statistics
          $sqlf = "UPDATE _STATISTICS SET DATA = 0, DISPLAY = 0, CLICK = 0, 
          CLICK_DOUBLE = 0, CLICK_OUT = 0, CLICK_CERTIFIED = 0, INSCRIPTION = 0, 
          SALE =0, WEBMASTER_PROFIT = 0
                  WHERE IDWEBSITE = ".$idweb." 
                    AND IDCAMPAIGN = ".$idcamp."
                  ORDER BY DATE_SAVE DESC";
          $db->Query($sqlf);  
         }
       }
    


    Merci d'avance.

    edit.
    • Partager sur Facebook
    • Partager sur Twitter
      16 mars 2011 à 12:39:12

      Salut
      Pour les 2 premières, je crois que tu as une variable mal orthographié : $rowd devrait s'appeler $row

      Pour la 3ième, elle n'a rien à faire dans la boucle et les variables ne servent à rien.
      • Partager sur Facebook
      • Partager sur Twitter
        16 mars 2011 à 12:42:25

        Oé je viens d'éditer, j'avais copy past du code que je venais de modif.
        • Partager sur Facebook
        • Partager sur Twitter
          16 mars 2011 à 12:48:50

          Je ne vois aucun changement :euh:
          • Partager sur Facebook
          • Partager sur Twitter
            16 mars 2011 à 13:28:32

            Au niveau de la derniere requete il faut que je trouve un espece de rowid étant donné que mes lignes n'ont pas d'id, je ne peux pas update chaque ligne. Peut être passé par un index php?
            • Partager sur Facebook
            • Partager sur Twitter
              18 mars 2011 à 23:23:58

              Tout ça peut se faire en SQL, il n'y a pas besoin de PHP.

              Sinon, est-ce que tu testes les codes retour de tes requêtes, ou as-tu activé les exceptions de PDO ?

              Au fait, tu ne sécurises pas tes paramètres GET...
              • Partager sur Facebook
              • Partager sur Twitter

              Triple UPDATE en fonction d'un SELECT

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown