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 avec une double insertion


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 31
    Points : 26
    Points
    26
    Par défaut Problème avec une double insertion
    Bonjour j'ai un problème, je fait un insert sur une table avec une clé auto_increment et à tous les fois il insère l'enregistrement en double:

    1- Je commence par créer un objet recette:
    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
     
    <?php
    $recette = new recette('Type_Recette', 'nom_utilisateur', 'Nom de la recette', 5, 5, 1, 'preparation', '2006-10-16');
     
    //Appel de la méthode insert de l'objet
    if($recette->insert())
    {
    	echo "oui";
    }
    else
    {
    	echo "non";
    }
     
    ?>
    2-Méthode insert dans la classe recette
    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
     
    public function insert()
    {
            $success = false;
     
    	$objDb = new DB();
    	$id = $objDb->connect();
    	$req = "INSERT INTO RECETTE VALUES(null, '".addslashes($this->getTypeRecette())."', '".addslashes($this->getUtilisateur())."', '".
    				addslashes($this->getNom())."', ".$this->getTempPrep().", ".$this->getTempCuiss().", ".
    				$this->getDifficulte().", '".addslashes($this->getPreparation())."', '".$this->getDateAjout()."');";
     
    	$reponse = $objDb->request($req);
     
    	//Si l'enregistrement a été ajouté
    	$success = (mysql_affected_rows($id) > 0) ? true: false;
     
            echo mysql_affected_rows($id);//Ce echo renvoie bien 1
     
    	return $success;//La fonction revoie bien true
    }
    J'ai fait un test sur la variable $req qui contient la requete en faisant un unset($req) et l'enregistrement se fait toujours en double!

    J'ai besoin d'aide!

    Merci

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Difficile de répondre sans connaître ta classe DB, et surtout DB::request().

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    La classe DB va comme suit

    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
    37
    38
    39
    40
    41
    42
    43
    44
     
    <?php
    if(!isset($__DATABASE_CLA_PHP) && 
       (isset($varGlobalPageOk) && basename($_SERVER["SCRIPT_NAME"]) == $varGlobalPageOk))
    {
    	$__DATABASE_CLA_PHP = 1;
    	class DB
    	{	
    		public $adresse;
    		public $login;
    		public $pwd;
     
    		//Constructeur de l'objet database
    		function __construct()
    		{
    			$this->adresse = '';
    			$this->login = '';
    			$this->pwd = '';
    		}
     
    		//Méthode qui effectue la connection à la base de données
    		//Elle retourne l'identifiant de la connexion($ressourceMysql)
    		function connect()
    		{
    			$ressourceMysql = mysql_connect($this->adresse, $this->login, $this->pwd);
    			mysql_select_db('');
     
    			return $ressourceMysql;
    		}
     
    		//Méthode qui effectue une requete sql et retourne le résultat
    		function request($requete)
    		{
    			return mysql_query($requete);
    		}
     
     
    		//Méthode pour fermer la connexion
    		function disconnect($conn)
    		{
    			mysql_close($conn);
    		}
    	}
    }//fin de l'exclusion
    Merci

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Je ne vois pas de problème dans DB. Peux-tu faire un echo de $req, et donner la structure de ta table ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    Voici le contenu de la variable $req

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO RECETTE VALUES(null, 'Type_Recette', 'nom_utilisateur', 'Nom de la recette', 5, 5, 1, 'preparation', '2006-10-16');
    et pour la structure de la table recettte

    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
     
    -- 
    -- Structure de la table `recette`
    -- 
     
    CREATE TABLE `recette` (
      `no_RECETTE` int(10) unsigned NOT NULL auto_increment,
      `FK_code_TYPE_RECETTE` varchar(10) NOT NULL,
      `FK_login_UTILISATEUR` varchar(20) NOT NULL,
      `nom_RECETTE` varchar(80) default NULL,
      `tempPrep_RECETTE` int(10) unsigned default NULL,
      `tempCuiss_RECETTE` int(10) unsigned default NULL,
      `difficulte_RECETTE` tinyint(3) unsigned default NULL,
      `preparation_RECETTE` mediumtext,
      `dateAjout_RECETTE` date default NULL,
      PRIMARY KEY  (`no_RECETTE`),
      KEY `RECETTE_FKIndex1` (`FK_login_UTILISATEUR`),
      KEY `RECETTE_FKIndex2` (`FK_code_TYPE_RECETTE`)
    ) ENGINE=MyISAM AUTO_INCREMENT=35 DEFAULT CHARSET=latin1 AUTO_INCREMENT=35 ;
    Merci

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Essaie de remplacer le 1er NULL dans ta requête par un champ vide => tu ne dois pas compléter un champ en autoincrement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO RECETTE VALUES( , 'Type_Recette', 'nom_utilisateur', 'Nom de la recette', 5, 5, 1, 'preparation', '2006-10-16');

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    Non il n'aime pas ca du tout il renvoie cette erreur

    MySQL server version for the right syntax to use near ' 'Type', 'nom_utilisateur', 'Nom de la recette', 5, 5, 1, 'preparation', '2006-1' at line 1

    j'ai essayé aussi en nommant tous les champs sauf celui auto-increment dans le style:
    Insert INTO RECETTE (FK_code_TYPE_RECETTE, FK_login_UTILISATEUR,etc.) VALUES ('type_recette', 'utilisateur', etc.);

    Mais il insère toujours deux fois!

    Je n'y comprend rien et pourtant ce n'est pas la 1ere fois que je fait un champ auto-incrément!

    Merci

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/08/2013, 14h16
  2. Problème avec une requête INSERT (sqlserver2005)
    Par jacko842 dans le forum Développement
    Réponses: 2
    Dernier message: 21/03/2012, 10h09
  3. [VB.NET/Access] Problème avec une requête d'insertion
    Par Bladinou dans le forum Accès aux données
    Réponses: 8
    Dernier message: 29/05/2007, 18h06
  4. probléme avec une requete insert dans une procédure stockée
    Par amelhajer dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/05/2007, 11h03
  5. [DREAM MX] Problème avec une insertion d'une anim' flash
    Par Mout85 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 16/09/2005, 12h47

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