Type de champs phpMyAdmin
Résolu/Fermé
papyclic
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
-
5 mars 2015 à 15:30
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 9 mars 2015 à 11:02
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 9 mars 2015 à 11:02
A voir également:
- Type de champs phpMyAdmin
- Clear type - Guide
- Localhost/phpmyadmin ✓ - Forum PHP
- Acceder au localhost phpmyadmin en local depuis un autre poste - Forum Ubuntu
- Faiblesse type psy ✓ - Forum Jeux vidéo
- Http://localhost/phpmyadmin/ ne marche pas .. ✓ - Forum PHP
7 réponses
jordane45
Messages postés
38364
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 décembre 2024
4 720
5 mars 2015 à 15:48
5 mars 2015 à 15:48
Bonjour,
En règle général, pour stocker un BOOLEN (true ou false) on va utiliser un champ de type INT ou encore mieux TINYINT.
Sachant que niveau occupation mémoire... TINYINT et BIT prenne la même chose... à savoir : 1 octet
Attention... Les champs de type BIT ne renvoies par uniquement une valeur de type 1 ou 0 comme tu pourrais le croire .. mais quelque chose du genre : 0x01 ou 0x00 .. le x servant à indiquant que tu retournes de l'hexadécimale....
A la rigueur, je t'invite à lire ceci (et à surtout pas utiliser BIT pour stocker du BOOLEEN):
http://www.olivierdoucet.info/blog/2008/09/18/stocker-un-booleen-dans-mysql/
Après... pourquoi est-ce que ça fonctionne sur tes checkbox... aucune idée... faudrait voir comment tu t'en sers...
En règle général, pour stocker un BOOLEN (true ou false) on va utiliser un champ de type INT ou encore mieux TINYINT.
Sachant que niveau occupation mémoire... TINYINT et BIT prenne la même chose... à savoir : 1 octet
TINYINT [M] [UNSIGNED]
Occupe 1 octet. Ce type peut stocker des nombres entiers de -128 à 127 si il ne porte pas l'attribut UNSIGNED, dans le cas contraire il peut stocker des entiers de 0 à 255.
BIT
Occupe 1 octet. Même chose que CHAR(1)
Attention... Les champs de type BIT ne renvoies par uniquement une valeur de type 1 ou 0 comme tu pourrais le croire .. mais quelque chose du genre : 0x01 ou 0x00 .. le x servant à indiquant que tu retournes de l'hexadécimale....
A la rigueur, je t'invite à lire ceci (et à surtout pas utiliser BIT pour stocker du BOOLEEN):
http://www.olivierdoucet.info/blog/2008/09/18/stocker-un-booleen-dans-mysql/
Après... pourquoi est-ce que ça fonctionne sur tes checkbox... aucune idée... faudrait voir comment tu t'en sers...
papyclic
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
3
5 mars 2015 à 16:11
5 mars 2015 à 16:11
Bonjour,
Merci pour tes explications, je vais de ce pas jeter un oeil sur ton lien.
Je te donne quand même mon input de type checkbox, tu peux me donner ton avis, cet input se trouve dans la page sur laquelle je fais des modifications éventuelle.
Comme je disais lorsque j'enregistre une modification d'un membre la valeur passe à 0 dans ma BDD par contre dans mon formulaire la coche est bien présente donc ça peut-être encore un soucis de phpMyAdmin ?
Par contre pour l'enregistrement des checkbox cela se fait très bien.
Merci
Merci pour tes explications, je vais de ce pas jeter un oeil sur ton lien.
Je te donne quand même mon input de type checkbox, tu peux me donner ton avis, cet input se trouve dans la page sur laquelle je fais des modifications éventuelle.
Comme je disais lorsque j'enregistre une modification d'un membre la valeur passe à 0 dans ma BDD par contre dans mon formulaire la coche est bien présente donc ça peut-être encore un soucis de phpMyAdmin ?
Par contre pour l'enregistrement des checkbox cela se fait très bien.
Merci
<input type="checkbox" name="membre" id="modif_membre" class="css-modif_membre" value="true" <?php echo $donnees['membre'] ? " checked":"";?> /> <label for="modif_membre" name="demo_lbl_1" class="css-modif_membre">Membre</label>
jordane45
Messages postés
38364
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 décembre 2024
4 720
5 mars 2015 à 16:14
5 mars 2015 à 16:14
Le code pour ta checkbox est faut...
Tel que tu l'as écrit... il vaut toujours TRUE... et est toujours coché !
Tel que tu l'as écrit... il vaut toujours TRUE... et est toujours coché !
papyclic
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
3
5 mars 2015 à 16:33
5 mars 2015 à 16:33
Pourtant lorsque j'ouvre mon formulaire pour ajouter un membre la checkbox n'est pas coché.
et lorsque j'édit un membre la checkbox est coché si je l'ai coché bien sur sinon elle ne l'est pas.
Et lorsque je modifie un membre par exemple son téléphone j'enregistre et hop la case est décochée et dans la BDD elle est à 0.
Moi il m'arrive toujours des trucs bizarre.....
Par contre j'ai essayé d'enlever TRUE à value mais c'est toujours le même résultat.
Merci
et lorsque j'édit un membre la checkbox est coché si je l'ai coché bien sur sinon elle ne l'est pas.
Et lorsque je modifie un membre par exemple son téléphone j'enregistre et hop la case est décochée et dans la BDD elle est à 0.
Moi il m'arrive toujours des trucs bizarre.....
Par contre j'ai essayé d'enlever TRUE à value mais c'est toujours le même résultat.
Merci
jordane45
Messages postés
38364
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 décembre 2024
4 720
5 mars 2015 à 16:55
5 mars 2015 à 16:55
Pardon...Je n'ai rien dit.
Ton code est bon.
Par conre... tu regarde juste si une valeur existe dans $donnees['membre'] ... tu ne regardes pas si elle est à 1 ou à autre chose ( 0x01 par exemple...)
C'est pour ça que ça fonctionne...... mais ce n'est pas bon (tant que le Type de champ dans ta BDD sera BIT).
Il faut que tu oublies ce type de champ rapidement... sinon tu auras des soucis comme hier
Ton code est bon.
<?php echo $donnees['membre'] ? " checked":"";?
Par conre... tu regarde juste si une valeur existe dans $donnees['membre'] ... tu ne regardes pas si elle est à 1 ou à autre chose ( 0x01 par exemple...)
C'est pour ça que ça fonctionne...... mais ce n'est pas bon (tant que le Type de champ dans ta BDD sera BIT).
Il faut que tu oublies ce type de champ rapidement... sinon tu auras des soucis comme hier
papyclic
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
3
5 mars 2015 à 17:29
5 mars 2015 à 17:29
non en fait j'ai enlevé le BIT j'ai mis comme tu me l'as dit INT
je vais regarder tout ça.
Merci je te redis
je vais regarder tout ça.
Merci je te redis
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
papyclic
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
3
5 mars 2015 à 17:53
5 mars 2015 à 17:53
En fait je crois avoir trouvé mais dans ma tête c'est pas très logique.
En fait dans le value j'ai remplacé TRUE par 1.
Tu peux me donner une explication s'il te plait, car pour moi c'est la même chose.
Je te remercie
En fait dans le value j'ai remplacé TRUE par 1.
Tu peux me donner une explication s'il te plait, car pour moi c'est la même chose.
Je te remercie
jordane45
Messages postés
38364
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 décembre 2024
4 720
5 mars 2015 à 18:13
5 mars 2015 à 18:13
dans le value j'ai remplacé TRUE par 1
Tu as bien fait.
pour moi c'est la même chose.
Dans l'absolue oui... TRUE vaut 1 et FALSE 0 (c'est du binaire... des 1 ou des 0 )
Par contre (je ne me suis jamais posé la question) pas sûr que tu puisse mettre dans un value "true" ... car à ce momment là... PHP doit le considérer comme une chaine de caractères ...
C'est comme NULL ...
un exemple tout bête...
$a = "true"; $b = true; Echo " a =$a <br>"; Echo " b =$b <br>";
papyclic
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
3
9 mars 2015 à 11:02
9 mars 2015 à 11:02
Bonjour
Excuse moi du retard, merci pour tout.
Bonne continuation
Excuse moi du retard, merci pour tout.
Bonne continuation