Rechercher : dans
Par :

PHP MYSQL enregistré une requete dans 2 table

Dernière réponse le 12 mar 2009 à 20:23:29 pro, le 12 mar 2009 à 14:22:20 
 Signaler ce message aux modérateurs

Bonjour,

comment est-ce que je peut enregistrer un formulaire dans 2 tables différentes ??????? (en php mysql)
enfaite j'ai un form, et les infos sont enregistrer dans la table D, et je veu ossi ke ces infos soi enregistrer dans la table P
voila ce que j'ai fai et sa enregistrer seulement dans la table D.
SACHANT AUSSI QUE DANS LA TABLE D , IL Y A UN CHAMP "ID" QUI AUTOINCREMENTER DONC CETTE "ID" DOIT AUSSI ETRE ENREGISTRER DANS LA TABLE P (champ numdevis)

// on écrit la requête sql
$sql = "INSERT INTO D(civilite, nom, adresse, cp, ville, mail, statut, travaux, comment) VALUES('$civilite', '$nom', '$adresse', '$codepostal', '$ville', '$email', '$vous', '$interets', '$comments')";

// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

// on écrit la requête sql
$sql2 = "INSERT INTO P(civilite, nom, mail, devis, numdevis) VALUES('$civilite','$nom','$email','oui',?????)";

// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

Configuration: Windows Vista
Internet Explorer 7.0

1

elanore31, le 12 mar 2009 à 14:28:36

Dernière ligne de ton code que tu as posté :
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
il faut que tu remplace par :
mysql_query($sql2) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
car c'est la deuxième requete que tu veux executer la deuxième fois pas la premiere

Répondre à elanore31

2

elanore31, le 12 mar 2009 à 14:30:49

Et en plus j'écris des bétises !!
remplace plutot par çà
mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error());

Répondre à elanore31

3

atspinto, le 12 mar 2009 à 14:37:51

Si je comprend bien le truc... et ke je ne me trompes... tu veux bien une coherence entre les enregistrements des 2 tables...
- donc P dépend de D
- et les 2 doivent exister à la fois : D et P exist à la fois ???

share your knowledge

Répondre à atspinto

4

pro, le 12 mar 2009 à 14:42:14

Ouui c'est bien ca aspinto

merci elanor je vais testé

Répondre à pro

5

atspinto, le 12 mar 2009 à 14:46:50

Ok elanore 31 à raison...

Mais ke faire si la 2e ne marche pas, sachant ke la 1ere a marché impec....

Fo plutot faire une transaction... mais pour le faire, il fo ke ton serveur mySQL supporte le moteur INNODB...
ça ira si tu as au moins MySQL 4.0, te ke tes tables soient de ce type


mysql_query("BEGIN"); // debut transaction
if (operation_1 && operation_2) // si succès aux 2 executions
mysql_query("COMMIT"); // validation de la transaction
else // sinon
mysql_query("ROLLBACK"); // annulation des enregistrements
share your knowledge

Répondre à atspinto

6

pro, le 12 mar 2009 à 14:57:56

Merci de vos rep sa marche le truk d'elanor jvien de me rendre compte de l'erreur ^^
et j'avai une otre question, dans la premiere table D, il ya un ID qui s'autoincrémente, je voudrais que l'ID qui est attribué dans la table D soit aussi enregistrer dans le champ num de la table P

jespère ne pas etre tro complexe ^^

Répondre à pro

7

atspinto, le 12 mar 2009 à 15:07:15

Lis ça http://mysql.developpez.com/...

ça te permettra de recuperer le dernier ID de D

et tu l'utiliseras pr P share your knowledge

Répondre à atspinto

8

pro, le 12 mar 2009 à 15:20:38

Ok je viens de voir le site donc si jai bien compri c'est la fonction LAST_ID_INSERT
mais je n'arrive pas a la faire fonctionner :


// on écrit la requête sql
$sql = "INSERT INTO S(civilite, nom, adresse, cp, ville, mail, statut, travaux, comment) VALUES('$civilite', '$nom', '$adresse', '$codepostal', '$ville', '$email', '$vous', '$interets', '$comments')";

// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

$mysql_id = mysql_query("SELECT LAST_INSERT_ID()");

// on écrit la requête sql
$sql2 = "INSERT INTO P(civilite, nom, mail, devis, numdevis) VALUES('$civilite','$nom','$email','oui','$mysql_id')";

// on insère les informations du formulaire dans la table
mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error());

Répondre à pro

9

atspinto, le 12 mar 2009 à 15:42:22

Ouais... je viens de l'utiliser, ça marche pas... mais lis ceci http://dev.mysql.com/doc/refman/5.0/fr/mysql-insert-id.html

essayes celle de PHP direct : mysql_insert_id() http://fr.php.net/mysql_insert_id

si ça march tjrs pas... fais le savoir... share your knowledge

Répondre à atspinto

10

pro, le 12 mar 2009 à 15:54:28

Mais comment j'utilise cette fonction dans mon cas ??

Répondre à pro

12

 atspinto, le 12 mar 2009 à 20:23:29

Sorry...
je viens de faire ce test et il marche...

Ma table essai : id (int auto_increment, primary key), num int ;

<?php
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
die('Impossible de se connecter : ' . mysql_error());
}
mysql_select_db('_essai');

mysql_query("INSERT INTO essai (num) values ('4')") or die(mysql_error());
printf("Le dernier ID inséré dans est le id %d\n", mysql_insert_id());
?>

avec mysql_insert_id() tu recuperes ton ID autoincrement without pb...

Je l'ai lu sur ce lien.. http://fr.php.net/mysql_insert_id

fais le, et fais le savoir...
share your knowledge

Répondre à atspinto
Collection CommentÇaMarche.net