aide script pour commande pizza en ligne

Petit nouveau ! | 9 Messages

04 avr. 2012, 17:55

bonjour a tous ,
voila étant débutant dans la programmation php mysql , j'ai décider de faire un site pour la pizzeria ou je travail , c'est un sorte d'entrainement pour mes connaissances et pour que je me met dans le bain .alors je demande votre aide a réaliser ce projet ,alors n'hesitez pas a proposer des idées
le site doit donc servir surtout à la prise de commande des pizzas en ligne, à tenir un fichier client à jour, et à calculer le CA quotidien dégagé ,.... etc . je vous tiens au courant au fur et à mesure de mon avancement sur ce forum en mettant ajours ce topic .

le client vient sur le site choisis sa pizza
alors aujourdhui je vous détail un peu le travail a faire:
j'ai besoin d'une base de donnée mysql "commandes" qui doit comporter :
--une table client avec les arguments
(code client ,nom ,adresse,rue,code postal,ville,tel)
CREATE TABLE IF NOT EXISTS `client` (
  `id` int(11) NOT NULL auto_increment,
 `code_client` varchar(100) collate utf8_unicode_ci NOT NULL,
  `nom` varchar(100) collate utf8_unicode_ci NOT NULL,
  `adresse`varchar(100) collate utf8_unicode_ci NOT NULL,
  `rue` varchar(100) collate utf8_unicode_ci NOT NULL,
  `code_postale`INT(5) collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`id`)
) ;
--une table pizza avec comme argument:
nom ,ingredients .
pas encores réalisée
-- La Table Supplément :
Elle reprend tous les ingrédients disponible à la pizzeria et permet ainsi aux clients de
concevoir leurs pizzas « personnelles » .
pas encores réalisée
-- La table Boisson :
Elle regroupe toutes les boissons vendues par la pizzeria et leurs prix .
bientot
-- La table salades :
Elle regroupe toutes les salades vendues par la pizzeria et leurs prix .
bientot
--La Table Commande Client :
Elle permet de préparer une commande individuelle pour chaque client : Elle nous
permet de créer de pizzas « personnalisées » .
pas encores réalisée
-- La Table Format :
Elle nous permet de calculer le prix des pizzas quelles soient grandes ou petites (simple,double,méga,superméga) .
pas encores réalisée
--La Table Livraison : je sais pas encore quoi mettre dedans.
pas encores réalisée
-- La Table Prix de la commande :
C’est la table la plus importante de notre application . Elle permet d’attribuer un
numéro à la commande, elle enregistre le prix total de la commande pour un client,
-- La Table ventes :
Elle est constituée de toutes les pizzas vendues et leurs prix .
désolé c'est un peu long mais je peug dans les premiéres parties.
ma premiére question :
1-Pour que le système mis en place fonctionne correctement, il faut relier les tables
entre elles.comme par exemple rlier la table pizza , table ingrédients,table format , table prix.
quelqu'un a une petite idée comment faire svp?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 avr. 2012, 07:02

Salut,

Si tu souhaite apprendre, je te conseil http://sqlpro.developpez.com pour ce qui est SQL et notamment la normalisation des bases.

Par exemple la première règle normale est l'atomicité : tout élément doit être unique (il peux être référencé mais declaré qu'une seule fois).
Exemple :
Comment fera tu la différence entre les gens qui habite à Paris, pari parri ou autre déformation imaginable.
Idem pour les ingrédients si tu rentre tomate, tomates, tommate etc etc.
Donc pour les clients tu doit avoir une table "villes"
create table villes(
IdVille int not null auto_increment primary key,
nom varchar(50) not null,
cp varchar(5) not null
);
Après il faut utiliser le mécanisme des clefs étrangères (foreign key) pour référencer la ville dans la table clients.
create table clients(
IdClient int not null auto_increment primary key,
nom varchar(50) not null,
prenom varchar(50) not null,
adresse text not null, -- parce que parfois c'est long évite de se prendre la tête 
IdVille int not null,
constraint fk_ville foreign key idVille reference villes(idVille)
);
Avec ça tu sera obliger d'utiliser une valeur de la table ville.
L'avantage ?
Tu peux présenter une liste déroulante avec les villes
Si y a une erreur tu ne modifie qu'une ligne et pas 50000.
Pour afficher la ville il faut faire une jointure.
Pour tous ce qui est pizza salade (ou quoi que ça soit d'autre a manger)
Il faut une table ingredients
Create table ingredients(
idIndgredient int not null auto_increment primary key,
nom varchar(50) not null,
description varchar(200) not null
);
Et une table plats avec juste un nom un prix et une description
Pour savoir ce qu'il y a dans un plat une table "ingredientsPlats" qui va contenir simplement idPlat et idIngredient qui sot deux clefs étrangères provenant de table précédente.
Tu peux ainsi gérer n'importe quel plat.
Pour la taille, le plus simple serait d'avoir une table qui reference toutes les tailles possible qu'elle que soit les plats et tu indique la bonne info à l'insertion.

Je te conseil de bien lire les cours que j n'ai indiqué en haut. Modéliser correctement une base c'est pas simple mais tu y gagnera en utilisation et maintenance (sûrement en perf aussi mais c'est une autre histoire ;) ).

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 9 Messages

05 avr. 2012, 17:46

merci moogli merci pour ta réponse rapide , je vais voir ton lien surtout pour les clés étrangères par ce que c'est du nouveauté pour moi .

Petit nouveau ! | 9 Messages

06 avr. 2012, 12:59


Après il faut utiliser le mécanisme des clefs étrangères (foreign key) pour référencer la ville dans la table clients.
create table clients(
IdClient int not null auto_increment primary key,
nom varchar(50) not null,
prenom varchar(50) not null,
adresse text not null, -- parce que parfois c'est long évite de se prendre la tête 
IdVille int not null,
constraint fk_ville foreign key idVille reference villes(idVille)
);
Avec ça tu sera obliger d'utiliser une valeur de la table ville.
L'avantage ?
Tu peux présenter une liste déroulante avec les villes
Si y a une erreur tu ne modifie qu'une ligne et pas 50000.
Pour afficher la ville il faut faire une jointure.
bonjour,
j'arrive pas a créer la table client j'ai une erreur de syntaxe sql , mais je ne trouve pas l'erreur.
--
-- Création de la table `clients`
--
CREATE TABLE IF NOT EXISTS clients(
IdClient int NOT NULL AUTO_INCREMENT PRIMARY KEY,
nom varchar(50) NOT NULL,
prenom varchar(50) NOT NULL,
adresse text NOT NULL, -- parce que parfois c'est long évite de se prendre la tête
IdVille int NOT NULL,
constraint fk_ville FOREIGN KEY idVille reference villes(idVille)
);
--
-- Contenu de la table `clients`
--
INSERT INTO `clients`(`IdClient`, `nom`, `prenom`,`IdVille`) VALUES 
(1,'leroy','nathalie','1'),
(2,'dupont','jaques','2'),
(3,'dubois','marcel','3'),
(4,'degraux','marc','4'),
(5,'duchemin','julie','5');
voici l'erreur:
MySQL a répondu: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'reference villes(idVille)
)' at line 10 
merci pour votre aide précieuse

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 avr. 2012, 16:14

Il en faut peu pour être heureux ......

Petit nouveau ! | 9 Messages

06 avr. 2012, 16:50

J ai trouver l erreur sur cette ligne, il manque un S sur reference:
constraint fk_ville FOREIGN KEY idVille reference villes(idVille)