Formulaire inscription smarty php mysql - Besoin de conseils !

Bonjour à tous ;

j’ai un formulaire d’inscription dans un template smarty et un fichier de traitement php .

Je dois ajouter les choses suivantes et les stocker dans ma table user

Secteurs d’activité : “choix multiples” ( ex : administration,btp)…
type de clientéle :“choix multiples”( ex : administration,btp)…
dans les régions :choix multiples ( alsace,lorraine)…

etes vous a la recherche de nouveaux mandants : bouton radio, (oui, non)

3 )

Secteurs d’activité recherchés : ( ex : administration,btp)…
type de clientéle visitée :“choix multiples”( ex : administration,btp)…
dans les régions :choix multiples ( alsace,lorraine)…

La c’est chaud !

Quelle serait la meilleure solution ??

:??:

Les champs pour “type de clientèle” sont exactement les mêmes que pour “secteur d’activité” ?

Le mieux, vu que ce sont des choix multiples, c’est de créer d’autres tables pour gérer ça. Par exemple :

Une table "secteur_activite" (identifiant, description)
Une table "user_secteur" (id_user, id_secteur)
Une table "user_clientele" (id_user, id_secteur)

Une table "region" (code_departement, nom_departement)
Une table "user_regions" (id_user, code_departement)

(en souligné : clés primaires, en italique : clés étrangères)

C’est ce que je ferais :oui:

merci de ta réponse , mais il ya des trucs que je ne comprends pas :

exemple de ma table :

CREATE TABLE kpro_user (
uid int(11) unsigned NOT NULL auto_increment,
ugroup smallint(3) unsigned NOT NULL default ‘0’,
name varchar(50) NOT NULL default ‘’,
uname varchar(25) NOT NULL default ‘’,
email varchar(65) NOT NULL default ‘’,
url varchar(200) NOT NULL default ‘’,
user_avatar_pref varchar(255) NOT NULL default ‘’,
user_regdate int(11) unsigned NOT NULL default ‘0’,
user_sig text NOT NULL,
user_from varchar(75) NOT NULL default ‘’,
user_interests text NOT NULL,
user_birthday varchar(10) NOT NULL default ‘’,
pass varchar(35) NOT NULL default ‘’,
passtemp varchar(35) NOT NULL default ‘’,
posts mediumint(8) unsigned NOT NULL default ‘0’,
theme varchar(75) NOT NULL default ‘’,
last_login int(11) unsigned NOT NULL default ‘0’,
user_viewemail enum(‘yes’,‘no’) NOT NULL default ‘yes’,
user_canpn enum(‘yes’,‘no’) NOT NULL default ‘yes’,
invisible enum(‘yes’,‘no’) NOT NULL default ‘no’,
pntomail enum(‘yes’,‘no’) NOT NULL default ‘yes’,
status tinyint(1) unsigned NOT NULL default ‘1’,
user_lastonline int(11) unsigned default NULL,
user_lastonline_temp int(11) unsigned default NULL,
user_posts mediumint(8) unsigned NOT NULL default ‘0’,
user_lastpost int(10) unsigned default NULL,
recieve_newsletter tinyint(1) NOT NULL default ‘1’,
usedefault_avatar smallint(1) NOT NULL default ‘1’,
user_avatar varchar(255) NOT NULL default ‘’,
country char(2) NOT NULL default ‘DE’,
group_id_misc varchar(100) default NULL,
person enum(‘private’,‘company’) NOT NULL default ‘private’,
phone varchar(255) NOT NULL default ‘’,
phone_mobile varchar(255) NOT NULL default ‘’,
fax varchar(255) NOT NULL default ‘’,
lastname varchar(255) NOT NULL default ‘’,
zip varchar(255) NOT NULL default ‘’,
street varchar(255) NOT NULL default ‘’,
title varchar(20) NOT NULL default ‘’,
show_public tinyint(1) unsigned NOT NULL default ‘1’,
company varchar(255) NOT NULL default ‘’,
ustid varchar(255) NOT NULL default ‘’,
fsk18 tinyint(1) unsigned NOT NULL default ‘0’,
user_icq varchar(30) NOT NULL default ‘’,
user_aim varchar(30) NOT NULL default ‘’,
user_skype varchar(30) NOT NULL default ‘’,
PRIMARY KEY (uid),
KEY uid (uid),
KEY user_lastonline (user_lastonline),
KEY user_lastonline_temp (user_lastonline_temp),
KEY ugroup (ugroup),
KEY group_id_misc (group_id_misc),
KEY user_regdate (user_regdate)
) TYPE=MyISAM;

tu me dis par exemple pour les secteurs d’activité " id et description " mais pour les autres tables " id user et id secteur " pourquoi le id user ? Excuse mon ignorance mais je débute, je pense que tu avait compris…

