Insertion de données provenant de +ieurs tabl
Fermé
monaa
-
15 août 2007 à 20:20
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 20 août 2007 à 16:19
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 20 août 2007 à 16:19
A voir également:
- Insertion de données provenant de +ieurs tabl
- Insertion table des matières word - Guide
- Reinstaller windows sans perte de données - Guide
- Insertion liste déroulante excel - Guide
- Effacer les données de navigation - Guide
- Insertion signature word - Guide
5 réponses
rebel29270
Messages postés
16
Date d'inscription
mercredi 15 août 2007
Statut
Membre
Dernière intervention
30 décembre 2008
15 août 2007 à 21:19
15 août 2007 à 21:19
je ne suis pas sur d'avoir compris ta question mais voila ...
t'en exécute plusieurs à la suite:
https://www.php.net/manual/fr/function.mysql-query.php
exemple :
<?
mysql_query ('INSERT INTO `table1` ( `champ1`, `champ2`, `champ3`, `champ4`) VALUES (`val1`, `val2`, `val3`, `val4`, );') or die(mysql_error());
mysql_query ('INSERT INTO `table2` ( `champ1`, `champ2`, `champ3`, `champ4`) VALUES (`val1`, `val2`, `val3`, `val4`, );') or die(mysql_error());
mysql_query ('INSERT INTO `table3` ( `champ1`, `champ2`, `champ3`, `champ4`) VALUES (`val1`, `val2`, `val3`, `val4`, );') or die(mysql_error());
mysql_query ('INSERT INTO `table4` ( `champ1`, `champ2`, `champ3`, `champ4`) VALUES (`val1`, `val2`, `val3`, `val4`, );') or die(mysql_error());
mysql_query ('INSERT INTO `table5` ( `champ1`, `champ2`, `champ3`, `champ4`) VALUES (`val1`, `val2`, `val3`, `val4`, );') or die(mysql_error());
?>
t'en exécute plusieurs à la suite:
https://www.php.net/manual/fr/function.mysql-query.php
exemple :
<?
mysql_query ('INSERT INTO `table1` ( `champ1`, `champ2`, `champ3`, `champ4`) VALUES (`val1`, `val2`, `val3`, `val4`, );') or die(mysql_error());
mysql_query ('INSERT INTO `table2` ( `champ1`, `champ2`, `champ3`, `champ4`) VALUES (`val1`, `val2`, `val3`, `val4`, );') or die(mysql_error());
mysql_query ('INSERT INTO `table3` ( `champ1`, `champ2`, `champ3`, `champ4`) VALUES (`val1`, `val2`, `val3`, `val4`, );') or die(mysql_error());
mysql_query ('INSERT INTO `table4` ( `champ1`, `champ2`, `champ3`, `champ4`) VALUES (`val1`, `val2`, `val3`, `val4`, );') or die(mysql_error());
mysql_query ('INSERT INTO `table5` ( `champ1`, `champ2`, `champ3`, `champ4`) VALUES (`val1`, `val2`, `val3`, `val4`, );') or die(mysql_error());
?>
rebel29270
Messages postés
16
Date d'inscription
mercredi 15 août 2007
Statut
Membre
Dernière intervention
30 décembre 2008
18 août 2007 à 22:14
18 août 2007 à 22:14
tu rempli dabor article en suite auteur et puis la table intermédiaire ..
et voila..
et voila..
monaa
Messages postés
102
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
23 novembre 2010
1
20 août 2007 à 13:52
20 août 2007 à 13:52
Bonjour a ts,
qd j'essaie d'executer avec wamp la requete insert ci dessous sur Mysql :
mysql_query ('INSERT INTO `article` ( `id`, `source_id`, `type_id`, `collection`,`parution`, `titre`, `acquisition`, `localisation`, `observation`, `prix`, `pertinence`, `projet` ) VALUES NULL, NULL, NULL, `$collection`,`$parution` , `$titre`,`$acquisition`, `$localisation`, `$observation`, `$prix`,`$pertinence`,`$projet`)' ) or die(mysql_error()) ;
ca m'affiche l'erreur suivante :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL, NULL, NULL, `$collection`,`$parution` , `$titre`,`$acquisition`, `$localis' at line 1
auriez vs & idée svp sur la ou ca foire?
mrçi
qd j'essaie d'executer avec wamp la requete insert ci dessous sur Mysql :
mysql_query ('INSERT INTO `article` ( `id`, `source_id`, `type_id`, `collection`,`parution`, `titre`, `acquisition`, `localisation`, `observation`, `prix`, `pertinence`, `projet` ) VALUES NULL, NULL, NULL, `$collection`,`$parution` , `$titre`,`$acquisition`, `$localisation`, `$observation`, `$prix`,`$pertinence`,`$projet`)' ) or die(mysql_error()) ;
ca m'affiche l'erreur suivante :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL, NULL, NULL, `$collection`,`$parution` , `$titre`,`$acquisition`, `$localis' at line 1
auriez vs & idée svp sur la ou ca foire?
mrçi
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
20 août 2007 à 13:59
20 août 2007 à 13:59
salut,
si 'id' est 'auto-increment' essaie d'insérer '' plutôt que 'NULL'.
tu utilises des apostrophes pour encadrer ta requête donc les variables ne sont pas interprétées, si les champs sont de type 'Date' ou numériques tu auras une erreur.
les valeurs à insérer doivent être encadrées par des apostrophes simples, pas les mêmes que pour encadrer les noms de champs.
le mieux est d'insérer une ligne avec phpMyAdmin, de récupérer la requête qu'il a généré et de t'en servir pour créer ta propre requête.
si 'id' est 'auto-increment' essaie d'insérer '' plutôt que 'NULL'.
tu utilises des apostrophes pour encadrer ta requête donc les variables ne sont pas interprétées, si les champs sont de type 'Date' ou numériques tu auras une erreur.
les valeurs à insérer doivent être encadrées par des apostrophes simples, pas les mêmes que pour encadrer les noms de champs.
le mieux est d'insérer une ligne avec phpMyAdmin, de récupérer la requête qu'il a généré et de t'en servir pour créer ta propre requête.
mysql_query ("INSERT INTO `article` ( `id`, `source_id`, `type_id`, `collection`,`parution`, `titre`, `acquisition`, `localisation`, `observation`, `prix`, `pertinence`, `projet` ) VALUES '', '', '', '$collection', '$parution' , '$titre', '$acquisition', '$localisation', '$observation', '$prix', '$pertinence', '$projet')" )
monaa
Messages postés
102
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
23 novembre 2010
1
20 août 2007 à 15:50
20 août 2007 à 15:50
bjr a ts
j'ai fait les modif , j'ai tjrs une erreur ke j'arrive pas a comprendre
voici mon code
<html>
<head>
<title>::saisie nouveau article::</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
include('connect_db.php');
$titre = htmlentities($_POST['titre']);// htmlentities pour éviter l'injection de script
$type=htmlentities($_POST['type']);
$source=htmlentities($_POST['source']);
$localisation = htmlentities($_POST['localisation']);
$projet = htmlentities($_POST['projet']);
$pertinence= htmlentities($_POST['pertinence']);
$acquisition = htmlentities($_POST['acquisition']);
$parution = htmlentities($_POST['parution']);
$resume = htmlentities($_POST['observation']);
$prix= htmlentities($_POST['prix']);
$collection = htmlentities($_POST['collection']);
$sqla="INSERT INTO `basenear`.`type` (
`id` ,nom)
VALUES (
'', '$type')";
//je récupére l'id type qui vient d etre generé
$id_type=mysql_insert_id();
mysql_query($sqla) or die('erreur sql'.$sqla.'<br>'.mysql_error());
$sqlb="INSERT INTO `basenear`.`source` (
`id` ,nom)
VALUES (
'', '$nom')";
//je récupére l'id source qui vient d etre generé
$id_source=mysql_insert_id();
mysql_query($sqlb) or die('erreur sql'.$sqlb.'<br>'.mysql_error());
//la table contenant les 2 clés étrangeres
$sql="INSERT INTO `basenear`.`article` (
`id` ,
`source_id`,
`type_id`,
`collation` ,
`parution` ,
`titre` ,
`acquisition` ,
`localisation` ,
`observation` ,
`prix` ,
`pertinence` ,
`projet`
)
VALUES (
'','$id_source','$id_type', '$collection', '$parution', '$titre', '$acquisition', '$localisation', '$observation', '$prix', '$pertinence', '$projet'
) ";
mysql_query($sql) or die('erreur sql'.$sql.'<br>'.mysql_error());
?>
</body>
</html>
j'ai un fichier forulaire_saisie.php qui contient le formulaire et un autre qui fait la connection
<?php
// Déclaration des paramètres de connexion
$host = 'localhost';
$user = 'root';
$bdd ='basenear';
$passwd = '';
// Connexion au serveur
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
?>
merçi pr votre aide
j'ai fait les modif , j'ai tjrs une erreur ke j'arrive pas a comprendre
voici mon code
<html>
<head>
<title>::saisie nouveau article::</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
include('connect_db.php');
$titre = htmlentities($_POST['titre']);// htmlentities pour éviter l'injection de script
$type=htmlentities($_POST['type']);
$source=htmlentities($_POST['source']);
$localisation = htmlentities($_POST['localisation']);
$projet = htmlentities($_POST['projet']);
$pertinence= htmlentities($_POST['pertinence']);
$acquisition = htmlentities($_POST['acquisition']);
$parution = htmlentities($_POST['parution']);
$resume = htmlentities($_POST['observation']);
$prix= htmlentities($_POST['prix']);
$collection = htmlentities($_POST['collection']);
$sqla="INSERT INTO `basenear`.`type` (
`id` ,nom)
VALUES (
'', '$type')";
//je récupére l'id type qui vient d etre generé
$id_type=mysql_insert_id();
mysql_query($sqla) or die('erreur sql'.$sqla.'<br>'.mysql_error());
$sqlb="INSERT INTO `basenear`.`source` (
`id` ,nom)
VALUES (
'', '$nom')";
//je récupére l'id source qui vient d etre generé
$id_source=mysql_insert_id();
mysql_query($sqlb) or die('erreur sql'.$sqlb.'<br>'.mysql_error());
//la table contenant les 2 clés étrangeres
$sql="INSERT INTO `basenear`.`article` (
`id` ,
`source_id`,
`type_id`,
`collation` ,
`parution` ,
`titre` ,
`acquisition` ,
`localisation` ,
`observation` ,
`prix` ,
`pertinence` ,
`projet`
)
VALUES (
'','$id_source','$id_type', '$collection', '$parution', '$titre', '$acquisition', '$localisation', '$observation', '$prix', '$pertinence', '$projet'
) ";
mysql_query($sql) or die('erreur sql'.$sql.'<br>'.mysql_error());
?>
</body>
</html>
j'ai un fichier forulaire_saisie.php qui contient le formulaire et un autre qui fait la connection
<?php
// Déclaration des paramètres de connexion
$host = 'localhost';
$user = 'root';
$bdd ='basenear';
$passwd = '';
// Connexion au serveur
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
?>
merçi pr votre aide
monaa
Messages postés
102
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
23 novembre 2010
1
20 août 2007 à 15:54
20 août 2007 à 15:54
voici mon erreur quand je rempli mes champs du formulaire
erreur sqlINSERT INTO `basenear`.`article` ( `id` , `source_id`, `type_id`, `collation` , `parution` , `titre` , `acquisition` , `localisation` , `observation` , `prix` , `pertinence` , `projet` ) VALUES ( '','19','0', 'volume23 p26', '1930-08-20', 'les miserables', '2007-08-20', 'cl rom', '', '1', '1', 'altr' )
Cannot add or update a child row: a foreign key constraint fails (`basenear/article`, CONSTRAINT `article_ibfk_5` FOREIGN KEY (`type_id`) REFERENCES `type` (`id`) ON DELETE CASCADE)
voici ma table article :
CREATE TABLE `article` (
`id` int(10) NOT NULL auto_increment,
`source_id` int(10) NOT NULL,
`type_id` int(10) NOT NULL,
`collation` varchar(100) character set utf8 NOT NULL,
`parution` date NOT NULL,
`titre` varchar(255) character set utf8 NOT NULL,
`acquisition` date NOT NULL,
`localisation` varchar(100) character set utf8 NOT NULL,
`observation` text character set utf8 NOT NULL,
`prix` float NOT NULL,
`pertinence` int(1) NOT NULL,
`projet` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `source_id` (`source_id`),
KEY `type_id` (`type_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
table source
CREATE TABLE `source` (
`id` int(10) NOT NULL auto_increment,
`issn` varchar(20) NOT NULL,
`nom` varchar(255) character set utf8 NOT NULL,
`editeur` varchar(255) character set utf8 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
table type
CREATE TABLE `type` (
`id` int(10) NOT NULL auto_increment,
`nom` varchar(100) character set utf8 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
erreur sqlINSERT INTO `basenear`.`article` ( `id` , `source_id`, `type_id`, `collation` , `parution` , `titre` , `acquisition` , `localisation` , `observation` , `prix` , `pertinence` , `projet` ) VALUES ( '','19','0', 'volume23 p26', '1930-08-20', 'les miserables', '2007-08-20', 'cl rom', '', '1', '1', 'altr' )
Cannot add or update a child row: a foreign key constraint fails (`basenear/article`, CONSTRAINT `article_ibfk_5` FOREIGN KEY (`type_id`) REFERENCES `type` (`id`) ON DELETE CASCADE)
voici ma table article :
CREATE TABLE `article` (
`id` int(10) NOT NULL auto_increment,
`source_id` int(10) NOT NULL,
`type_id` int(10) NOT NULL,
`collation` varchar(100) character set utf8 NOT NULL,
`parution` date NOT NULL,
`titre` varchar(255) character set utf8 NOT NULL,
`acquisition` date NOT NULL,
`localisation` varchar(100) character set utf8 NOT NULL,
`observation` text character set utf8 NOT NULL,
`prix` float NOT NULL,
`pertinence` int(1) NOT NULL,
`projet` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `source_id` (`source_id`),
KEY `type_id` (`type_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
table source
CREATE TABLE `source` (
`id` int(10) NOT NULL auto_increment,
`issn` varchar(20) NOT NULL,
`nom` varchar(255) character set utf8 NOT NULL,
`editeur` varchar(255) character set utf8 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
table type
CREATE TABLE `type` (
`id` int(10) NOT NULL auto_increment,
`nom` varchar(100) character set utf8 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
20 août 2007 à 15:57
20 août 2007 à 15:57
oulaaa ! j'ai pas travaillé avec des contraintes de clé étrangère depuis belle lurette, moi...
il faut que l'enregistrement en question existe dans la table 'source', est-ce le cas ?
il faut que l'enregistrement en question existe dans la table 'source', est-ce le cas ?
monaa
Messages postés
102
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
23 novembre 2010
1
>
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
20 août 2007 à 16:05
20 août 2007 à 16:05
wi jpense car je récupére les memes 2 id que j'insére ds la table article ou ya les clés étrangéres
<html>
<head>
<title>::saisie nouveau article::</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
include('connect_db.php');
$titre = htmlentities($_POST['titre']);// htmlentities pour éviter l'injection de script
$type=htmlentities($_POST['type']);
$source=htmlentities($_POST['source']);
$localisation = htmlentities($_POST['localisation']);
$projet = htmlentities($_POST['projet']);
$pertinence= htmlentities($_POST['pertinence']);
$acquisition = htmlentities($_POST['acquisition']);
$parution = htmlentities($_POST['parution']);
$resume = htmlentities($_POST['observation']);
$prix= htmlentities($_POST['prix']);
$collection = htmlentities($_POST['collection']);
$sqla="INSERT INTO `basenear`.`type` (
`id` ,nom)
VALUES (
'', '$type')";
//je récupére l'id type qui vient d etre generé
$id_type=mysql_insert_id(); //ICI
mysql_query($sqla) or die('erreur sql'.$sqla.'<br>'.mysql_error());
$sqlb="INSERT INTO `basenear`.`source` (
`id` ,nom)
VALUES (
'', '$nom')";
//je récupére l'id source qui vient d etre generé // ET ICI
$id_source=mysql_insert_id();
mysql_query($sqlb) or die('erreur sql'.$sqlb.'<br>'.mysql_error());
//la table contenant les 2 clés étrangeres
$sql="INSERT INTO `basenear`.`article` (
`id` ,
`source_id`,
`type_id`,
`collation` ,
`parution` ,
`titre` ,
`acquisition` ,
`localisation` ,
`observation` ,
`prix` ,
`pertinence` ,
`projet`
)
VALUES (
'', '$id_source','$id_type', '$collection', '$parution', '$titre', '$acquisition', '$localisation', '$observation', '$prix', '$pertinence', '$projet'
) ";
mysql_query($sql) or die('erreur sql'.$sql.'<br>'.mysql_error());
?>
</body>
</html>
<html>
<head>
<title>::saisie nouveau article::</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
include('connect_db.php');
$titre = htmlentities($_POST['titre']);// htmlentities pour éviter l'injection de script
$type=htmlentities($_POST['type']);
$source=htmlentities($_POST['source']);
$localisation = htmlentities($_POST['localisation']);
$projet = htmlentities($_POST['projet']);
$pertinence= htmlentities($_POST['pertinence']);
$acquisition = htmlentities($_POST['acquisition']);
$parution = htmlentities($_POST['parution']);
$resume = htmlentities($_POST['observation']);
$prix= htmlentities($_POST['prix']);
$collection = htmlentities($_POST['collection']);
$sqla="INSERT INTO `basenear`.`type` (
`id` ,nom)
VALUES (
'', '$type')";
//je récupére l'id type qui vient d etre generé
$id_type=mysql_insert_id(); //ICI
mysql_query($sqla) or die('erreur sql'.$sqla.'<br>'.mysql_error());
$sqlb="INSERT INTO `basenear`.`source` (
`id` ,nom)
VALUES (
'', '$nom')";
//je récupére l'id source qui vient d etre generé // ET ICI
$id_source=mysql_insert_id();
mysql_query($sqlb) or die('erreur sql'.$sqlb.'<br>'.mysql_error());
//la table contenant les 2 clés étrangeres
$sql="INSERT INTO `basenear`.`article` (
`id` ,
`source_id`,
`type_id`,
`collation` ,
`parution` ,
`titre` ,
`acquisition` ,
`localisation` ,
`observation` ,
`prix` ,
`pertinence` ,
`projet`
)
VALUES (
'', '$id_source','$id_type', '$collection', '$parution', '$titre', '$acquisition', '$localisation', '$observation', '$prix', '$pertinence', '$projet'
) ";
mysql_query($sql) or die('erreur sql'.$sql.'<br>'.mysql_error());
?>
</body>
</html>
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
>
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
20 août 2007 à 16:19
20 août 2007 à 16:19
oui évidement y avait qu'à lire...
mais comme je répond au 6 sur le 7... bref !
est-ce que tu as regardé la doc de MySQL ?
morceau choisi :
"Les deux tables doivent être de type InnoDB, dans la table, il doit y avoir un INDEX où les clés étrangères sont listées comme première colonne, dans le même ordre, et dans la table référencée, il doit y avoir un INDEX où les colonnes référencées sont listées comme premières colonnes, dans le même ordre. Les préfixes d'index ne sont pas supportés pour les clés de contrainte."
mais comme je répond au 6 sur le 7... bref !
est-ce que tu as regardé la doc de MySQL ?
morceau choisi :
"Les deux tables doivent être de type InnoDB, dans la table, il doit y avoir un INDEX où les clés étrangères sont listées comme première colonne, dans le même ordre, et dans la table référencée, il doit y avoir un INDEX où les colonnes référencées sont listées comme premières colonnes, dans le même ordre. Les préfixes d'index ne sont pas supportés pour les clés de contrainte."
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
monaa
Messages postés
102
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
23 novembre 2010
1
20 août 2007 à 15:17
20 août 2007 à 15:17
bjr, j'ai testé ma requete sous phpmyadmin sur une table qui contient des clés étrangées
y'a t'il un moyen pour faire abstraction de ces clés
INSERT INTO `basenear`.`article` (
`id` ,
`source_id` ,
`type_id` ,
`collation` ,
`parution` ,
`titre` ,
`acquisition` ,
`localisation` ,
`observation` ,
`prix` ,
`pertinence` ,
`projet`
)
VALUES (
'', '', '', 'vol20 p2', '2007-08-20', 'les misérables', '1982-08-20', 'cl littérature', 'romain de littérature francaise', '2', '2', 'sm/ld '
)
MySQL a répondu:Documentation
#1452 - Cannot add or update a child row: a foreign key constraint fails (`basenear/article`, CONSTRAINT `article_ibfk_4` FOREIGN KEY (`source_id`) REFERENCES `source` (`id`) ON DELETE CASCADE)
mrçi
y'a t'il un moyen pour faire abstraction de ces clés
INSERT INTO `basenear`.`article` (
`id` ,
`source_id` ,
`type_id` ,
`collation` ,
`parution` ,
`titre` ,
`acquisition` ,
`localisation` ,
`observation` ,
`prix` ,
`pertinence` ,
`projet`
)
VALUES (
'', '', '', 'vol20 p2', '2007-08-20', 'les misérables', '1982-08-20', 'cl littérature', 'romain de littérature francaise', '2', '2', 'sm/ld '
)
MySQL a répondu:Documentation
#1452 - Cannot add or update a child row: a foreign key constraint fails (`basenear/article`, CONSTRAINT `article_ibfk_4` FOREIGN KEY (`source_id`) REFERENCES `source` (`id`) ON DELETE CASCADE)
mrçi
18 août 2007 à 21:12
je ne sais pas comment gérer ca
mrçi
bon week end