Problème d'enregistrement dans mes tables de liaison

ViPHP
pjl
ViPHP | 2119 Messages

18 juil. 2005, 11:53

Y a t'il un moyen pour vérifié les correspondances entre les tables pour chaque enregistrement ?
Si comme je l'avais dit, tu avais fait MON étape 2 avant le formulaire de saisie, tu n'aurais pas ce PB, et en plus tu ferrais beaucoup plus facilement ta page d'insertion.

Eléphant du PHP | 174 Messages

18 juil. 2005, 17:03

va voir ce lien je ne t'ai pas vu dessus pjl :wink:
http://www.phpfrance.com/forums/voir_su ... texte-.php

ViPHP
pjl
ViPHP | 2119 Messages

18 juil. 2005, 17:10

effectivement, je ne l'ai pas vu.
Modifié en dernier par pjl le 19 juil. 2005, 21:23, modifié 1 fois.

Eléphant du PHP | 174 Messages

18 juil. 2005, 20:01

Y a t'il quelqu'un pour me proposer une solution ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

18 juil. 2005, 20:19

je t'ai réexpliqué dans mon dernier message et je t'ai proposé des solutions sur la page précédente

ViPHP
pjl
ViPHP | 2119 Messages

18 juil. 2005, 21:31

Y a t'il quelqu'un pour me proposer une solution ?
Ben, j'ai posé une question dans le fil cité au dessus et je n'ai pas de réponse.

Eléphant du PHP | 174 Messages

18 juil. 2005, 21:35

si "bandes" et "modes" sont vides, c'est de ta faute, tu dois au préalable (une fois et une seule) les remplir avec les modes et bandes disponibles (donc remplir modes avec phonie, télégraphie et l'autre dont je ne me rappelle plus, ce qui te feras 3 lignes dans la table modes)
Si je comprend bien le système :lol:
exemple ma table mode dois ressembler à celà :

id_mode - mode
1 phonie
2 télégraphie
3 mode_digitaux

pour ma table bande
id_bande - bande - mesure
1 160 m
2 80 m
3 40 m
4 30 m
5 20 m
6 17 m
7 15 m
8 12 m
9 10 m
10 6 m
11 2 m

C'est à moi de les remplir au débuts et elle ne seront plus remplis par la suite.
Dois je ajouter toute les possibiltés ?
ex:

id_mode - mode
1 phonie
2 télégraphie
3 mode_digitaux
4 phonie, télégraphie
5 phonie, mode_digitaux
6 télégraphie, mode_digitaux
7 phonie, télégraphie, mode_digitaux

Eléphant du PHP | 174 Messages

18 juil. 2005, 22:22

de pjl :
Ben, j'ai posé une question dans le fil cité au dessus et je n'ai pas de réponse. A quoi servent-elles pour toi ?
Réponse de ouckileou :
mysql_insert_id() ne doit te servir que pour obtenir $id_concours

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

18 juil. 2005, 23:21

si "bandes" et "modes" sont vides, c'est de ta faute, tu dois au préalable (une fois et une seule) les remplir avec les modes et bandes disponibles (donc remplir modes avec phonie, télégraphie et l'autre dont je ne me rappelle plus, ce qui te feras 3 lignes dans la table modes)
Si je comprend bien le système :lol:
exemple ma table mode dois ressembler à celà :

id_mode - mode
1 phonie
2 télégraphie
3 mode_digitaux

pour ma table bande
id_bande - bande - mesure
1 160 m
2 80 m
3 40 m
4 30 m
5 20 m
6 17 m
7 15 m
8 12 m
9 10 m
10 6 m
11 2 m

C'est à moi de les remplir au débuts et elle ne seront plus remplis par la suite.
c'est bon jusque là
Dois je ajouter toute les possibiltés ?
ex:

id_mode - mode
1 phonie
2 télégraphie
3 mode_digitaux
4 phonie, télégraphie
5 phonie, mode_digitaux
6 télégraphie, mode_digitaux
7 phonie, télégraphie, mode_digitaux
et non, on y était presque c'est dommage :(

franchement, je me demande si tu lis vraiment ce qu'on écrit, tu as déjà posé cette question/fais cette erreur et je t'ai déjà répondu, et donné plusieurs exemples... et jamais je n'ai mis toutes les propositions

