php et mysql ou pdo, j'apprends mais je bloque là
Bonjour à tous !
Novice en la matière, je recherche une syntaxe MySQL ou PDO correcte, tout ce que j'ai essayé s'est traduit par des erreurs sql !
Je vous explique..
Je créé le site d'un pote qui vend des produits sur les marchés et veut le promouvoir comme permettre à ses clients de réserver (pour le moment, puis offrir une solution de paiement/commande).
Il propose des plats et des menus (à meilleurs prix car plusieurs plats).
Sachant que :
- La table produits recèle la liste des produits (reference, label, description, prix, menu) ; la colonne menu renseigne le numéro du menu (1 à 3) dont le plat fait partie ou NULL s'il ne fait pas partie d'un menu.
- La table menus recense la liste des menus (menu, label_menu, descriptif_menu, prix_menu).
- J'ai déclaré la colonne menu (présente dans chaque table) comme PRIMARY_KEY dans la table menus et dans la table produits, c'est la reference qui a la PRIMARY_KEY
- J'ai réussi à créer les menus dans la table menus avec cette syntaxe :
INSERT INTO menus VALUES ( 1, 'Menu de semaine', null, null );
(x3 en changeant le numéro de menu et le label_menu).
J'essaye de renseigner le champ descriptif_menu par la concaténation du champ label de tous les produits faisant partie du menu 1, pour le menu 1, 2 pour le menu 2 et 3 pour le menu 3.
Par exemple, le descriptif du "Menu du dimanche" (3) sera composé du label des produits ayant le champ du menu à 3, séparés par virgule-espace (d'où l'utilisation de PDO ?).
2 à 3 produits sont susceptibles d'être présents par menu.
Ensuite, et plus dur : le prix_menu est la somme des prix des produits concernés par le même numéro de menu, dans la table produits, avec une remise de 20% !
Enfin, mais c'est une autre histoire que je vais essayer de compléter par moi-même, je veux construire un formulaire qui communique avec la BDD mySQL afin de modifier un produit dans la table (label, descriptif, prix, menu), et qu'une fois changé ou retiré d'un menu, cela modifie la table menu (le descriptif_menu et le prix_menu) selon les mêmes règles.
Voulez-vous m'aider à construire ces requêtes qui sont complexes ? J'ai trouvé des tutos et des réponses dans divers forums mais qui ne correspondent pas vraiment et lorsque je les modifie, ça ne marche pas...
Réponses apportées à cette discussion
J'ai réussi à obtenir un alias :
SELECT GROUP_CONCAT( label SEPARATOR ' ' ) AS descriptif_menu
FROM produits
WHERE menu = '3'
GROUP BY menu ;
et trouvé comment l'écrire dans un champ de donnée de table :
UPDATE menus
SET descriptif_menu = (SELECT GROUP_CONCAT(label SEPARATOR ' , ') FROM produits WHERE menu = '1' GROUP BY menu)
WHERE menu = 1 ;