Bonjour, je viens de réaliser quelque chose et je me demande si c'était finalement la bonne solution. Pour simplifier voici la structure de ma table.
elements: id,name,cat1_ID,cat2_ID
cat1: id,name
cat2: id,name
sur ma page admin j'ai trois forulaires:
ajout cat1: simple champ texte
ajout cat2: idem
ajout elements: name(champ texte) cat1(liste deroulante 1 seul choix possible), cat2(checkbox plusieurs choix possibles)
vous l'aurez compris, les champs 'cat1' et 'cat2' sont générés dynamiquement depuis la BDD.
Alors, ce que j'ai fait pour le champ 'cat2' qui peut contenir plusieurs ID (mais pas obligatoirement), c'est un serialize() sur mon $_POST['cat2'] que j'inclus tel quel dans la BDD.
Revenons maintenant au site, j'ai deux menus:
Un qui m'affiche les catégories 'cat1' l'autre les 'cat2' pas de soucis pour ça.
Maintenant lorsqu'on clique sur un item du menu, ça m'affiche les éléments qui sont dans ces catégories.
Pour 'cat1' pas de soucis, un simple SELECT + WHERE et c'est réglé.
Mais pour 'cat2' ? Comment faire ? Puisque le champ 'cat2_ID' de ma table 'elements' contient le résultat d'un serialize() ??
J'ai pensé au LIKE tout simplement, ça fonctionnerai, mais plus j'avance et plus je me dis que je n'ai pas fais ça de la bonne manière.
J'aurai besoin de votre avis.
Merci.
EDIT: Je viens de découvrir le type SET pour l'enregistrement de plusieurs valeurs dans la base de données. C'est tout ce qu'il me faut. Je passe ce sujet en résolu.
Edit2: Bon bah les valeurs d'un champ de type SET doivent apparemment être définies lors de la création du champ. Donc ce n'est pas ce qu'il me faut. Retour a la case départ. Je pense que je vais rester sur mon serialize()
Modifié par Zahn (07 Oct 2011 - 14:15)
elements: id,name,cat1_ID,cat2_ID
cat1: id,name
cat2: id,name
sur ma page admin j'ai trois forulaires:
ajout cat1: simple champ texte
ajout cat2: idem
ajout elements: name(champ texte) cat1(liste deroulante 1 seul choix possible), cat2(checkbox plusieurs choix possibles)
vous l'aurez compris, les champs 'cat1' et 'cat2' sont générés dynamiquement depuis la BDD.
Alors, ce que j'ai fait pour le champ 'cat2' qui peut contenir plusieurs ID (mais pas obligatoirement), c'est un serialize() sur mon $_POST['cat2'] que j'inclus tel quel dans la BDD.
Revenons maintenant au site, j'ai deux menus:
Un qui m'affiche les catégories 'cat1' l'autre les 'cat2' pas de soucis pour ça.
Maintenant lorsqu'on clique sur un item du menu, ça m'affiche les éléments qui sont dans ces catégories.
Pour 'cat1' pas de soucis, un simple SELECT + WHERE et c'est réglé.
Mais pour 'cat2' ? Comment faire ? Puisque le champ 'cat2_ID' de ma table 'elements' contient le résultat d'un serialize() ??
J'ai pensé au LIKE tout simplement, ça fonctionnerai, mais plus j'avance et plus je me dis que je n'ai pas fais ça de la bonne manière.
J'aurai besoin de votre avis.
Merci.
EDIT: Je viens de découvrir le type SET pour l'enregistrement de plusieurs valeurs dans la base de données. C'est tout ce qu'il me faut. Je passe ce sujet en résolu.
Edit2: Bon bah les valeurs d'un champ de type SET doivent apparemment être définies lors de la création du champ. Donc ce n'est pas ce qu'il me faut. Retour a la case départ. Je pense que je vais rester sur mon serialize()
Modifié par Zahn (07 Oct 2011 - 14:15)