Formulaire multiselection

Signaler
-
Messages postés
31405
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 février 2021
-
Bonjour, les ami(e)s
je suis débutant dans le php, j'essaie de créer une application pour le gestion des courriers. et je rencontre des difficultés.

j'ai deux tables dans phpmyadmin
courriers (id, référence , expéditeur ,date,action);
action(id,N_action,libelle action) ;

dans le formulaire courrier je souhaite appliquer plusieurs actions, sans faire de réplication dans la table courrier. a l'aide d'une table jointure.
si vous pouvez m'indiquer les étapes a suivre par un petit exemple svp.

2 réponses

Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
4
Bonjour,

Insérez une ou plusieurs actions. Le INSERT c'est du mySql et n'a pas besoin de jointure....

Votre table:
action(id,N_action,libelle action) ;

est mal structurée....

devrait contenir un champ supplémentaire:
action(id,id_courrier,libelle action) ;

le premier champ id est un index auto-incrémenté
le second, id_courrier fait référence à id de votre table courrier....

Exemple, vous avez un courrier avec id = 3, vous rattachez trois actions:

action(1,3,"envoyé le 27 oct 2014") ;
action(2,3,"reçu par client le 29 oct 2014") ;
.......
action(45,3,"réponse du client le 17 nov 2014") ;



A+
Messages postés
31405
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 février 2021
344
Bonjour,


j'ai deux tables dans phpmyadmin
courriers (id, référence , expéditeur ,date,action);
action(id,N_action,libelle action) ;

phpmyadmin est un "outil" qui permet de manipuler les bases de données (mysql)...

Donc.. en fait .. tu as deux tables dans TA BASE DE DONNEES.

dans le formulaire courrier je souhaite appliquer plusieurs actions, sans faire de réplication dans la table courrier

Tu veux dire qu'un COURRIER peut avoir N ACTIONS ?

Tu as donc inversé l'emplacement de tes champs...
tu retire la colonne "action" de ta table "courrier"
tu ajoutes une colonne "id_courrier" dans ta table "action" :
courriers (id_courrier, référence , expéditeur ,date);
action(id_action,N_action,libelle action,id_courrier) ;


la jointure (pour le select se faisant donc de la façon suivante :
SELECT * 
FROM action A
LEFT JOIN courriers  C ON C.id_courrier = A.id_courrier

Cette requête te donnera toutes les actions avec.. sur la même "ligne" les informations du courrier...

Tu peux bien sûr la filtrer .. sur un courrier précis par exemple, en ajoutant un WHERE

WHERE C.id_courrier = "15"



Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane