rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Insertion de données provenant de +ieurs tabl

Posté par monaa, le mercredi 15 août 2007 à 20:20:23
bjr a ts
je voudrais insérer des données ds plusieurs tables mysql a partir d'un formulaire , j'ai vu un exemple sur le net , c'est fesable uniquement pour 2 tables pas +, je coince pr insrer ts mes données , avez vs des exemples ou des liens web évocant un exemple avec +ieurs tables liés par des contraintes d'intégrité, la techno PDO serait elle + intéressente que de travailler normalement ??
merçi a ts
Configuration: Linux
Firefox 1.0.4
Répondre à monaa  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
rebel29270, le mercredi 15 août 2007 à 21:19:41
je ne suis pas sur d'avoir compris ta question mais voila ...

t'en exécute plusieurs à la suite:
http://fr.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());
?>
Répondre à rebel29270

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
monaa, le samedi 18 août 2007 à 21:12:32
le pb se pose car mes tables sont toutes liées entre elles, par ex : j'ai une table article et une table auteur , ils sont ts les 2 liés par une table intémédiare article_auteur qui contient la clé des 2
je ne sais pas comment gérer ca
mrçi
bon week end
Répondre à monaa

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
rebel29270, le samedi 18 août 2007 à 22:14:39
tu rempli dabor article en suite auteur et puis la table intermédiaire ..

et voila..
Répondre à rebel29270

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
monaa, le lundi 20 août 2007 à 13:52:40
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
Répondre à monaa

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Dalida, le lundi 20 août 2007 à 13:59:04
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.
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')" )
[ Mathieu ]
Il y a surement des pandas pour ne dépendre de rien
Répondre à Dalida

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
monaa, le lundi 20 août 2007 à 15:50:04
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
Répondre à monaa

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
monaa, le lundi 20 août 2007 à 15:54:32
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;
Répondre à monaa

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Dalida, le lundi 20 août 2007 à 15:57:25
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 ?
[ Mathieu ]
Il y a surement des pandas pour ne dépendre de rien
Répondre à Dalida

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
monaa, le lundi 20 août 2007 à 16:05:38
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>
Répondre à monaa

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Dalida, le lundi 20 août 2007 à 16:19:11
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."
[ Mathieu ]
Il y a surement des pandas pour ne dépendre de rien
Répondre à Dalida

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
monaa, le lundi 20 août 2007 à 15:17:57
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
Répondre à monaa
Logiciels pertinents trouvés dans les téléchargements
Télécharger Tables multimédia  1,0Tables multimédia - En général les enfants ont tendance à ne pas vouloir étudier et les parents perdent parfois patience à leur apprendre. Peut...Catégorie: Bureautique
Licence: Freeware/gratuit
Télécharger Tablane Browser  1.8.1Tablane Browser - Voulez vous trouver, capturer, créer, signer et partager un contenu d'une manière rapide, efficace et sûre ? Voulez vous...Catégorie: Navigateurs
Licence: Freeware/gratuit
Télécharger Easy Office 1.1.1Easy Office - EasyOffice est une suite bureautique multilingue (Anglais et allemand seulement) possédant une interface graphique très...Catégorie: Suite bureautique
Licence: Freeware/gratuit
Télécharger OpenOffice.org 2.4.1OpenOffice.org - OpenOffice est une suite bureautique complète entièrement gratuite, compatible avec la suite Microsoft Office. Elle...Catégorie: Suite bureautique
Licence: Open Source
Plus de logiciels gratuits sur « insertion de données provenant de +ieurs tabl »