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 :

Problème d'incrément avec PHP - mySQL


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2009
    Messages : 51
    Points : 45
    Points
    45
    Par défaut Problème d'incrément avec PHP - mySQL
    Hello,

    Sur mon site, j'incémente un champ mySQL, de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $requetes[]="UPDATE t_system SET entry=entry+1";
    makeTransaction($requetes);
    -> Le résultat est que cela incrémente de 3 !

    Pour contre, si j'insère un echo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $requetes[]="UPDATE t_system SET entry=entry+1";
    echo " ";
    makeTransaction($requetes);
    -> Cela fonctionne ! (incrémentation de 1)

    -> Je deviens ou quoi

    Merci pour votre aide !

  2. #2
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    Ah mon avis tu rafraichie ta page plusieurs fois sans faire attention

    Peux tu nous montrer le code de ta fonction makeTransaction() ?
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2009
    Messages : 51
    Points : 45
    Points
    45
    Par défaut Il s'agissait d'ue erreur d'initialisation !
    La routine "makeTransaction($requetes)" prend un tableau (qui contient la ou les requetes à exécuter en mode transaction).

    -> Dans le même script, j'utilise (2x!) le même nom de tableau (à savoir requetes[]) mais je ne l'avais pas effacée !!!

    -> Erreur de débutant ! Honte à moi !

    -> Si dessous le script :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    function makeTransaction($requetes){
    	//si le tableau est vide, on retourne...
    	if (count($requetes)==0)
    	{
    		return 'ok';
    	}
    	require('connection.php'); //établi la connection à la BD et sélectionne la BD
    	mysql_select_db($database_bd, $bd); //sélectionne la base de données
    	try 
    	{
    		// Fixe le niveau transactionnel (optionnel, en principe est définit sur le serveur. 
    		mysql_query("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE", $bd);
    		
    		// Début de la transaction
    		mysql_query("BEGIN", $bd);
    		
    		
    		for ($i=0;$i<count($requetes);$i++)
    		{
    			//ici on recherche le terme "METTRE ICI ID" pour les mettres dans les sous-table
    				if (isset($current_created_id) AND $current_created_id!=0 ){
    					$requetes[$i]=str_replace ("METTRE ICI ID",$current_created_id,$requetes[$i]);
    				}	
    				if(!@mysql_query($requetes[$i], $bd)) 
    				{
    					throw new Exception(mysql_error());
    				}
    				//on charge l'id crée, si aucuns id n'est crée( donc=0), on garde l'actuel
    				$current_created_id=mysql_insert_id()!=0?mysql_insert_id():$current_created_id;
    		}
    		// Valide la transaction (effectue toutes les requêtes depuis 'BEGIN')
    		mysql_query("COMMIT", $bd);
    		unset ($requetes);
    		return 'ok';
    	}

Discussions similaires

  1. [MySQL] Problème avec php/mysql, variables du même nom
    Par Naxosy dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/01/2008, 15h31
  2. [LDAP] problème connexion anonyme avec php à Active Directory
    Par anto48_4 dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 02/03/2006, 16h50
  3. Quel SGBD avec PHP : MySQL ou Postgres
    Par charliejo dans le forum Requêtes
    Réponses: 6
    Dernier message: 25/01/2006, 12h13
  4. Problème cases à cocher avec connection Mysql
    Par cams dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 01/12/2005, 14h13
  5. multi update avec php/ mysql
    Par arnoweb dans le forum Administration
    Réponses: 1
    Dernier message: 17/11/2005, 22h10

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