Insérer des données avec un champ FK
Résolu/Fermé
A voir également:
- Insérer des données avec un champ FK
- Insérer signature word - Guide
- Insérer liste déroulante excel - Guide
- Insérer une vidéo dans powerpoint - Guide
- Insérer table des matières word - Guide
- Insérer filigrane word - Guide
10 réponses
jee pee
Messages postés
40214
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
18 septembre 2024
9 332
18 août 2013 à 09:48
18 août 2013 à 09:48
Dans ton formulaire tu n'as pas de champ nommé 'progs_id_progs' comment veux tu initialiser :
$prog=$_POST['progs_id_progs'];
$prog=$_POST['progs_id_progs'];
jee pee
Messages postés
40214
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
18 septembre 2024
9 332
Modifié par jee pee le 17/08/2013 à 16:15
Modifié par jee pee le 17/08/2013 à 16:15
Bonjour,
La logique d'une liste déroulante dont la clé est un id et où l'on souhaite afficher le libellé en clair, c'est que lors de la constitution de la liste déroulante (donc le php qui fait le select dans la table des valeurs de "programmation"), il faut conserver l'id, caché qui sera renvoyé par le formulaire.
La syntaxe du html généré par le php doit être comme :
Si l'utilisateur choisi java, c'est l'id, 3, qui est envoyé vers la page chargée de l'écriture dans la base.
cdlt
☮ Un étranger, c'est un ami qu'on n'a pas encore rencontré.
La logique d'une liste déroulante dont la clé est un id et où l'on souhaite afficher le libellé en clair, c'est que lors de la constitution de la liste déroulante (donc le php qui fait le select dans la table des valeurs de "programmation"), il faut conserver l'id, caché qui sera renvoyé par le formulaire.
La syntaxe du html généré par le php doit être comme :
<select name="programmation"> <option></option> <option value=1>php <option value=2>asp <option value=3>java </select>
Si l'utilisateur choisi java, c'est l'id, 3, qui est envoyé vers la page chargée de l'écriture dans la base.
cdlt
☮ Un étranger, c'est un ami qu'on n'a pas encore rencontré.
Utilisateur anonyme
17 août 2013 à 16:58
17 août 2013 à 16:58
Salut,
Merci pour ta réponse.
Niveau HTML je gère mais c'est plus lors de l'envoi du formulaire.
Dans mon <option> j'ai
Et c'est cet ID que je souhaite ensuite envoyer dans un champ d'une autre table qui n'attend que l'ID "id_progs".
Mon problème concerne l'ajout de cet ID dans une autre table.
Dans mon formulaire de traitement, j'ai des données classiques que j'ajoute comme ceci :
C'est après que ça coince... J'ai essayé des tas de combinaisons mais rien à faire, ça marche pas !
Une piste..?
Merci pour ta réponse.
Niveau HTML je gère mais c'est plus lors de l'envoi du formulaire.
Dans mon <option> j'ai
<option value=" <?php echo $donnees['id_progs']; ?>" name="prog" id="prog"> <?php echo $donnees['prog']; ?></option>
Et c'est cet ID que je souhaite ensuite envoyer dans un champ d'une autre table qui n'attend que l'ID "id_progs".
Mon problème concerne l'ajout de cet ID dans une autre table.
Dans mon formulaire de traitement, j'ai des données classiques que j'ajoute comme ceci :
$titre1=$_POST['titre1']; $titre2=$_POST['titre2'];
C'est après que ça coince... J'ai essayé des tas de combinaisons mais rien à faire, ça marche pas !
$prog=$data['prog']; $req = "INSERT INTO etats_films VALUES((SELECT id_progs FROM etats_films INNER JOIN progs ON etats_films.progs_id_progs = progs.id_progs WHERE prog = $prog )'$titre1','$titre2', '$fk_id_progs' )";
Une piste..?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jee pee
Messages postés
40214
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
18 septembre 2024
9 332
17 août 2013 à 17:40
17 août 2013 à 17:40
Si ta liste de valeur est bien faite comme j'ai indiqué plus haut, tu dois récupérer l'id de prog comme les titres:
$titre1=$_POST['titre1'];
$titre2=$_POST['titre2'];
$prog=$_POST['prog'];
et l'insert est tout simple VALUES('$titre1','$titre2', '$prog' )";
$titre1=$_POST['titre1'];
$titre2=$_POST['titre2'];
$prog=$_POST['prog'];
et l'insert est tout simple VALUES('$titre1','$titre2', '$prog' )";
Utilisateur anonyme
17 août 2013 à 18:23
17 août 2013 à 18:23
Et bien je bloque toujours au moment de l'INSERT :
J'ai une erreur de contrainte et mes recherches sur cette erreur n'ont pas abouties...
J'ai une erreur de contrainte et mes recherches sur cette erreur n'ont pas abouties...
Error: Cannot add or update a child row: a foreign key constraint fails ('gest_films'.'etats_films', CONSTRAINT 'fk_etats_films_progs' FOREIGN KEY ('progs_id_progs') REFERENCES 'progs' ('id_progs') ON DELETE NO ACTION ON UPDATE NO ACTION)
abdoul mounaf
Messages postés
6
Date d'inscription
samedi 17 août 2013
Statut
Membre
Dernière intervention
22 août 2013
17 août 2013 à 23:51
17 août 2013 à 23:51
Salut Paul, j'ai aussi le même problème. si tu as eux la solutions s'il te plaie il faut la postée
Merci
Merci
jee pee
Messages postés
40214
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
18 septembre 2024
9 332
Modifié par jee pee le 17/08/2013 à 19:10
Modifié par jee pee le 17/08/2013 à 19:10
En cas de difficultés il faut décomposer ;-)
1/ tu vas faire un insert à la main (je ne connais pas mysql donc je ne sais pas avec quel outil) INSERT INTO etats_films VALUES('Titre 1','Titre 2', 1234)
1234 doit être une vraie valeur existant dans la table prog
Pour voir si le problème ne vient pas de la définition de structure des tables
2/ Tu vas remplacer le source appelé par le formulaire par celui ci
Pour voir si tu récupères bien la valeur de l'id souhaité. Tu devrais avoir la valeur qui tu as mis pour le 1234 du 1/
☮ Un étranger, c'est un ami qu'on n'a pas encore rencontré.
1/ tu vas faire un insert à la main (je ne connais pas mysql donc je ne sais pas avec quel outil) INSERT INTO etats_films VALUES('Titre 1','Titre 2', 1234)
1234 doit être une vraie valeur existant dans la table prog
Pour voir si le problème ne vient pas de la définition de structure des tables
2/ Tu vas remplacer le source appelé par le formulaire par celui ci
==== aff.php <?php $titre1=$_POST['titre1']; $titre2=$_POST['titre2']; $prog=$_POST['prog']; echo $titre1, "<br />"; echo $titre2 , "<br />"; echo $prog , "<br />"; ?>
Pour voir si tu récupères bien la valeur de l'id souhaité. Tu devrais avoir la valeur qui tu as mis pour le 1234 du 1/
☮ Un étranger, c'est un ami qu'on n'a pas encore rencontré.
Utilisateur anonyme
18 août 2013 à 03:21
18 août 2013 à 03:21
Bien pensé ! Ca m'a aidé à y voir plus clair du coup.
Alors avec les 2 méthodes, ça marche nickel !
En revanche, dès que je remet mon code, toujours même erreur de contrainte !
Je pense que j'ai une erreur de transmission de données entre mon formulaire et ma page d'envoi dans la BDD.
Quand je transmets mes données et que je les affiches, je ne vois que mes 2 inputs texte
Le champ sélectionné de ma liste déroulante n'apparait pas..!
Problème de variable ou de nom ?
Voici mon formulaire :
Et ma page d'envoi :
Une idée sur un paramètre que je néglige ?
Merci :-)
Alors avec les 2 méthodes, ça marche nickel !
En revanche, dès que je remet mon code, toujours même erreur de contrainte !
Je pense que j'ai une erreur de transmission de données entre mon formulaire et ma page d'envoi dans la BDD.
Quand je transmets mes données et que je les affiches, je ne vois que mes 2 inputs texte
$titre1et
$titre2
Le champ sélectionné de ma liste déroulante n'apparait pas..!
Problème de variable ou de nom ?
Voici mon formulaire :
<select name="prog" id="prog"> <?php $prog = $bdd->query('SELECT id_progs, prog FROM progs'); while ($donnees = $prog->fetch()) { ?> <option value=" <?php echo $donnees['id_progs']; ?>" name="id_progs" id="id_progs"> <?php echo $donnees['prog']; ?></option> <?php } $prog->closeCursor(); ?> </select>
Et ma page d'envoi :
<?php include "config.php"; ?> <?php $titre_film=$_POST['titre_film']; $titre_dcp=$_POST['titre_dcp']; $prog=$_POST['progs_id_progs']; $req = "INSERT INTO etats_films (titre_film, titre_dcp, progs_id_progs) VALUES('$titre_film','$titre_dcp','$progs_id_progs')"; mysql_query($req); ?>
Une idée sur un paramètre que je néglige ?
Merci :-)
jee pee
Messages postés
40214
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
18 septembre 2024
9 332
18 août 2013 à 09:34
18 août 2013 à 09:34
Ce doit donc être le format de ta liste.
Quand on travaille avec un langage comme le php, qui génère le html envoyé au navigateur, il faut regarder ce code html généré.
Avec firefox un clic droit sur la page + code source de la page
Quand on travaille avec un langage comme le php, qui génère le html envoyé au navigateur, il faut regarder ce code html généré.
Avec firefox un clic droit sur la page + code source de la page
Utilisateur anonyme
19 août 2013 à 19:38
19 août 2013 à 19:38
Héhé !! Quel blaireau... Je prenais le name du
Ca marche donc super bien !
Je pensais que c'était beaucoup plus compliqué que ça les champs FK... En fait non ^^
Merci de ta précieuse aide :-)
<select>alors qu'il me fallait le name de la balise
<option>
Ca marche donc super bien !
Je pensais que c'était beaucoup plus compliqué que ça les champs FK... En fait non ^^
Merci de ta précieuse aide :-)