Page 1 sur 3
Checkbox
Posté : 27 juin 2005, 18:14
par Invité
Modération : Début du message http://www.phpfrance.com/forums/voir_sujet-4990.php
Bonjour,
j'ai un petit problème avec ma table bande
voici un exemple
id_bande | smallint | unsigned | not null | primaire clé
160 m |varchar(5)|
80 m |varchar(5)|
40 m |varchar(5)|
30 m |varchar(5)|
20 m |varchar(5)|
etc ...
je ne pense pas que varchar soit la bonne commande.
c'est elminio l'invite lol
Posté : 27 juin 2005, 18:15
par elminio
Bonjour,
j'ai un petit problème avec ma table bande
voici un exemple
id_bande | smallint | unsigned | not null | primaire clé
160 m |varchar(5)|
80 m |varchar(5)|
40 m |varchar(5)|
30 m |varchar(5)|
20 m |varchar(5)|
etc ...
je ne pense pas que varchar soit la bonne commande.
Posté : 27 juin 2005, 18:48
par ouckileou
heu, qu'est-ce que tu essayes de faire ?
ne crée pas un champ pour chaque longueur, mais un seul champ "longueur" ou "libellé" qui la contiendra
tu peux aussi ne stocker que les mètres dans un champ de type entier, si jamais tu as à faire des calculs dessus, et rajouter "m" quand tu affiches
ex :
Code : Tout sélectionner
CREATE TABLE bandes (
id_bande smallint(3) unsigned NOT NULL auto_increment,
longueur smallint(5) unsigned default '0',
PRIMARY KEY (id_bande)
)
tu auras donc ce type d'engistrement dans cette table
| 1 | 20 |
| 2 | 30 |
| 3 | 40 |
| 4 | 80 |
et le champ id_bande sera rempliautomatiquement grâce à
auto_increment à chaque fois que tu rajouteras une longueur
Posté : 27 juin 2005, 18:58
par elminio
smallint(3) 3 est utilisé pour valeur ou taille ? lol
idem pour smallint(5) ? je pense pour taille
je dois géré dans la base les m et cm pour infos.
il y a une chose que je ne comprend pas si j'utilise dans mon formulaire
un chekbox comment je vais faire pour le lié à la table bande.
Posté : 27 juin 2005, 19:01
par ouckileou
smallint c'est un type, la taille c'est 3 ou 5 ici
à ta pace je mettrais tout en m, avec un type float à ce moment là pour ton champ "longueur"
| 1 | 20,50 |
| 2 | 30 |
| 3 | 40 |
| 4 | 80 |
Posté : 27 juin 2005, 19:25
par elminio
ok pour la taille
par contre je n'est pas trop le choix je dois utilisé m et cm
il y a une chose que je ne comprend pas si j'utilise dans mon formulaire
un chekbox comment je vais faire pour le lié à la table bande.
Posté : 27 juin 2005, 19:49
par ouckileou
par contre je n'est pas trop le choix je dois utilisé m et cm
tu veux dire que tu es obligé de séparer ?
parcequ'avec un float tu auras aussi les cm
sinon fait deux champs si tu souhaites séparer mètres et centimètres
il y a une chose que je ne comprend pas si j'utilise dans mon formulaire
un chekbox comment je vais faire pour le lié à la table bande.
c'est très simple :
dans ton formulaire tu afficheras une checkbox pour chaque couple de ta table "bandes"
la valeur de la checkbox sera l'identifiant, et tu afficheras à coté le libellé pour que l'utilisateur puisse choisir
exemple :
// requête SQL de récupération des données de la table "bandes"
echo '<input type="checkbox" name="bande[]" value="'.$identifiant.'">'.$libelle;
comme ça l'utilisateur choisira une distance (ex: 20m) et toi tu récupéreras l'identifiant qui correspond à "20m" dans ta table
Posté : 27 juin 2005, 20:22
par elminio
// requête SQL de récupération des données de la table "bandes"
echo '<input type="checkbox" name="bande[]" value="'.$identifiant.'">'.$libelle;
mon formulaire est actuellement en html
il me permet de visualiser plus facilement dans dreamweaver
pour le premier
$identifiant = 1
$libelle = 160 m
pour le deuxiéme
sa fera
$identifiant = 2
$libelle = 80 m
ainsi de suite ... c'est ça
donc je met c'est ligne la :
echo '<input type="checkbox" name="bande[]" value="'1'">'.160m;
echo '<input type="checkbox" name="bande[]" value="'2'">'.80m;
ou çà
echo '<input type="checkbox" name="bande[]" value="'.$identifiant.'">'.$libelle; <--- pour 160m
echo '<input type="checkbox" name="bande[]" value="'.$identifiant.'">'.$libelle; <--- pour 80m
Posté : 27 juin 2005, 20:50
par elminio
Voici ma table : est ce correct ?
Code : Tout sélectionner
CREATE TABLE `bande` (
`id_bande` smallint(5) unsigned NOT NULL auto_increment,
`bande` smallint(5) unsigned default '0',
`mesure` char(2) default '0',
PRIMARY KEY (`id_bande`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;
--
-- Contenu de la table `bande`
--
INSERT INTO `bande` VALUES (1, 160, 'm');
INSERT INTO `bande` VALUES (2, 80, 'm');
INSERT INTO `bande` VALUES (3, 40, 'm');
INSERT INTO `bande` VALUES (4, 30, 'm');
INSERT INTO `bande` VALUES (5, 20, 'm');
INSERT INTO `bande` VALUES (6, 17, 'm');
INSERT INTO `bande` VALUES (7, 15, 'm');
INSERT INTO `bande` VALUES (8, 12, 'm');
INSERT INTO `bande` VALUES (9, 10, 'm');
INSERT INTO `bande` VALUES (10, 6, 'm');
INSERT INTO `bande` VALUES (11, 2, 'm');
INSERT INTO `bande` VALUES (12, 70, 'cm');
Posté : 27 juin 2005, 20:58
par ouckileou
ben on peut pas dire si c'est correct ou pas au niveau de la base, mais y'a des choix meilleurs que d'autres et cette forme me parait pas mal
en tout cas c'est celle que j'aurai choisie et qu'on t'avait suggéré
je croyais que tu pouvais avoir des mètres et des centimètres en même temps au début, 'cest pour ça que j'avais suggéré le float
donc normalement c'ets bon là, tu vas voir que ça va être plus simple à gérer maintenant
bon courage pour la suite
Posté : 27 juin 2005, 21:05
par elminio
echo '<input type="checkbox" name="bande[]" value="'.$identifiant.'">'.$libelle;
comment utilises tu ça avec la table bande ?
tu peux me faire un exemple
avec quelque ligne lol
Posté : 27 juin 2005, 21:31
par ouckileou
là je pense que tu peux essayer de t'en sortir
tu va générer dynamiquement les checkbox avec le contenu de ta table
les deux variables correspondent au deux champs de ta table
regarde ce tuto
Interroger une table MySQL
tu auras un exemple pour récupérer des données d'une table et les afficher
une fois que tu auras fait ça, il suffira juste d'afficher ça sous forme de checkbox
jette un coup d'oeil, fais quelques essais et reviens si tu as des problèmes
may the force be with you

Posté : 27 juin 2005, 21:36
par elminio
ok je vais essayé ça, merci ouckileou
bonne soirée...
Posté : 27 juin 2005, 22:50
par elminio
après lecture je ne vois pas comment on peut faire
ça permet d'extraire des données
je prend un exemple :
j'ai case 6 case qui peuvent être cocher (un ou plusieurs)
O 160m O 80m O 40m O 30m O 20m O 17m
je coche la case 80m et 20m de mon formulaire
comment vas être stocké c'est infos sur ma table bande?
comment je pourrais voir sur ma table bande que 80m et 20m sont enregistrée ?
Code : Tout sélectionner
CREATE TABLE `bande` (
`id_bande` smallint(5) unsigned NOT NULL auto_increment,
`bande` smallint(5) unsigned default '0',
`mesure` char(2) default '0',
PRIMARY KEY (`id_bande`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;
--
-- Contenu de la table `bande`
--
INSERT INTO `bande` VALUES (1, 160, 'm');
INSERT INTO `bande` VALUES (2, 80, 'm');
INSERT INTO `bande` VALUES (3, 40, 'm');
INSERT INTO `bande` VALUES (4, 30, 'm');
INSERT INTO `bande` VALUES (5, 20, 'm');
INSERT INTO `bande` VALUES (6, 17, 'm');
pas évident mes débuts dans php/mysql

Posté : 27 juin 2005, 23:09
par ouckileou
ah ben ça va pas s'enregistrer tout seul !
quand tu récupères tes variables correspondant aux cases à cocher (en les nommant comme dit plus haut dans le post), tu auras comme valeurs les identifiants des bandes sélectionnées
tu va donc pouvoir les enregistrer
mais qu'on soit bien d'accord, la table "bandes" sert juste à stocker les différentes longueurs disponibles
si tu veux enregistrer les bandes d'un concours, tu le fais dans une table que tu peux appeler "contient", qui va faire le lien entre la table "concours" et la table "bandes"
un autre tuto pour
alimenter une table MySQL
essaye pas à pas : commence par récupérer tes variables et les afficher dans la page, tu verras ensuite comment les stocker dans une table MySQL