Checkbox

Invité
Invité n'ayant pas de compte PHPfrance

27 juin 2005, 18:14

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.

Eléphant du PHP | 174 Messages

27 juin 2005, 18:15

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.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 juin 2005, 18:48

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

Eléphant du PHP | 174 Messages

27 juin 2005, 18:58

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.
Modifié en dernier par elminio le 27 juin 2005, 19:02, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 juin 2005, 19:01

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 |

Eléphant du PHP | 174 Messages

27 juin 2005, 19:25

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.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 juin 2005, 19:49

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

Eléphant du PHP | 174 Messages

27 juin 2005, 20:22

// 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

Eléphant du PHP | 174 Messages

27 juin 2005, 20:50

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');

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 juin 2005, 20:58

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

Eléphant du PHP | 174 Messages

27 juin 2005, 21:05

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 juin 2005, 21:31

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 ;)

Eléphant du PHP | 174 Messages

27 juin 2005, 21:36

ok je vais essayé ça, merci ouckileou
bonne soirée...

Eléphant du PHP | 174 Messages

27 juin 2005, 22:50

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 :(

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 juin 2005, 23:09

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