J’ai oublié :

Les champs pour “type de clientèle” ne sont pas les mêmes que “secteur d’activité” ?

En fait, les tables "user_secteur", "user_clientele" et "user_regions" servent à faire le lien entre la table "client" et les tables "secteur_activite" et "regions".

Vu qu’un client peut avoir plusieurs secteurs d’activité, tu es d’accord que tu ne peux pas tout mettre dans la table “client” (à moins d’avoir des champs secteur1, secteur2, secteur3 etc., mais c’est moins souple et moins performant (nombre de secteurs limité, perte de place…)).
Donc, tu crées une table intermédiaire, qui possèdera par exemple les lignes suivantes :

id_user      id_secteur
15                  1
15                  2
15                  4

Ce qui signifie que l’utilisateur n°15 travaille sur les secteurs n°1, 2 et 4.
Pareil pour les régions, il y aura autant de lignes par utilisateur dans la table région, que de régions sur lesquels il travaille :slight_smile:

Je ne sais pas, ça dépend de ce que tu veux faire. Visiblement tu voulais que l’utilisateur choisisse plusieurs secteurs d’activité, et plusieurs types de clientèle, ce qui signifie pour moi que ce ne sont pas forcément les mêmes pour les deux. Donc : deux tables différentes.

Je crois que je commence a comprendre…( j’ai dis je crois)…

Il me faut donc 6 tables

activite" (id, id_description)
clientele" (id, id_description)
regions" (id, id_description)
user_activite" (id user, id activite)
user_clientele" (id user, id clientele)
user_regions" (id user, id regions)

serait cela ?

par contre je vois pas trop par rapport a mon formulaire comment je vais passer tout cela…

L’avantage du débutant, c’est que cela fait travailler la matiére grise…

Si les champs de “secteur d’activité” sont différents des champs de “clientèle”, oui :slight_smile:

Eh bien, pour tes trois choix multiples, il suffira de faire “select * from activite” pour avoir toutes les possibilités de secteur d’activité, “select * from regions” pour avoir la liste de toutes les régions, etc. Pour la mise en page, faudra t’arranger (par exemple : un seul choix au départ, avec un bouton pour ajouter un autre choix…)

Une fois que les choix de l’utilisateur sont faits, tu feras simplement un "insert into user_activite (id_user, id_activite) pour chacun de ses choix. (et pareil pour user_client et user_regions)

ok , je commence a saisir, bon et bien merci merci, je crois que j’ai du boulot en perspective !! merci encore pour ton aide précieuse :super:

De rien :slight_smile:

Là, on n’a fait que le 1) de ta question de départ :wink: Pour le 2), un champ en plus dans la table User suffit. Pour le 3), c’est similaire au 1) mais visiblement faudra encore des tables intermédiaires en plus.

ok, voici ma table regions qui est construite donc sous le meme type que activité et clientele, normalement y a tout bon !

CREATE TABLE regions (
idregions bigint(21) NOT NULL auto_increment,
nom varchar(250) NOT NULL default ‘’,
PRIMARY KEY (idregions)
) TYPE=MyISAM;

Contenu de la table regions

INSERT INTO regions VALUES (1, ‘Alsace’);
INSERT INTO regions VALUES (2, ‘Aquitaine’);
INSERT INTO regions VALUES (3, ‘Auvergne’);
INSERT INTO regions VALUES (4, ‘Basse-Normandie’);
INSERT INTO regions VALUES (5, ‘Bourgogne’);
INSERT INTO regions VALUES (6, ‘Bretagne’);
INSERT INTO regions VALUES (7, ‘Centre’);
INSERT INTO regions VALUES (8, ‘Champagne-Ardennes’);
INSERT INTO regions VALUES (9, ‘Corse’);
INSERT INTO regions VALUES (10, ‘Dom-Tom’);
INSERT INTO regions VALUES (11, ‘Franche-Comte’);
INSERT INTO regions VALUES (12, ‘Haute-normandie’);
INSERT INTO regions VALUES (13, ‘Ile-de-France’);
INSERT INTO regions VALUES (14, ‘Languedoc-Roussillon’);
INSERT INTO regions VALUES (15, ‘Limousin’);
INSERT INTO regions VALUES (16, ‘Lorraine’);
INSERT INTO regions VALUES (17, ‘Midi-Pyrenees’);
INSERT INTO regions VALUES (18, ‘Nord-pas-de-calais’);
INSERT INTO regions VALUES (19, ‘Pays-de-loire’);
INSERT INTO regions VALUES (20, ‘Picardie’);
INSERT INTO regions VALUES (21, ‘Poitou-Charentes’);
INSERT INTO regions VALUES (22, ‘PACA’);
INSERT INTO regions VALUES (23, ‘Rhone-Alpes’);