IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[ADODB] portée d'une transaction dans une fonction


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut [ADODB] portée d'une transaction dans une fonction
    Bonjour,

    J'essaye de faire une transaction mais ca marche pas, je ne sais pas ou je me suis gouré. Si quelqu'un peux jeter un coup d'oeil, ca doit pas être un gros truc.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    fonction mafonction (){
    //plein de code ici
     
    //je commence ma transaction
           $db->StartTrans();
    	    foreach($produits as $produit)
    		{
    	       //je fais un select
                  /*ma fonction blackbox effectue un insert et c'est cet insert que je voudrais annuler si ca me renvoie false
    */
    			$res = blackbox();			
    	        if ( $res === false ){
                    //je force le rollback
    	        	$db->FailTrans();
    	        	$db->CompleteTrans();
    	        	return false;
    	        }
    		}
    //tout se passe bien je commit
    	    $db->CompleteTrans();
    //ici aussi plein de code
    }
    Est ce qu'on peux revenir sur des requêtes effectuée dans une autre fonction? Sinon quel est le moyen pour moi de résoudre mon problème.

    Merci.

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 680
    Points : 5 266
    Points
    5 266
    Par défaut
    if ( $res === false ){
    tu as mis 3 fois le signe "=" donc tu ne teste plus si c'est égal à false. L'égalité se teste avec 2 signe "="

    essaie ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( $res == false ){ ... }
    ou


  3. #3
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    tu as mis 3 fois le signe "=" donc tu ne teste plus si c'est égal à false. L'égalité se teste avec 2 signe "="
    je fais une comparaison stricte $res doit etre un boolean.

    Pour info va visiter cette page avec les différents comparateurs :
    http://fr.php.net/manual/fr/types.comparisons.php

    Mon problème à été résolu, l'erreur venait de mes tables qui étaient en myisam. Depuis je les ai passés en InnoDB.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  2. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  3. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo