8791 sujets

Développement web côté serveur, CMS

Bonjour à tous les développeurs,
Je viens aujourd'hui vers vous afin de quémander de l'aide.

[B]---------------------------------------------------------[/B]

[B]Je vous explique en quelques étapes ce que je souhaites réaliser :[/B]
Je souhaite en fin de compte réaliser un "catalogue" présentant mes produits de ma boulangerie, selon des catégorie définies.

J'ai pour le moment créé une table SQL, néanmoins je ne sais pas si elle est bien faire en fin de compte :

-- 
-- Structure de la table `CATALOGUE_Produits`
-- 

CREATE TABLE `CATALOGUE_Produits` (
  `ID` int(10) unsigned NOT NULL auto_increment,
  `CATEGORIE` text collate latin1_german2_ci NOT NULL,
  `TITRE` text collate latin1_german2_ci NOT NULL,
  `IMAGE` text collate latin1_german2_ci NOT NULL,
  `DESCRIPTION` text collate latin1_german2_ci NOT NULL,
  `PRIX` decimal(10,2) NOT NULL,
  `PIECE` int(2) NOT NULL,
  `POIDS` int(2) NOT NULL,
  `BOITE` int(2) NOT NULL,
  `PERS` int(2) NOT NULL,
  `CMD` int(2) NOT NULL,
  `SAISON` int(2) NOT NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci AUTO_INCREMENT=6 ;


En quelques lignes, j'arrive alimenter la BDD sans soucis:

$db = @mysql_pconnect($Serveur_db, $User_db, $Passe_db);
@mysql_select_db($Base_name, $db);
		
@mysql_query("INSERT INTO CATALOGUE_Produits(CATEGORIE, TITRE, IMAGE, DESCRIPTION, PRIX, PIECE, POIDS, BOITE, PERS, CMD, SAISON) VALUES('$Categorie','$Titre','$File_name','$Description','$Prix_OK','$Piece','$Poids','$Boite','$Pers','$CMD','$Saison')",$db) ;


Je renseigne dans la colonne "CATEGORIE" le nom de ma catégorie qui me servira par la suite a afficher les résultats selon les catégories choisies. Chaque catégorie sera affiché sur une page différente, donc je réaliserai des requêtes type "Afficher ... Where CATEGORIE == ....".

[B]---------------------------------------------------------[/B]

Mes questions sont donc multiples :
1. Est-ce que je commence bien selon ce que je veux faire? Ou alors je vais droit dans le mur, et il y a une meilleure solution ?
2. Est-ce possible d'avoir une aide pas a pas, ou je code, et on me dit si ainsi ca va, ou alors si il n'y a pas meilleure solution?

Je suis prêt a remercier la personne qui m'aidera par mes conaissances ou mon aide en retour (graphisme, flash, ...).

Merci d'avance,
Fab.
Sur ta table CATALOGUE_Produits, je ne vois pas de gros défaut majeur, certains types de colonnes que j'aurai mis en VARCHAR plutôt que TEXT.

http://dev.mysql.com/doc/refman/5.0/fr/storage-requirements.html

Concernant tes catégories, il serait bon que tu fasses également une table CATEGORIES_Produits pour que la clé primaire de cette table soi la clé étrangère de ta table CATALOGUE_Produits.

Vu qu'un produit peut appartenir qu'à 1 seule et unique catégorie et qu'une catégorie peut avoir 0 ou plusieurs produits.

Concernant le code et la communication PHP/MySQL, je te conseillerai de laisser de coté les fonctions mysql que propose PHP. Elles fonctionnent toujours car les vieux projets qui ne peuvent être mis à jour doivent continuer de fonctionner eux aussi mais leurs utilisations n'est plus conseillé : http://php.net/manual/fr/intro.mysql.php

Ma préférence se tourne vers PDO. Ca demande 1 bonne petite heure pour l'apprivoiser si tu n'es pas adepte du PHP Orienté Objet mais rien de bien compliqué ne t'inquiète pas.
Bonjour,

Merci pour les conseils que je trouves trés constructifs. Je constate que vous n'êtes pas le premier a me proposer de construire une table de catégorie. Néanmoins, je ne comprends pas trop le fonctionnement des tables croisées.

Concernant les catégories, en fin de compte vous me proposez de créer une table par catégorie? Ou alors tel que je l'ai réalisé, une seule table pour tous les produits avec une colonne CATEGORIE est bon?

Merci d'avance,
Fab.
Petit avantage de créer une table catégorie :

categorie : id / nom
produit : id / id_categorie / etc...

tu remplis tes tables, tout marche bien, tu es content, sauf que deux semaines plus tard, tu t'aperçois que tu as fait une erreur d'orthographe (ou autre) dans le nom d'une catégorie. Si tu gardes ton système, tu vas être obligé de reprendre tous les produits de cette catégorie pour modifier le nom de la catégorie.
Avec une table catégorie séparée, tu n'auras à le changer qu'une seule fois.

Et ce n'est qu'un avantage parmi tant d'autre Smiley cligne
Concernant le "latin1_german2_ci" tu le sors d’où ? Il y a une raison particulière (les données seront en allemand ?) ou tu as fais un copier/coller depuis un tuto ?

Moi j'aurais plus opté pour du "utf8_general_ci" et ne pas avoir de souci d'accent plus tard. Après un "latin1_general_ci" peux le faire aussi.

Voir la doc : http://dev.mysql.com/doc/refman/5.0/fr/charset-mysql.html