Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/06/2011, 11h56   #1
Membre du Club
 
Inscription : janvier 2008
Messages : 705
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 705
Points : 66
Points : 66
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 :
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 :
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 :
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
kate59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 12h30   #2
Membre du Club
 
Inscription : janvier 2008
Messages : 705
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 705
Points : 66
Points : 66
Bonjour,

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

Code :
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.
kate59 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 01/07/2011, 12h50   #3
Membre du Club
 
Inscription : janvier 2008
Messages : 705
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 705
Points : 66
Points : 66
Quelqu'un m'a donner cette mehode mai sje n'arrive pas a l integre a mon cas:
Code :
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 :
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.
kate59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 13h12   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
utilise foreach pour parcourir un array, et utilise les requete preparer pour faire de l’insertion multiple, c'est fait pour
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 14h44   #5
Membre du Club
 
Inscription : janvier 2008
Messages : 705
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 705
Points : 66
Points : 66
j'ai fait ceci mais j'ai une erreur de synthaxe:
Code :
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();
 
 
	}
?>
kate59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 14h59   #6
Membre du Club
 
Inscription : janvier 2008
Messages : 705
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 705
Points : 66
Points : 66
kate59 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 01/07/2011, 15h08   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
oula, c'est nimp ça, tu ne sais pas ce qu'est une requete préparée ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 16h01   #8
Membre Expert
 
Avatar de kdmbella
 
Homme Demazy Mbella
Développeur Web
Inscription : août 2010
Messages : 620
Détails du profil
Informations personnelles :
Nom : Homme Demazy Mbella
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 : 620
Points : 1 470
Points : 1 470
je pense que dans ton cas tu dois utiliser une transaction il me semble
kdmbella est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 16h32   #9
Membre du Club
 
Inscription : janvier 2008
Messages : 705
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 705
Points : 66
Points : 66
merci pour vos reponse j'ai reussi a faire ceci:
Code :
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 :
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.
kate59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 17h12   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
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 :
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));
    }
}
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 17h32   #11
Membre du Club
 
Inscription : janvier 2008
Messages : 705
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 705
Points : 66
Points : 66
excuse moi c 'est vrai que je suis pas roder encore au pdo je vais m y mettre a fond.
kate59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h42.


 
 
 
 
Partenaires

Hébergement Web