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 :

insertion multiple avec PDO [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut insertion multiple avec PDO
    Bonjour,

    je veut enregistrer dans un table la reference des membres cocher avec des checkbox dans un tbaleau donc j'ai fait ceci sur mon formulaire:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $groupeMembre = new GroupeMembre (
    	array (
    	'ref_groupe' => ($_POST['ref_groupe']),
    	'ref_membre' => ($_POST['delete'])
    	)
    ?>

    voici le print_r($groupeMembre):

    $_POST[delete] regroupe un tableau des membre:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    GroupeMembre Object ( [erreurs:protected] => Array ( ) [ref_groupe:protected] => 1 [ref_membre:protected] => Array ( [0] => 1 [1] => 15 ) )
    ?>
    don con constate que ref_membre a plusieurs enregistrements mais le groupe restera toujours le meme.

    voici la fonction :
    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
    <?php
    protected function addGroupeMembre(GroupeMembre $groupeMembre)
    	{
    		$requete = $this->db->prepare('INSERT INTO 
    		(groupe_membre) values(:id_groupe,:id_membre)');
     
     
    		$requete->bindValue(':ref_groupe', $groupeMembre->getRefGroupe());
    		$requete->bindValue(':ref_membre', $groupeMembre->getRefMembre());
     
     
    		$requete->execute();
     
     
    	}
    ?>

    mais je ne sais pas trop comment m'y prendre pour que le tableau de ref membre soit inserer.

    Je fais des test non concluant depuis ce matin avec mes recherches sur internet.
    Merci. :p

  2. #2
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    Bonjour,

    voila j'ai fai ceci: mais c'est pas top et j'ai une erreur de syntaxe:

    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
     
    <?php
    public function addMembreCentreMultiple($id_centre,$id_membre)
    	{
     
    		$requete = $this->db->prepare('INSERT INTO 
    		categorie_ovip value';
     
    		for{
    		($requete.='(:id_categorie,:id_membre)')
    		;}
     
     
    		$requete->bindValue(':id_centre', $id_centre);
    		$requete->bindValue(':id_membre', $id_membre);
     
     
    		$requete->execute();
     
     
    	}
    ?>
    merci.

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    Quelqu'un m'a donner cette mehode mai sje n'arrive pas a l integre a mon cas:
    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
    <?php
    function genererRequete($lesValeurs)//les valeurs est ton tableau de valeurs
    	{
    		$string='INSERT INTO matable VALUES ($lesValeurs['ref_groupe'][0], $lesValeurs['ref_membre'][0])'; // on admet que le tableau reçu en paramètre a au moins une ligne
     
    		if(count($lesValeurs)>1)// si il y a plus d'une ligne dans le tableau
    		{
    			for($i=1;$i<count($lesValeurs);$i++)//on part de l'indice 1 car l'indice 0 est déjà passé
    			{
    				$string.=', ($lesValeurs['ref_groupe'][$i], $lesValeurs['ref_membre'][$i])'; // et on concatène pour chaque ligne
    			}
    		}
     
    		return $string;
    	}
    ?>
    ma fonction:
    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
    <?php
    public function addMembreCentreMultiple($id_centre,$id_membre)
    	{
     
    		$requete = $this->db->prepare('INSERT INTO 
    		categorie_ovip value';
     
    		for{
    		($requete.='(:id_categorie,:id_membre)')
    		;}
     
     
    		$requete->bindValue(':id_centre', $id_centre);
    		$requete->bindValue(':id_membre', $id_membre);
     
     
    		$requete->execute();
     
     
    	}
    ?>
    merci.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    utilise foreach pour parcourir un array, et utilise les requete preparer pour faire de l’insertion multiple, c'est fait pour

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    j'ai fait ceci mais j'ai une erreur de synthaxe:
    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
    <?php
    public function addMembreCentreMultiple($id_centre,$id_membre)
    	{
     
    		$requete = $this->db->prepare('INSERT INTO 
    		categorie_ovip (id_categorie,id_membre)value';
     
    		foreach($id_centre as $value )
    		{
    		$requete.='('.$id_centre.','.$id_membre.')';
    		}
    		)
     
     
    		$requete->execute();
     
     
    	}
    ?>

  6. #6
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    oula, c'est nimp ça, tu ne sais pas ce qu'est une requete préparée ?

  8. #8
    Expert éminent
    Avatar de kdmbella
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2010
    Messages
    799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 799
    Points : 7 039
    Points
    7 039
    Par défaut
    je pense que dans ton cas tu dois utiliser une transaction il me semble
    "L'humanité se divise en trois catégories : ceux qui ne peuvent pas bouger, ceux qui peuvent bouger, et ceux qui bougent."
    - Benjamin Franklin

    De l'aide en Javascript , consultez la FAQ JS.

    De l'aide sur le FrameWork JS DHTMLX : posez vos questions sur le forum des Bibliothèques & Frameworks JS.

  9. #9
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    merci pour vos reponse j'ai reussi a faire ceci:
    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
     
    public function addMembreCentreMultiple($id_centre,$id_membre)
    	{
     
     //lignes à insérer
     
    $sql = "";
     
    FOREACH($id_centre as $value) {
     
    IF($sql <> "") $sql .= ", ";
     
    $sql .= "('".$value["id_centre"]."','".$id_membre."')";
     
    }
     
    $sql = "INSERT INTO membre_centre (id_categorie,id_membre)  VALUES".$sql;
     
     
    		$requete = $this->db->prepare($sql);
    		$requete->execute();
    }
    mais j'ai une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2-1' for key 'PRIMARY'' in C:\wamp\www\on-vous-inscrit-pour\lib\MembreCentreManager_PDO.class.php:85 Stack trace: #0 C:\wamp\www\on-vous-inscrit-pour\lib\MembreCentreManager_PDO.class.php(85): PDOStatement->execute() #1 C:\wamp\www\on-vous-inscrit-pour\frontend\modules\compte\views\GererCentreInterets.php(54): Membre
    alors qu'aucun enregistrement n'a été effectuer.

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    y'a de grosses lacunes la
    de plus t'utilises les requêtes préparées alors que tu ne prépares rien dutout

    le code correct est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public function addMembreCentreMultiple($id_centres, $id_membre)
    {
        $sql = 'INSERT INTO membre_centre (id_categorie,id_membre)  VALUES (?, ?)';
        $requete = $this->db->prepare($sql);
     
        foreach($id_centres as $id_centre)
        {
            $requete->execute(array($id_centre, $id_membre));
        }
    }

  11. #11
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    excuse moi c 'est vrai que je suis pas roder encore au pdo je vais m y mettre a fond.

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

Discussions similaires

  1. [PDO] Mises à jour et insertions sûres avec PDO
    Par php_de_travers dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/12/2008, 23h04
  2. [MySQL] Insertions multiples avec un ON DUPLICATE KEY comment ça marche?
    Par Sayrus dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/04/2008, 13h41
  3. [PDO] Insertion Postgresql avec PDO
    Par juninho269 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 23/02/2008, 14h00
  4. Requête d'insertion multiple avec 1 valeur fixe
    Par [DreaMs] dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/12/2005, 09h28
  5. INSERT multiples avec : rs.AddNew et .Update
    Par M.Zip dans le forum ASP
    Réponses: 4
    Dernier message: 03/12/2004, 15h53

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