Rechercher : dans
Par :

Sql copier valeur d'un champ id ver suatre ta

Dernière réponse le 23 fév 2009 à 11:33:34 stefanelle, le 23 fév 2009 à 10:49:01 
 Signaler ce message aux modérateurs

Bonjour,

j ai crée un formulaire permettant d inserez des données dans deux tables. et d'afficher le résultat grâce a un select sur les deux tables.

ma premiere table label à un champ id_label en auto increment

Ma deuxieme table contenu à un champ id_label qui n'est pas en auto increment

comment faire en sorte que quand j insere des valeurs via mon formaulaire dans es tables par exemple label1, reference11 artiste 1 ... l id_label de la table label se copie vers l id_label de la table contenu ?

J espere etre clair ...

je vous joins mon fichier php qui traite linsertion

Merci

<?php

include ('config.php');
include ('connexion.php');

//récupération des valeurs des champs:
//label:
$nom_label = $_POST["label"] ;
//reference:
$reference = $_POST["reference"] ;
//artiste:
$artiste = $_POST["artiste"] ;
//album:
$album = $_POST["album"] ;
//format:
$format = $_POST["format"] ;


//création de la requête SQL:
$sql1 = "INSERT INTO label (nom_label)
VALUES ( '$nom_label') " ;
$sql2 = "INSERT INTO contenu (reference, artiste, album, format)
VALUES ( '$reference', '$artiste','$album', '$format') " ;



//exécution de la requête SQL:
$requete = mysql_query($sql1) or die( mysql_error() ) ;
$requete = mysql_query($sql2) or die( mysql_error() ) ;

//affichage des résultats, pour savoir si l'insertion a marchée:
if($requete)
{
echo ("L'insertion a été correctement effectuée") ;
}
else
{
echo("L'insertion à échouée") ;
}
?>

Configuration: Indeterminable Indeterminable

1

Mikey_UFC, le 23 fév 2009 à 10:57:25

Salut,

Tu rajoutes après ton 1er mysql_query :

$id_label_insere = mysql_insert_id();

ce qui donnerait :
$sql1 = "INSERT INTO label (nom_label) VALUES ( '$nom_label') " ;
$requete = mysql_query($sql1) or die( mysql_error() ) ;
$id_label_insere = mysql_insert_id();

$sql2 = "INSERT INTO contenu (reference, artiste, album, format, id_label) VALUES ( '$reference', '$artiste','$album', '$format', $id_label_insere) " ;
$requete = mysql_query($sql2) or die( mysql_error() ) ;

Répondre à Mikey_UFC

3

stefanelle, le 23 fév 2009 à 11:06:44

Merci de ta reponse mais a ne fonctionne aps peut etre que j ai fait une erreur ...


<?php

include ('config.php');
include ('connexion.php');

//récupération des valeurs des champs:
//label:
$nom_label = $_POST["label"] ;
//reference:
$reference = $_POST["reference"] ;
//artiste:
$artiste = $_POST["artiste"] ;
//album:
$album = $_POST["album"] ;
//format:
$format = $_POST["format"] ;


//création de la requête SQL:
$sql1 = "INSERT INTO label (nom_label)
VALUES ( '$nom_label') "
$id_label_insere = mysql_insert_id();
;
$sql2 = "INSERT INTO contenu (reference, artiste, album, format)
VALUES ( '$reference', '$artiste','$album', '$format') " ;



//exécution de la requête SQL:
$requete = mysql_query($sql1) or die( mysql_error() ) ;
$requete = mysql_query($sql2) or die( mysql_error() ) ;

//affichage des résultats, pour savoir si l'insertion a marchée:
if($requete)
{
echo ("L'insertion a été correctement effectuée") ;
}
else
{
echo("L'insertion à échouée") ;
}
?>

Répondre à stefanelle

4

Psyk974, le 23 fév 2009 à 11:08:17

Tu n'as pas modifié ta deuxième requête
Psyk

Répondre à Psyk974

2

Psyk974, le 23 fév 2009 à 11:01:22

//création de la requête SQL:
$sql1 = "INSERT INTO label (nom_label)
VALUES ( '$nom_label') " ;
$max_id=mysql_insert_id();
$sql2 = "INSERT INTO contenu (id_label, reference, artiste, album, format)
VALUES ($max_id, '$reference', '$artiste','$album', '$format') " ;
Psyk

Répondre à Psyk974

5

stefanelle, le 23 fév 2009 à 11:13:02

Merci on avance car il m a affecte un id au id_label de la table contenu mais pas le bon ...

id_label table label = 253

id_label table contenu = 0

Répondre à stefanelle

6

Psyk974, le 23 fév 2009 à 11:14:56

Fais un echo sur ta variable $max_id on verra ce qu'il sort comme résultat
Psyk

Répondre à Psyk974

7

stefanelle, le 23 fév 2009 à 11:19:30

Voila ce qu il me met ....

0L'insertion a été correctement effectuée

il m affiche un 0

Répondre à stefanelle

8

Mikey_UFC, le 23 fév 2009 à 11:19:50

Il faut faire le mysql_insert_id(); après le mysql_query(); ( ce qui n'était pas le cas la 1ère fois ).

Fais attention au nom de variable et mais le même partout soit : $id_label_insere ou $max_id ou ce que tu veux d'ailleurs.

Répondre à Mikey_UFC

9

stefanelle, le 23 fév 2009 à 11:24:59

C est a dire en dessous des deux $sql desole je tatonne en php

Répondre à stefanelle

10

Mikey_UFC, le 23 fév 2009 à 11:29:27

Non, comme dans le 1er code que je t'ai donné. fait un copier coller par exemple et dis-moi si ça marche mieux.

$sql1 = "INSERT INTO label (nom_label)
 VALUES ( '$nom_label') " ;
$requete = mysql_query($sql1) or die( mysql_error() ) ;
$id_label_insere = mysql_insert_id(); // => après insertion dans la base, on récupère l'identifiant.

$sql2 = "INSERT INTO contenu (reference, artiste, album, format, id_label)
 VALUES ( '$reference', '$artiste','$album', '$format', $id_label_insere) " ;
$requete = mysql_query($sql2) or die( mysql_error() ) ;

Répondre à Mikey_UFC

11

 stefanelle, le 23 fév 2009 à 11:33:34

Super mickey tu viens de faire un heureux :-) ca amrche tres bien

je connaissais pas cette syntaxe mysql_insert_id() je l amet dans un coin de ma tete :-)

Répondre à stefanelle