Bonjour,
SVP quel est loe type de données à choisir pour un champ d'une table mysql afin d'enregistrer une liste de valeur string ?
et Merci d'avance
Bonjour,
SVP quel est loe type de données à choisir pour un champ d'une table mysql afin d'enregistrer une liste de valeur string ?
et Merci d'avance
salut,
en général varchar(taille) avec 1<=taille<=255
au delà c'est tinytext, text, medium ou longtext qui conviennent selon la taille voulue
salut,
oui j'ai choisi varchar , mais pour une liste de plusieurs valeurs de même type
je m'explique :
j'ai un formulaire avec des input et des select (les sélections peuvent être multiple) ce que j'essaye de faire c'est d'enregistrer les valeurs choisis dans le formulaire dans une table mysql
donc cette table doit se composer de champs de types varchar et type liste
est ce que le type ENUM va résoudre le problème ou pas
si tu as un nombre figé et petit de valeurs oui enum
si tu veux de la souplesse alors tu fais un table de ces valeurs et tu utilise l'id de la ligne correspondant dans la table où tu stockes le résultat un <select>
pour mémoire dans:
truc remplace 'bidule' l'ors de l'envoi du formulaire donc si truc est l'id de la ligne de 'bidule' dans la table listant les possibilités, ça permet ce que je te disais
Code html : Sélectionner tout - Visualiser dans une fenêtre à part <option value='truc'>bidule</option>
Bonjour,
Attention, car il y a eu une évolution des types de données sur MySQL, dont la transition c'est faite je ne saurais dire quand exactement, mais ce qui est certain c'est qu'à la v5.5, voici comment les données CHAR et VARCHAR sont définies
Donc la différence avec les TINYTEXT, MEDIUMTEXT et LONGTEXT c'est que ceux-ci definissent des chaînes de caractères binaires.
The length of a CHAR column is fixed to the length that you declare when you create the table. The length can be any value from 0
to 255. When CHAR values are stored, they are right-padded with spaces to the specified length. When CHAR values are retrieved,
trailing spaces are removed unless the PAD_CHAR_TO_FULL_LENGTH SQL mode is enabled.
Values in VARCHAR columns are variable-length strings. The length can be specified as a value from 0 to 65,535. The effective
maximum length of a VARCHAR is subject to the maximum row size (65,535 bytes, which is shared among all columns) and the
character set used. See Section E.10.4, “Table Column-Count and Row-Size Limits”.
In contrast to CHAR, VARCHAR values are stored as a 1-byte or 2-byte length prefix plus data. The length prefix indicates the number
of bytes in the value. A column uses one length byte if values require no more than 255 bytes, two length bytes if values may
require more than 255 bytes.
pas tout à fait,
dans tout ces types, la taille en octets d'un caractère dépendant en fait du charset...
exemple en utf8 un char(255) est stocké dans 3*255 octets (car pour mysql ils ont choisi de ne stocker de l'utf8 que sur 3 au lieu des 6 octets max que prévoit la norme)
char(n) prend donc en permanence toute la place pour les n caractères... si tu as moins des espace sont rajouté à droite en effet...
varchar(n) ne stocke que la quantité réelle de caractère dans la chaine et maintient en plus un compteur interne sur 1 octet pour les compter (d'où les 255 max)
pour ces types si la longueur maxi est dépassée la chaine est tronquée et ils sont tous les 2 stockée directement dans le fichier de donnée de la table...
Il est donc préférable de stocker toujours dans du varchar plutôt que du char à taille égales si on y stocke de chaines de taille variable...
tinytext, text, mediumtext et longtext fonctionnent comme varchar mais sont prévus pour de plus grande quantité de données (text a un compteur 16 bits donc permet de stocker 64k caractères)
chacun de ces types a son équivalent:
- binary pour char, taille fixée dans le fichier de description de la table, maxi 255, données dans le fichier de données avec les autres colonnes de la table
- varbinary pour varchar, taille stockée avec les donnée de la table, maxi 255, données dans le fichier de données avec les autres colonnes de la table
- tinyblob pour tinytext, taille stockée avec les donnée de la table, maxi 255, données dans un fichier de données à part
- blob pour text, taille stockée avec les donnée de la table, maxi 65k, données dans un fichier de données à part
- mediumblob pour mediumtext, taille stockée avec les donnée de la table, maxi 24M, données dans un fichier de données à part
- longblob pour longtext, taille stockée avec les donnée de la table, maxi 4G, données dans un fichier de données à part
l'autre principale différence est que si tu utilises des données avec un charset (chaines de caractères), les binary et blob les stockent en binaires donc les traitements seront sensibles à la casse contrairement au char et text (sauf collation spéciale)
lire ça et ça pour plus de détails
Ma citation est extraite du manuel officiel de MySQL 5.5. ^^
Je vais faire une petite traduction pour ceux qui ne comprennent pas l'anglais, petit oubli de ma part désolé
Il y a eu tout de même du changement dans les dernières versions.. D'ailleurs je viens de me rendre compte de modifications au niveau de l'utilisation des variables utilisateurs assez conséquente. Je vous prépare cela et vous tiens au courant.Envoyé par traduction manuel v5.5
++
c'est clair... c'est juste l'expression chaine binaire qui me gênait...
ils ont étendu la taille des varchar et varbinary donc... en permettant un préfixe de 1 ou 2 octect pour le compteur de caractères
mais heureusement ils ont fait un truc rétro compatible
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager