8792 sujets

Développement web côté serveur, CMS

Bonjour,

Je souhaiterai créer dans ma table un champ sous catégorie dépendant donc du champ catégorie et je ne sais pas comment faire.
Le champ categorie est de type enum et comprend 5 valeurs.
Je souhaiterai donc qu'une fois le champ catégorie selectionné n'apparaissent que les sous catégories correspondantes lorsque j'insere de nouvelles données dans ma table avec phpmyadmin.
Si qqun peut m'aider, merci d'avance!
Hello,

L'intitulé de ce salon est « Standards web et langages serveurs », et non pas uniquement « Langages serveurs ». Il s'agit donc avant tout de questions sur la manière de produire des sites standards en utilisant les langages serveurs, et pas d'assistance généraliste sur tel ou tel langage.

Je laisse ce sujet ouvert au cas où quelqu'un te réponde, mais je te conseille fortement d'aller exposer ton problème sur un forum spécialisé MySQL, par exemple. Smiley smile

Par ailleurs, merci de t'occuper des sujets que tu as ouverts sur ce forum et que tu as laissés à l'abandon, soit en répondant aux membres, soit en les marquant comme résolus.
Modifié par Julien Royer (29 Jan 2007 - 19:43)
Bon alors en fait tu as des données auxquelles tu atttribues une catégorie et une sous catégorie.
Ce qui fait donc 3 types de données différentes (des données, la catégorie et la sous catégorie) : Pour plus de clarté et de perrenité, utilise 3 tables SQL :

Par exemple :
Table DATA (je ne sais pas ce que tu met dedans)
Avec dedans (entre autre), un identifiant primaire, une cléf étrangère catégorie et une 2ème cléf étrangère pour la sous catégorie.

Les cléfs étrangères se rapportent à l'identifiant primaire de la table CATEGORIE et à l'identifiant primaire de la table SOUS_CATEGORIE.

Et par exemple, dans ta table CATEGORIE tu auras :
identifiant, nom_cat

Et par exemple, dans ta table SOUS_CATEGORIE tu auras :
identifiant, id_cat, nom_souscat

et chacun des 2 identifiants se placent en tant que cléf étrangère dans la table DATA.

Tiens, essaie ces tables & données dans un base SQL et entraine toi dessus :

DROP TABLE IF EXISTS CATEGORIE;
CREATE TABLE CATEGORIE (
  id int(11) NOT NULL auto_increment,
  nom_cat varchar(255) NOT NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM  AUTO_INCREMENT=5 ;

INSERT INTO CATEGORIE (id, nom_cat) VALUES (1, 'catégorie1');
INSERT INTO CATEGORIE (id, nom_cat) VALUES (2, 'catégorie2');
INSERT INTO CATEGORIE (id, nom_cat) VALUES (3, 'catégorie3');
INSERT INTO CATEGORIE (id, nom_cat) VALUES (4, 'catégorie4');

DROP TABLE IF EXISTS DATA;
CREATE TABLE `DATA` (
  id int(11) NOT NULL auto_increment,
  id_cat int(11) NOT NULL,
  id_souscat int(11) NOT NULL,
  texte varchar(255) NOT NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM  AUTO_INCREMENT=4 ;

INSERT INTO DATA (id, id_cat, id_souscat, texte) VALUES (1, 1, 1, 'texte1');
INSERT INTO DATA (id, id_cat, id_souscat, texte) VALUES (2, 1, 2, 'texte2');
INSERT INTO DATA (id, id_cat, id_souscat, texte) VALUES (3, 4, 4, 'texte de la cat4 et souscat4');

DROP TABLE IF EXISTS SOUS_CATEGORIE;
CREATE TABLE SOUS_CATEGORIE (
  id int(11) NOT NULL auto_increment,
  id_cat int(11) default NULL,
  nom_cat varchar(255) NOT NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM  AUTO_INCREMENT=5 ;

INSERT INTO SOUS_CATEGORIE (id, id_cat, nom_cat) VALUES (1, 1, 'souscatégorie1 de catégorie1');
INSERT INTO SOUS_CATEGORIE (id, id_cat, nom_cat) VALUES (2, 1, 'souscatégorie2 de catégorie1');
INSERT INTO SOUS_CATEGORIE (id, id_cat, nom_cat) VALUES (3, 2, 'souscatégorie1 de catégorie2');
INSERT INTO SOUS_CATEGORIE (id, id_cat, nom_cat) VALUES (4, 4, 'souscatégorie1 de catégorie4');



Pour récupérer le nom de la catégorie, sous catégorie d'un texte, il faut utiliser les jointures dans la requete (INNER JOIN par exemple).

Bon courage.
Merci bcp pour ta réponse
Entre temps j'ai décidé de carrément créer une base catégorie avec une table pour chacune de mes categories du coup je peux mettre pour chacune lesosus categories a l'interieur
Mais je me demande si après pour implanter un panier ce sera grave d'utiliser plusieurs tables pour mes produits??
Meri encore
non, non ne fais pas ça.

Pour chaque type de données tu dois avoir une seule table.

Des articles : une table articles
Des catégories : une table catégorie
Des sous catégories : une table catégorie

et dans les articles tu stockes les identifiants des catégories & sous catégorie.
Et tu verras que pour l'administration de l'ensemble (Ajout/Suppression/Modification des données) c'est bien mieux.
lol je suis un peu perdue la !!
A l'origine j'avais juste une table produits qui se présentait comme ca

nom_pdt varchar(100) Non
ref varchar(100)
categ enum('La salle de bain', 'Déco', 'La cuisine', 'Autour de la table')
description longtext
prix varchar(100)
stock int(11)
photo varchar(100)
paypal
Mais comme tu peux le voir je cherche à rajouter des sous catégories dépendantes des catégories
Je dois garder cette table ou pas?
milie0000000 a écrit :
Ok en fait j'ai fait ce que tu m'as dit
j'ai les trois tables
Merci de tenir compte de mon message précédent au sujet de tes sujets en suspens...
Modifié par Julien Royer (29 Jan 2007 - 23:49)