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 :P
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 ! :lol:

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