Afficher un champ BLOB - PHP - Programmation
Marsh Posté le 15-04-2003 à 16:45:44
tafkap a écrit : Salut à tous, |
T'as pas l'impression qu'il y a comme un problème, là ?
BLOB = Binary Large OBject. C'est fait pour stocker des données binaires, pas du texte. Pour stocker du texte, t'as le type TEXT qui est très bien.
Marsh Posté le 15-04-2003 à 17:28:07
Du texte c'est des données binaires, tout est binaire dans un ordinateur, j'ai pigé le texte est compressé dans ce champs.
Marsh Posté le 15-04-2003 à 17:35:12
Je sais pas si MySQL est différent de Oracle ou MSSQL Server, mais à priori, je vois pas pourquoi ils auraient changé.
Le type "TEXT" est rigoureusement le même que le type "BLOB/IMAGE" au niveau stockage.
La seule différence réside dans le fait que les données qui y sont écrites sont automatiquement encodée suivant le charset choisi dans les paramètres de la base.
Donc pour un TEXT, il n'y a aucune modification à faire lors de la lecture, qu'on soit en ASCII sur 7 bits ou en Unicode sur 16 bits.
Pour lire/écrire dans un BLOB, il faudra faire un encodage manuel des données binaires, et un décodage manuel à la relecture. Mais niveau fonctionnalités, c'est la même chose.
D'ailleurs, sous Oracle 8.0.5, il n'y a pas de type LONGTEXT, mais uniquement BLOB.
Marsh Posté le 15-04-2003 à 17:35:33
tafkap a écrit : Du texte c'est des données binaires, tout est binaire dans un ordinateur, j'ai pigé le texte est compressé dans ce champs. |
Le super raisonnement
Pour les données textes vraiment énormes, y a l'équivalent du BLOB qui est le CLOB ; je sais pas si ça existe sous MySQL et à la limite on s'en fout dans le cas présent. C'est juste pour que tu voies que la plupart des langages de prog font la différence entre données binaires et données texte, c'est tout.
Un BLOB, tu peux pas l'afficher comme ça ni faire de recherche dessus (enfin là, je suis pas super sûr de mon coup). Si ton texte est stocké compressé, pour pouvoir effectuer des recherches dessus il faut que :
1) tu récupères le BLOB en tant que données binaires ;
2) tu décompresses ces données
3) tu fais les recherches/l'affichage voulus.
Je crois pas qu'il y ait de méthode pour faire directement ce que tu veux avec MySQL, il va certainement falloir que tu passes par un bon paquet de manips à côté
Marsh Posté le 16-04-2003 à 11:10:01
perso, j'utilise des types BLOB pour les champs des gros textes sur mes formulaires et je n'ai aucune difference de traitement par rapport au type texte. Je recupere le champs dans ma base mysql, je l'affiche le modif et le reenregistre exactement comme un texte classique (+ qq fonction de htmlentities pour afficher ou interpreter les balises HTML contenues ds le texte)
Marsh Posté le 16-04-2003 à 11:15:32
ojbis a écrit : perso, j'utilise des types BLOB pour les champs des gros textes sur mes formulaires et je n'ai aucune difference de traitement par rapport au type texte. Je recupere le champs dans ma base mysql, je l'affiche le modif et le reenregistre exactement comme un texte classique (+ qq fonction de htmlentities pour afficher ou interpreter les balises HTML contenues ds le texte) |
Oui donc apparemment pour MySQL y a pas de différence entre BLOB et CLOB, quoi. Je sais pas si c'est un bien ou un mal, je maîtrise pas suffisamment le sujet pour disserter là-dessus.
Maintenant, comme les données de tafhap semblent être compressées, il aura effectivement du binaire et il ne pourra pas faire de recherche ou d'affichage simples dessus
Marsh Posté le 16-04-2003 à 18:44:14
ojbis a écrit : perso, j'utilise des types BLOB pour les champs des gros textes sur mes formulaires et je n'ai aucune difference de traitement par rapport au type texte. Je recupere le champs dans ma base mysql, je l'affiche le modif et le reenregistre exactement comme un texte classique (+ qq fonction de htmlentities pour afficher ou interpreter les balises HTML contenues ds le texte) |
Salut, tu fais comment pour l'afficher ? si tu édites le contenu du champs tu as quoi ? c'est bien des données binaires que tu vois, enfin des chiffres... c'est peut-être les codes ASCII qui sont enregistrés non ?
Marsh Posté le 16-04-2003 à 20:06:55
tafkap a écrit : |
Bah, tu lis le blob, puis tu le parse octet par octet en faisant un chr(xx) dessus.
Pour écrire, la même chose, mais avec un asc('x' dans l'autre sens.
Marsh Posté le 22-04-2003 à 15:48:51
MagicBuzz a écrit : |
Ou comment faire compliqué quand on peut faire simple.
Avec un champ texte, t'aurais fait un simple addslashes() à l'écriture et la lecture serait directe.
Au vu de ta méthode un BLOB n'est pas égale à un TEXT.
Marsh Posté le 15-04-2003 à 16:40:15
Salut à tous,
dans une table MySQL, j'ai un champ de type BLOB qui contient du texte, j'aimerais savoir comment afficher/extraire/rechercher sur ce type de champ.
D'avance, merci