tu n'entres qu'une seule fois chaque proposition :
1 | phonie
2 | télégraphie
3 | mode_digitaux
et STOOOOOOOOP

si 1 concours ne pouvait avoir que 1 et 1 seul mode, tu aurais ce schéma

Code : Tout sélectionner

Concours ----------- id_concours id_mode -----> clé étrangère vers id_mode Modes ------- id_mode libelle_mode
si 1 concours peut posséder 1 ou n modes (n = plusieurs), on a ce schéma :

Code : Tout sélectionner

Concours ---------- id_concours Concours_modes (relation) -------------------- id_concours ---> clé étrangère vers concours.id_concours id_mode -------> clé étrangère vers modes.id_mode Modes ------- id_mode libelle_mode
je dois être un mauvais prof et atteindre mes limites car je ne vois vraiment plus comment t'expliquer par ce forum... je comprend que ça ne soit pas évident au premier abord mais là pourtant ça me parait accessible après toutes les infos qu'on t'a donné

Eléphant du PHP | 174 Messages

18 juil. 2005, 23:46

Concours
----------
id_concours

Concours_modes (relation)
--------------------
id_concours ---> clé étrangère vers concours.id_concours
id_mode -------> clé étrangère vers modes.id_mode

Modes
-------
id_mode
libelle_mode
Je suis sur ce schéma là

Code : Tout sélectionner

$query_string="INSERT INTO concours (nom, mois, dmois, report, lien, info) VALUES ('$nom', '$mois', '$dmois', '$report', '$lien', '$info')"; $query=mysql_query($query_string); $id_concours = mysql_insert_id(); $query_string="INSERT INTO concours_bande (id_concours, bande) VALUES ('$id_concours', '$bande')"; $query=mysql_query($query_string); $query_string="INSERT INTO concours_mode (id_concours, mode) VALUES ('$id_concours', '$mode')"; $query=mysql_query($query_string);
normalement le code ci-dessus correspond
à celà (mais rien):

> tu insère le concours
-> tu récupères l'identifiant du concours créé : disons 5

-> tu insères dans concours_mode une ligne 5|1
qui va donc relier le concours n°5 au mode n°1
tu sais donc maintenant que le concours numéro 5 est de mode "phonie"

Eléphant du PHP | 174 Messages

18 juil. 2005, 23:59

OK COOL ...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

19 juil. 2005, 00:30

d'où viennent $mode et $bande ?
est-ce que tu nommes correctement tes colonnes dans la requête ?
est-ce que tu affiches les erreurs MySQL pour les requêtes qui posent problème ?
commence avec mode uniquement, tu rajouteras bande après
$query_string="INSERT INTO concours (nom, mois, dmois, report, lien, info) VALUES ('$nom', '$mois', '$dmois', '$report', '$lien', '$info')";
$query=mysql_query($query_string) or die(mysql_error());

$id_concours = mysql_insert_id();

$query_string="INSERT INTO concours_bande (id_concours, bande) VALUES ('$id_concours', '$bande')";
$query=mysql_query($query_string) or die(mysql_error());

$query_string="INSERT INTO concours_mode (id_concours, mode) VALUES ('$id_concours', '$mode')";
$query=mysql_query($query_string) or die(mysql_error());
OK COOL ...
qu'est-ce que ça veut dire ça ?

Eléphant du PHP | 174 Messages

19 juil. 2005, 09:37

$mode et $bande proviennent de mon formulaire.php
est-ce que tu nommes correctement tes colonnes dans la requête ?
Oui
est-ce que tu affiches les erreurs MySQL pour les requêtes qui posent problème ?
Non
commence avec mode uniquement, tu rajouteras bande après
OK

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

19 juil. 2005, 09:44

alors affiche les erreurs ;)

vérifie aussi que tu récupères bien tes variables avec des echos de contrôle

je te demandais pour les noms de colonnes car tu insères dans "id_concours, bande" alors que pendant longtemps la table concours_bande était composé de "id_concours, id_bande" sur tes schémas il me semble

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

19 juil. 2005, 09:47

Un peu de rigueur et de méthode que Diable !
Et à l'avenir consulte l'article "ça marche pas !" de PHPDebutant...