MYSQL ajout automatique de champs dans ma table


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 374
Inscription: 4 Mar 2005

MYSQL ajout automatique de champs dans ma table

Message le Dim Déc 02, 2007 14:55

Bonjour,

j'ai un formulaire sur lequel l'utilisateur peut ajouter des champs de texte a sa guise le nom du champs de texte reste le même et s'incrémente de 1 à chaque ajout.
jusque la tout va bien.

Mon problème se pose lors de la récupération des données je souhaite insérer les données dans ma table et créer automatiquement les champs inexistants de la table.

Exemple : l'utilisateur saisis ses données champs1, champs2, champs3
et dans ma table je n'ai que le champs champs1.
Comment faire pour ajouter champs2, champs3 automatiquement dans ma table?

Merci pour votre aide et vos précieux conseils.

dmathieu
Modérateur
Modérateur
 
Messages: 7244
Inscription: 9 Jan 2004

Message le Dim Déc 02, 2007 15:43

Code: Tout sélectionner
ALTER TABLE `taTable` ADD `tonChamp` VARCHAR (255) NOT NULL ;


Note que j'ai mis VARCHAR par défaut. Mais je te conseille de proposer de changer ce type.

holmat
WRInaute discret
WRInaute discret
 
Messages: 175
Inscription: 28 Nov 2007

Message le Dim Déc 02, 2007 16:11

kazhar a écrit:
Code: Tout sélectionner
ALTER TABLE `taTable` ADD `tonChamp` VARCHAR (255) NOT NULL ;


Note que j'ai mis VARCHAR par défaut. Mais je te conseille de proposer de changer ce type.


ou alors tu crées une table avec le nb max de champs possible
et en clé primaire ya bien sur l'id de l'utilisateur


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 374
Inscription: 4 Mar 2005

Message le Dim Déc 02, 2007 16:21

ok pour le alter table add que je connaissais, mais ce que je cherche a faire c'est créer des champs automatiquement dans ma table en fonction du nombre de champs utilisés par l'utilisateur lors dela saisie de son formulaire.

holmat
WRInaute discret
WRInaute discret
 
Messages: 175
Inscription: 28 Nov 2007

Message le Dim Déc 02, 2007 16:55

webac a écrit:ok pour le alter table add que je connaissais, mais ce que je cherche a faire c'est créer des champs automatiquement dans ma table en fonction du nombre de champs utilisés par l'utilisateur lors dela saisie de son formulaire.


mais pourquoi vouloir créer des tables spécifiques en fonction des utilisateurs ?


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Message le Dim Déc 02, 2007 21:36

idem, j'vois pas l'utilité alors qui est si simple de passer par un tableau php et n'utiliser qu'un seul champ mysql.

Cela ira bien plus vite en temp machine et t'evitera l'aspirine!


nickargall
WRInaute accro
WRInaute accro
 
Messages: 6468
Inscription: 13 Juin 2005

Message le Lun Déc 03, 2007 9:58

..Et de devoir faire gaffe si tu as des requetes antérieures d'insertion de champs dans ces nouvelles tables ... moi non plus je ne vois pas l'utilité.
Si tu veux pouvoir enregistrer des éléments dont le nombre diffère selon l'utilisateur, Vaut mieux jouer avec une deuxième table.

Première table user

id_user| nom | prenom | etc...
1 |Duran| Pierre | ...
2 | Dupond | Etienne | ...

Deuxième table champ

id_champ | champ | valeur | id_user
1 | couleur| verte | 1
2 | prix | pas cher| 1
3 | volant | moumoute | 1
4 | couleur | bleue | 2
5 | volant | cuir | 2


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 374
Inscription: 4 Mar 2005

Message le Lun Déc 03, 2007 21:58

Je sais que je réponds un peu tard mais j'éspere que vous m'apporterez un peu plus de détails car j'avoue que je ne saisis pas trop.

Voici la structure de mes tables

table1
`societe` varchar(255) NOT NULL default '',
`personne` varchar(255) NOT NULL default '',
`tel` varchar(255) NOT NULL default '',
`fax` varchar(255) NOT NULL default '',
`adresse` varchar(255) NOT NULL default '',
`cp` varchar(255) NOT NULL default '',
`ville` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
`login` varchar(255) NOT NULL default '',
`mdp` varchar(255) NOT NULL default '',
`obs` varchar(255) NOT NULL default '',
`statut` varchar(255) NOT NULL default 'inactif'

table2
`rma` varchar(255) NOT NULL default '',
`fournisseur` varchar(255) NOT NULL default '',
`marque` varchar(255) NOT NULL default '',
`ref` varchar(255) NOT NULL default '',
`facture` varchar(255) NOT NULL default '',
`serie` varchar(255) NOT NULL default '',
`typepanne` varchar(255) NOT NULL default '',
`statut` varchar(255) NOT NULL default 'Non recu',
`login` varchar(255) NOT NULL default '',


Les champs que je cherche à ajouter automatiquement sont fournisseur2, marque2, ref2, serie2, typepanne2 et ainsi de suite fournisseur3...

Comment faire pour connaître les champs qui ont été ajoutés par l'utilisateur et les ajouter à ma table?

merci encore pour votre aide


rog
WRInaute passionné
WRInaute passionné
 
Messages: 1662
Inscription: 21 Sep 2006

Message le Mar Déc 04, 2007 1:37

je vais attirer ton attention sur certains points choquants concernant ta demande puisque personne le l'a encore fait

une base de donnée contient des tables dans lesquelles on va insérer des données et d'où l'on va tirer des extraits

il n'a jamais été question de pouvoir les altérer en cour de route

un lock table qui foire et t'as plus de table
l'optimisation de secu tend à diminuer au maximum les privileges du mysql user qui va effectuer les requêtes, hors dans ton shema le user est a pratiquement plein pouvoir sur les tables
je pense que la relation entre tes tables est mal conçue et à ta place je refléchirai à une methode différente style merise

rog


zeb
WRInaute accro
WRInaute accro
 
Messages: 4560
Inscription: 5 Déc 2004

Re: MYSQL ajout automatique de champs dans ma table

Message le Mar Déc 04, 2007 1:54

webac a écrit:Mon problème se pose lors de la récupération des données je souhaite insérer les données dans ma table et créer automatiquement les champs inexistants de la table.


= marque d'un problème de conception ...

repense ton modèle tu ne devrais jamais te trouver dans un tel scénario, c'est contraire a la philosophie d'un SGBD.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité