Insert into de plusieurs tables [Fermé]

Signaler
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
-
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
-
Bonjour

J'ai 1 table "adherent"
une autre table "statut"
une table de relation des 2 tables "tb_gestion_admin"

Ma question est la suivante comment on peut faire un INSERT INTO pour que la table "tb_gestion_admin" soit renseigné je vous joint la table des relations.
Un grand merci pour votre aide

-- Structure de la table 'tb_gestion_admin'
--

CREATE TABLE IF NOT EXISTS 'tb_gestion_admin' (
  'rid_adherent' int(11) DEFAULT NULL,
  'rid_categorie_statut' int(11) DEFAULT NULL,
  KEY 'rid_adherent' ('rid_adherent'),
  KEY 'rid_categorie_statut' ('rid_categorie_statut')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Contenu de la table 'tb_gestion_admin'
--

INSERT INTO 'tb_gestion_admin' ('rid_adherent', 'rid_categorie_statut') VALUES
(1, 1),
(2, 1),
(4, 1),
(10, 4),
(11, 3),
(12, 2),
(12, 6);

--
-- Contraintes pour les tables exportées
--

--
-- Contraintes pour la table 'tb_gestion_admin'
--
ALTER TABLE 'tb_gestion_admin'
  ADD CONSTRAINT 'tb_gestion_admin_ibfk_2' FOREIGN KEY ('rid_categorie_statut') REFERENCES 'tb_categorie_statut' ('id_categorie_statut') ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT 'tb_gestion_admin_ibfk_1' FOREIGN KEY ('rid_adherent') REFERENCES 'tb_gestion_adherent' ('id_adherent') ON DELETE CASCADE ON UPDATE CASCADE;

8 réponses

Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
Bonjour
Excusez moi, je suis vraiment perdu avec ses INSERT INTO avec jointure, pouvez vous me donner un coup de main.
En vous remerciant beaucoup
Merci
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
Bonjour
Je me permet de vous mettre mes 3 tables concernées en espèrant quelqu'un d'entre vous puisses m'expliquer un peu comment cela pourrait fonctionner.
En vous remerciant très sincérement

CREATE TABLE IF NOT EXISTS 'tb_gestion_adherent' (
  'id_adherent' int(11) NOT NULL AUTO_INCREMENT,
  'civilite' varchar(20) DEFAULT NULL,
  'nom' varchar(60) DEFAULT NULL,
  'prenom' varchar(50) DEFAULT NULL,
  'adresse_mail' varchar(50) DEFAULT NULL,
  'date_naissance' date DEFAULT NULL,
  'telephone_fixe' varchar(20) DEFAULT NULL,
  'telephone_mobile' varchar(20) DEFAULT NULL,
  'adresse' varchar(100) DEFAULT NULL,
  'lieu_dit' varchar(50) DEFAULT NULL,
  'code_postal' varchar(5) DEFAULT NULL,
  'ville' varchar(100) DEFAULT NULL,
  'login' varchar(255) DEFAULT NULL,
  'pass' varchar(255) DEFAULT NULL,
  PRIMARY KEY ('id_adherent')
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=155 ;


CREATE TABLE IF NOT EXISTS 'tb_categorie_statut' (
  'id_categorie_statut' int(11) NOT NULL AUTO_INCREMENT,
  'categorie_statut' varchar(50) DEFAULT NULL,
  PRIMARY KEY ('id_categorie_statut')
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;


CREATE TABLE IF NOT EXISTS 'tb_gestion_admin' (
  'rid_adherent' int(11) DEFAULT NULL,
  'rid_categorie_statut' int(11) DEFAULT NULL,
  KEY 'rid_adherent' ('rid_adherent'),
  KEY 'rid_categorie_statut' ('rid_categorie_statut')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE 'tb_gestion_admin'
  ADD CONSTRAINT 'tb_gestion_admin_ibfk_2' FOREIGN KEY ('rid_categorie_statut') REFERENCES 'tb_categorie_statut' ('id_categorie_statut') ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT 'tb_gestion_admin_ibfk_1' FOREIGN KEY ('rid_adherent') REFERENCES 'tb_gestion_adherent' ('id_adherent') ON DELETE CASCADE ON UPDATE CASCADE;

Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
Bonjour
Quelqu'un aurai la gentillesse de me donner son avis à propos de ma requète je suis vraiment desespéré.
Merci beaucoup

INSERT INTO tb_gestion_adherent ( id_adherent, civilite, nom, prenom )
VALUES('NULL', 'NULL', 'AAAAA', 'aaaaa')
FROM tb_categorie_statut
INNER JOIN tb_gestion_admin
ON tb_categorie_statut.id_categorie_statut = tb_gestion_admin.rid_categorie_statut
INNER JOIN tb_gestion_adherent
ON tb_gestion_adherent.id_adherent = tb_gestion_admin.rid_adherent
WHERE tb_categorie_statut.id_categorie_statut = "User";
Messages postés
2370
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
10 mars 2020
432
Salut,

Désolé mais je n'ai pas bien compris ce que tu attends. Dans ton premier post tu demandes comment remplir la table tb_gestion_admin, mais dans ton dernier message tu essayes de remplir la table tb_gestion_adherent.

Peux tu stp être un peu plus précis sur ta demande : qu'elles sont les informations de départ dont tu disposes et qu'est-ce que tu attends à l'arrivée ?

La requête de ton dernier message n'est pas correcte : tu ne peux pas utiliser FROM ni les jointures sans la clause SELECT.
Pour te donner une piste tu peux regarder la syntaxe de INSERT ... SELECT pour remplir une table avec les données d'une autre table :
http://dev.mysql.com/doc/refman/5.0/fr/insert-select.html
http://www.webmaster-freelance.com/2010/10/remplir-une-table-a-partir-dune-autre-a-laide-dune-requete-sql/

Bonne journée
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
Bonjour
Déjà merci pour ta réponse je commençait à desespérer de trouver de l'aide.
En fait je cherche à faire un INSERT avec plusieurs tables. Les jointures je connait un peu mais ce que je veux faire est un peu plus compliqué pour moi.

J'ai trois tables
une qui permet d'avoir un select dynamique dans mon formulaire ce qui donne:
<?php
	$resultats2 = $bdd->query("SELECT * FROM tb_categorie_statut");
		while ($donnees = $resultats2->fetch()){
?>
			<tr>
				<td>
			<?php echo $donnees['categorie_statut']; ?>
				</td>
				<td><label for="categorie_statut"></label>
					<input type="checkbox" name="categorie_statut[]" value="true"
			<?php echo @$donnees->id_categorie_statut ? " checked":"";?> disabled=""/>
				</td>
<?php
		}
?>


Ensuite une table qui gére les adherents

CREATE TABLE IF NOT EXISTS 'tb_gestion_adherent' (
  'id_adherent' int(11) NOT NULL AUTO_INCREMENT,
  'civilite' varchar(20) DEFAULT NULL,
  'nom' varchar(60) DEFAULT NULL,
  'prenom' varchar(50) DEFAULT NULL,
  'adresse_mail' varchar(50) DEFAULT NULL,
  'date_naissance' date DEFAULT NULL,
  'telephone_fixe' varchar(20) DEFAULT NULL,
  'telephone_mobile' varchar(20) DEFAULT NULL,
  'adresse' varchar(100) DEFAULT NULL,
  'lieu_dit' varchar(50) DEFAULT NULL,
  'code_postal' varchar(5) DEFAULT NULL,
  'ville' varchar(100) DEFAULT NULL,
  'login' varchar(255) DEFAULT NULL,
  'pass' varchar(255) DEFAULT NULL,
  PRIMARY KEY ('id_adherent')
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=155 ;


et pour terminer une table de relation gestion_admin qui a les relations de la table gestion_adherent et categorie_statut

j'ai mon Array qui gére pour supprimer, ajouter, modifier et editer

		case 'ajouter':			
				$sql = "INSERT INTO tb_gestion_adherent (civilite, nom, prenom, adresse_mail, date_naissance, telephone_fixe, telephone_mobile, adresse, lieu_dit, code_postal, ville, login, pass)
				VALUES (:civilite, :nom, :prenom, :adresse_mail, :date_naissance, :telephone_fixe, :telephone_mobile, :adresse, :lieu_dit, :code_postal, :ville, :login, :pass)";
			$requete = $bdd->prepare($sql);
			$requete->bindParam(':civilite',        	$PARAM['CIVILITE']);
			$requete->bindParam(':nom',             	$PARAM['NOM']);
			$requete->bindParam(':prenom',          	$PARAM['PRENOM']);
			$requete->bindParam(':adresse_mail',    	$PARAM['ADRESSE_MAIL']);
			$requete->bindParam(':date_naissance',  	$PARAM['DATE_NAISSANCE']);
			$requete->bindParam(':telephone_fixe',  	$PARAM['TELEPHONE_FIXE']);
			$requete->bindParam(':telephone_mobile',	$PARAM['TELEPHONE_MOBILE']);
			$requete->bindParam(':adresse',         	$PARAM['ADRESSE']);
			$requete->bindParam(':lieu_dit',        	$PARAM['LIEU_DIT']);
			$requete->bindParam(':code_postal',     	$PARAM['CODE_POSTAL']);			
			$requete->bindParam(':ville',           	$PARAM['VILLE']);
			$requete->bindParam(':login',           	$PARAM['LOGIN']);
			$requete->bindParam(':pass',            	$PARAM['PASS']);
			$requete->execute();
			break; 


Si tu peux essayer de m'aider il y a trop longtemps que je galère avec ça.
En te remerciant infiniment.
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
Bonjour
J'ai fait ma requète qui me parait bien mais pourquoi elle ne fonctionne pas?
pouvez vous m'aider s'ils vous plait.
je vous remercie

	$sql = "SELECT tb_gestion_admin.id_gestion_admin, tb_gestion_adherent.nom, tb_categorie_statut.categorie_statut
FROM tb_gestion_admin
INNER JOIN tb_gestion_adherent
ON tb_gestion_admin.rid_adherent = tb_gestion_adherent.id_adherent 
INNER JOIN tb_categorie_statut
ON tb_gestion_admin.rid_categorie_statut = tb_categorie_statut.id_categorie_statut";
	$requete = $bdd->prepare($sql);							
	$requete->execute();
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
Bonjour,
Quelqu'un peut il m'aider s'ils vous plait, je suis vraiment désespéré.
Merci beaucoup
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
Bonjour
J'ai créé cette requète SQL dans phpMyAdmin et ça me dit "MySQL n'a retourné aucune ligne"
Par contre le membre est bien ajouté dans ma table mais au niveau SELECT aucune jointure n'est prise en compte, je ne sais pas pourquoi si vous pouvez avoir la gentillesse de me donner votre avis.
En vous remerciant par avance.


INSERT INTO tb_gestion_adherent (civilite, nom, prenom)
VALUES ('', 'AATRUC', 'Pierre');

SELECT tb_gestion_adherent.civilite, tb_gestion_adherent.nom, tb_gestion_adherent.prenom
FROM tb_gestion_admin
INNER JOIN tb_gestion_adherent
ON tb_gestion_admin.rid_adherent = tb_gestion_adherent.id_adherent 
INNER JOIN tb_categorie_statut
ON tb_gestion_admin.rid_categorie_statut = 'User';