Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/06/2006, 19h59   #1
Membre du Club
 
Inscription : juin 2006
Messages : 215
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 215
Points : 50
Points : 50
Par défaut Form base tableaux

Bonjour,
J'ai créer un formulaire qui comporte 5 champs sur une ligne.
j'ai reproduite 6 x cette ligne donc j'ai un formulaire avec 6 x nom que j'ai nommé nom_1, nom_2, nom_3 etc... et la même chose avec les autres champs.
J'ai créer une Table comme ceci
Citation:
CREATE TABLE `webmaster` (
`ref_1` varchar(10) collate latin1_german1_ci NOT NULL,
`nom_1` varchar(20) collate latin1_german1_ci NOT NULL,
`adr_client_1` varchar(50) collate latin1_german1_ci NOT NULL,
`rem_client_1` text collate latin1_german1_ci NOT NULL,
`tel_client_1` varchar(20) collate latin1_german1_ci NOT NULL,
`ref_2` varchar(10) collate latin1_german1_ci NOT NULL,
`nom_2` varchar(20) collate latin1_german1_ci NOT NULL,
`adr_client_2` varchar(50) collate latin1_german1_ci NOT NULL,
`rem_client_2` text collate latin1_german1_ci NOT NULL,
`tel_client_2` varchar(20) collate latin1_german1_ci NOT NULL,
`ref_3` varchar(10) collate latin1_german1_ci NOT NULL,
`nom_3` varchar(20) collate latin1_german1_ci NOT NULL,
`adr_client_3` varchar(50) collate latin1_german1_ci NOT NULL,
`rem_client_3` text collate latin1_german1_ci NOT NULL,
`tel_client_3` varchar(20) collate latin1_german1_ci NOT NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
Cela fonctionne +/- sauf que dans ma base ci les trois lignes (donc 15 champs) sont rempli cela s'incrit sur une seul ligne dans ma base.
Citation:
ref_1 nom_1 adr_1 rem_1 tel_1 ref_2 nom_2 adr_2 rem_2 tel_2 ref_3 nom_3 adr_3 etc...
Mais je voudrais quelle s'incrive de la manière suivante.
Citation:
ref_1 nom_1 adr_1 rem_1 tel_1
ref_2 nom_2 adr_2 rem_2 tel_2
ref_3 nom_3 adr_3 rem_3 tel_3
Pourriez-vous me dire comment réalisé cela ?

D'avance merci
dunbar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2006, 20h35   #2
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
pourquoi ne pas séparer ta table ainsi :

id, ref, nom, adr_client, tel_client, rem_client ?

comme ça c'est plus simple ?
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2006, 20h44   #3
Membre du Club
 
Inscription : juin 2006
Messages : 215
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 215
Points : 50
Points : 50
Citation:
Envoyé par Swoög
pourquoi ne pas séparer ta table ainsi :

id, ref, nom, adr_client, tel_client, rem_client ?

comme ça c'est plus simple ?
Oui cette solution serais pas mal, mais le problème est que je dois récuperer toutes les données du jour pour quelle soit visible dans un tableau.

Ou alors je n'ai peut-être pas comprid ta réponse ????

Tu me dit de faire finalement une table par ligne ????


Merci
dunbar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2006, 20h48   #4
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
je pense qu'il y a une erreur de vocabulaire quelque part, personnellement, je te conseillais de changer le format de ta table de ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE TABLE `webmaster` (
`ref_1` varchar(10) collate latin1_german1_ci NOT NULL,
`nom_1` varchar(20) collate latin1_german1_ci NOT NULL,
`adr_client_1` varchar(50) collate latin1_german1_ci NOT NULL,
`rem_client_1` text collate latin1_german1_ci NOT NULL,
`tel_client_1` varchar(20) collate latin1_german1_ci NOT NULL,
`ref_2` varchar(10) collate latin1_german1_ci NOT NULL,
`nom_2` varchar(20) collate latin1_german1_ci NOT NULL,
`adr_client_2` varchar(50) collate latin1_german1_ci NOT NULL,
`rem_client_2` text collate latin1_german1_ci NOT NULL,
`tel_client_2` varchar(20) collate latin1_german1_ci NOT NULL,
`ref_3` varchar(10) collate latin1_german1_ci NOT NULL,
`nom_3` varchar(20) collate latin1_german1_ci NOT NULL,
`adr_client_3` varchar(50) collate latin1_german1_ci NOT NULL,
`rem_client_3` text collate latin1_german1_ci NOT NULL,
`tel_client_3` varchar(20) collate latin1_german1_ci NOT NULL
 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
à ça :
Code :
1
2
3
4
5
6
7
8
CREATE TABLE `webmaster` (
`id` INT AUTO_INCREMENT NOT NULL,
`ref` varchar(10) collate latin1_german1_ci NOT NULL,
`nom` varchar(20) collate latin1_german1_ci NOT NULL,
`adr_client` varchar(50) collate latin1_german1_ci NOT NULL,
`rem_client` text collate latin1_german1_ci NOT NULL,
`tel_client` varchar(20) collate latin1_german1_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
ensuite, si tu veux regrouper tes lignes, tu peux le faire de différentes façons :

ajouter une table supplémentaire dans ta BDD pour les regrouper, ou ajouter un champ dans la table pour leur faire une référence commune, etc...
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2006, 20h58   #5
Membre du Club
 
Inscription : juin 2006
Messages : 215
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 215
Points : 50
Points : 50
Citation:
Envoyé par Swoög
je pense qu'il y a une erreur de vocabulaire quelque part, personnellement, je te conseillais de changer le format de ta table de ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE TABLE `webmaster` (
`ref_1` varchar(10) collate latin1_german1_ci NOT NULL,
`nom_1` varchar(20) collate latin1_german1_ci NOT NULL,
`adr_client_1` varchar(50) collate latin1_german1_ci NOT NULL,
`rem_client_1` text collate latin1_german1_ci NOT NULL,
`tel_client_1` varchar(20) collate latin1_german1_ci NOT NULL,
`ref_2` varchar(10) collate latin1_german1_ci NOT NULL,
`nom_2` varchar(20) collate latin1_german1_ci NOT NULL,
`adr_client_2` varchar(50) collate latin1_german1_ci NOT NULL,
`rem_client_2` text collate latin1_german1_ci NOT NULL,
`tel_client_2` varchar(20) collate latin1_german1_ci NOT NULL,
`ref_3` varchar(10) collate latin1_german1_ci NOT NULL,
`nom_3` varchar(20) collate latin1_german1_ci NOT NULL,
`adr_client_3` varchar(50) collate latin1_german1_ci NOT NULL,
`rem_client_3` text collate latin1_german1_ci NOT NULL,
`tel_client_3` varchar(20) collate latin1_german1_ci NOT NULL
 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
à ça :
Code :
1
2
3
4
5
6
7
8
CREATE TABLE `webmaster` (
`id` INT AUTO_INCREMENT NOT NULL,
`ref` varchar(10) collate latin1_german1_ci NOT NULL,
`nom` varchar(20) collate latin1_german1_ci NOT NULL,
`adr_client` varchar(50) collate latin1_german1_ci NOT NULL,
`rem_client` text collate latin1_german1_ci NOT NULL,
`tel_client` varchar(20) collate latin1_german1_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
ensuite, si tu veux regrouper tes lignes, tu peux le faire de différentes façons :

ajouter une table supplémentaire dans ta BDD pour les regrouper, ou ajouter un champ dans la table pour leur faire une référence commune, etc...
Merci j'avais déjà essayé cette solution , mais le problème est que dans cette solution ci quelque rempli les trois ligne du formulaire seule la 3 eme ligne s'incrit dans ma base.
Car tu est d'accord avec moi que dans ta solution je nomme 3 x le même champs (il y aurais 3 x ref "par exemple ?)
Mais il est tout à fait possible que je n'ais pas comprid.

Merci
dunbar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2006, 21h01   #6
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
bah, en fait nan, tu fais trois insertions, c'est tout... ensuite je vois pas vraiement où est le problème, c'est la structure de ta BDD, rien t'oblige à donner la même structure à ton formulaire, et même dans ce cas, tu peux toujours leur donner un nom du style ref[] ou line1[ref] ce qui fait que ça te génèrera de beaux tableaux pour les résultats ^^
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2006, 21h12   #7
Membre du Club
 
Inscription : juin 2006
Messages : 215
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 215
Points : 50
Points : 50
Citation:
Envoyé par Swoög
bah, en fait nan, tu fais trois insertions, c'est tout... ensuite je vois pas vraiement où est le problème, c'est la structure de ta BDD, rien t'oblige à donner la même structure à ton formulaire, et même dans ce cas, tu peux toujours leur donner un nom du style ref[] ou line1[ref] ce qui fait que ça te génèrera de beaux tableaux pour les résultats ^^
Question:

si mon formulaire comporte 3 champs nommé ref_1 ref_2 ref_3 ta commande ref[] va reprendre les données des champs ref 1 2 3 ????

Merci
dunbar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2006, 21h32   #8
Membre du Club
 
Inscription : juin 2006
Messages : 215
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 215
Points : 50
Points : 50
Pourriez-vous me dire ci ceci est codé correctement ??
Citation:
$sql = "INSERT INTO test_webmaster VALUES
('".mysql_escape_string[ref_]."','".mysql_escape_string[nom_]."','".mysql_escape_string[adr_client_]."','".mysql_escape_string[rem_client_]."','".mysql_escape_string[tel_client_]."')";
D'avance merci
dunbar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2006, 21h34   #9
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
non, là on rentre dans le domaine du PHP...

comme un exemple vaut mieux qu'un long discours, fait un var_dump ou un print_r sur $_POST, tu comprendras de suite la structure des données communiquées, c'est le plus simple...
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2006, 22h01   #10
Membre du Club
 
Inscription : juin 2006
Messages : 215
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 215
Points : 50
Points : 50
Citation:
Envoyé par Swoög
non, là on rentre dans le domaine du PHP...

comme un exemple vaut mieux qu'un long discours, fait un var_dump ou un print_r sur $_POST, tu comprendras de suite la structure des données communiquées, c'est le plus simple...
Ou voulais tu que j'introduise ta méthode [ref] ??
Dans mes champs de formuliare ou dans ma base (le nom des colonnes?)

Merci
dunbar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2006, 22h04   #11
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
dans le formulaire, en HTML...

mais prend tout...

soit tu nommes tes champs de fomulaire ref[], nom_client[], etc..;

soit line1[ref], line1[nom_client] puis line2[ref], line2[nom_client] etc...

personnellement, je pense que le second modèle te sera plus utile...


ensuite, tu peux également conserver ton ancienne façon de nommer tes champs, et faire une insertion multiple (ou plusieurs insertions)
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2006, 23h49   #12
Membre du Club
 
Inscription : juin 2006
Messages : 215
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 215
Points : 50
Points : 50
Citation:
Envoyé par Swoög
dans le formulaire, en HTML...

mais prend tout...

soit tu nommes tes champs de fomulaire ref[], nom_client[], etc..;

soit line1[ref], line1[nom_client] puis line2[ref], line2[nom_client] etc...

personnellement, je pense que le second modèle te sera plus utile...


ensuite, tu peux également conserver ton ancienne façon de nommer tes champs, et faire une insertion multiple (ou plusieurs insertions)
Encore un détail svp

Pourriez-vous me donné un exemple de table

pour introduire les donnée d'un formulaire

Table champs 1 champs 2 champs 3

Mon Formulaire

Champs 1 champs 2 champs 3 champs4 champs 5 champs 6

Les données du formulaire Champs 1 et champs 3 doivent aller dans lechamps de la table champs 1.
Les données du formulaire Champs 2 et champs 4 doivent aller dans lechamps de la table champs 2.
Les données du formulaire Champs 3 et champs 6 doivent aller dans lechamps de la table champs 3.

Voilà merci encore !
dunbar est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h32.


 
 
 
 
Partenaires

Hébergement Web