Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
681 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] conserver les blancs en debut et fin dans une base mysql ? :-/

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] conserver les blancs en debut et fin dans une base mysql ? :-/

n°649677
Shurik
Posté le 20-02-2004 à 13:03:26  profilanswer
 

bonjour,
je parcours un fichier (récupéré ligne par ligne) et par exemple du caractère 10 au 22 je vais avoir le code_utilisateur, alors pour le recuperer je fais

Code :
  1. $code_util=substr($ligne,10,12);


et après je fous $code_util dans un champ de 12 caractères dans ma base MySQL.
Mon problème arrive quand je veux reprendre ce code de 12 caractères, si dans le fichier il ne faisait que 5 caractères avec 4 blancs avant et 3 blancs après ma variable quand je la ressort de la base me renvoie 5 quand je lui fait un strlen();
alors ma question est la suivante, comment stocker les blancs avec ma variable ?
merci d'avance ! ;)

mood
Publicité
Posté le 20-02-2004 à 13:03:26  profilanswer
 

n°649887
Shurik
Posté le 20-02-2004 à 15:02:18  profilanswer
 

up ? :/

n°649912
dropsy
et bonne chance surtout...
Posté le 20-02-2004 à 15:12:34  profilanswer
 

c'est bizarre, sur ma base, il n'insère pas les espaces de la fin de chaine :/ par contre je perds pas les espaces qui sont devant.
j'ai essayé avec des type TEXT et VARCHAR
la solution est surement du côté des CHAR, mais j'arrive même pas à créer une colonne de type CHAR(12) :heink: une spécifité mySQL :??:

n°649926
Shurik
Posté le 20-02-2004 à 15:20:09  profilanswer
 

dropsy a écrit :

c'est bizarre, sur ma base, il n'insère pas les espaces de la fin de chaine :/ par contre je perds pas les espaces qui sont devant.
j'ai essayé avec des type TEXT et VARCHAR
la solution est surement du côté des CHAR, mais j'arrive même pas à créer une colonne de type CHAR(12) :heink: une spécifité mySQL :??:

ah oui c possible qu'il garde les espaces du debut en fait :) je v tester, en tout cas il en retire mais peut etre n'est-ce que ceux de la fin... je ne sais pas :/

n°650137
Shurik
Posté le 20-02-2004 à 18:39:34  profilanswer
 

up ? :)

n°650213
Kristoph
Posté le 20-02-2004 à 20:20:04  profilanswer
 

Bonne solution : se débarasser de cette bouse de MySQL.
 
Mauvaise solution : ajouter des " autour de ta chaine.

n°650222
Shurik
Posté le 20-02-2004 à 20:34:48  profilanswer
 

Kristoph a écrit :

Bonne solution : se débarasser de cette bouse de MySQL.
 
Mauvaise solution : ajouter des " autour de ta chaine.

pour passer à postgrsql ?
vu l'etat d'avancement du projet et les ressources dispo je crois que je vais être contraint d'employer la mauvaise solution,
 
peux tu m'expliquer ce que tu entends pas ajouter des " autour de ma chaine ?
voilà un exemple de requete, que dois-je rajouter ? :

Code :
  1. $sql="INSERT INTO BL_ENTETE_SORTIE (generation_acompte) VALUES ('".substr($line,340,14)."')";

n°650228
Kristoph
Posté le 20-02-2004 à 20:41:10  profilanswer
 

Les SGBD respectant la norme SQL doivent être interchangeables non ?
 
Si tu n'aime pas les " autour de ta chaine, tu peux toujours ajouter un 1 au debut et un 2 à la fin avant l'insertion. Pense juste à les retirer quand tu extrait tes chaines de la DB ;)

n°650236
Shurik
Posté le 20-02-2004 à 20:45:24  profilanswer
 

Kristoph a écrit :

Les SGBD respectant la norme SQL doivent être interchangeables non ?
 
Si tu n'aime pas les " autour de ta chaine, tu peux toujours ajouter un 1 au debut et un 2 à la fin avant l'insertion. Pense juste à les retirer quand tu extrait tes chaines de la DB ;)

ah ok, la technique consiste uniquement à mettre un drapeau en debut et fin de chaine ;)
merci, ça va être super chiant pour moi d'implementer ça mais avec 2 ou 3 fonctions ça devrait le faire...
bon le tout c que je trouve 2 caractères qui ne risquent pas d'être dans mon fichier... genre # ou | peut etre...

n°650257
dropsy
et bonne chance surtout...
Posté le 20-02-2004 à 21:03:18  profilanswer
 

la caractère le moins chiant pour ça, c'est celui affiché par word pour les retours à la lignes... il est pas sur le clavier, il suffit de taper son code ascii :D
 
mais j'ai oublié le code [:ddr555]
 
sinon, ça m'étonne pour mysql, doit y avoir une option qque part :heink:

mood
Publicité
Posté le 20-02-2004 à 21:03:18  profilanswer
 

n°650278
Kristoph
Posté le 20-02-2004 à 21:27:11  profilanswer
 

Shurik a écrit :

ah ok, la technique consiste uniquement à mettre un drapeau en debut et fin de chaine ;)
merci, ça va être super chiant pour moi d'implementer ça mais avec 2 ou 3 fonctions ça devrait le faire...
bon le tout c que je trouve 2 caractères qui ne risquent pas d'être dans mon fichier... genre # ou | peut etre...


 
Peux importe en fait. Tu assume que le premier et le dernier caratère de la chaine sont à jeter. Peux importe lesquels ils sont ou s'ils sont présents dans ton fichier.

n°650280
Kristoph
Posté le 20-02-2004 à 21:29:00  profilanswer
 

dropsy a écrit :

la caractère le moins chiant pour ça, c'est celui affiché par word pour les retours à la lignes... il est pas sur le clavier, il suffit de taper son code ascii :D
 
mais j'ai oublié le code [:ddr555]
 
sinon, ça m'étonne pour mysql, doit y avoir une option qque part :heink:


 
http://sql-info.de/mysql/gotchas.html#1_6
 
L'option s'appelle PostGreSQL


Message édité par Kristoph le 21-02-2004 à 01:22:16
n°650408
omega2
Posté le 21-02-2004 à 01:20:57  profilanswer
 

T'as essayé de faire un "varchar(taille) binary"?
Il me semble que le rajout du mot binary à la création de la colonne à pour but d'empécher la disparition des espaces.

n°650410
simogeo
j'ai jamais tué de chats, ...
Posté le 21-02-2004 à 01:23:17  profilanswer
 

omega2 a écrit :

T'as essayé de faire un "varchar(taille) binary"?
Il me semble que le rajout du mot binary à la création de la colonne à pour but d'empécher la disparition des espaces.


 
il a surtout pour option de stocker les données en binaire a mon avis  :p


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°650411
simogeo
j'ai jamais tué de chats, ...
Posté le 21-02-2004 à 01:25:37  profilanswer
 

ceci dit, ca m'étonne beaucoup que mysql te supprimes les blancs ...... t'es sur de ne pas les supprimer toi même a l'insertion ?


Message édité par simogeo le 21-02-2004 à 01:25:44

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°650435
Kristoph
Posté le 21-02-2004 à 01:56:00  profilanswer
 

simogeo a écrit :

ceci dit, ca m'étonne beaucoup que mysql te supprimes les blancs ...... t'es sur de ne pas les supprimer toi même a l'insertion ?


 

Citation :

As this is documented, this is most definitely not a bug:
... However, in contrast to CHAR, VARCHAR values are stored using only as many characters as are needed, plus one byte to record the length. Values are not padded; instead, trailing spaces are removed when values are stored. (This space removal differs from the SQL-99 specification.) ...
 
http://www.mysql.com/doc/en/CHAR.html

n°650436
simogeo
j'ai jamais tué de chats, ...
Posté le 21-02-2004 à 02:01:23  profilanswer
 

Kristoph a écrit :


 

Citation :

As this is documented, this is most definitely not a bug:
... However, in contrast to CHAR, VARCHAR values are stored using only as many characters as are needed, plus one byte to record the length. Values are not padded; instead, trailing spaces are removed when values are stored. (This space removal differs from the SQL-99 specification.) ...
 
http://www.mysql.com/doc/en/CHAR.html




 
merci pour l'info .. putain c'est nul ça [:mlc]
 
donc ouais, essaies de stocker les infos en binary, ca devrait passer [:spamafote]  


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°650444
Shurik
Posté le 21-02-2004 à 02:42:52  profilanswer
 

je vais voir ce que ça donne en binary :) merci pour votre aide ! :)

n°650447
Shurik
Posté le 21-02-2004 à 02:58:11  profilanswer
 

voilà mon champ : code_client_prive  varchar(13)  BINARY  
 
et mes ptites opérations :

Code :
  1. $sql="UPDATE BL_ENTETE_SORTIE SET code_client_prive='00000000     '"; //8 zero et 5 espaces
  2. $req=$db->query($sql);
  3. $sql="select code_client_prive from BL_ENTETE_SORTIE";
  4. $req=$db->query($sql);
  5. $res=mysql_fetch_object($req);
  6. echo strlen($res->code_client_prive);


 
et là j'ai 8 qui s'affichent donc il me retire les 5 espaces :/
 
par contre avec les espaces en debut de variable y a pas de probleme il les garde... c juste pour la fin de variable que ça marche pas :/ même en binary, si vous avec d'autres idées ça m'interresserait, parce que mettre une balise de fin ça me tente pas trop ça me prendrait facile une journée entière compte tenu du nombre de variables (je sais j'aurai du faire des fonctions :'() :/

n°650448
Shurik
Posté le 21-02-2004 à 03:02:00  profilanswer
 

hey ? mais en mettant TEXT à la place de VARCHAR2 ça a l'air de marcher ! bon je peux pas specifier de longueur mais c pas grave !
 
from http://www.mysql.com/doc/fr/BLOB.html :
Il n'y a pas de suppression des espaces finaux lors du stockage de valeur dans des colonnes de type BLOB et TEXT, ce qui est le cas dans pour les colonnes de type VARCHAR.


Message édité par Shurik le 21-02-2004 à 03:04:58
n°650467
dragonminu​s
pas de place pour la citation.
Posté le 21-02-2004 à 07:18:08  profilanswer
 

salut, tu peux aussi remplacer les blanc par un signe du style "<" quitte à les enlever aprés.

n°650563
Shurik
Posté le 21-02-2004 à 13:11:35  profilanswer
 

dragonminus a écrit :

salut, tu peux aussi remplacer les blanc par un signe du style "<" quitte à les enlever aprés.

avce text c parfait (seul le manque de taille max fait chier mais comme j'avais deja fait des fonctions pour checker que la longueur etait bonne :)

n°650565
simogeo
j'ai jamais tué de chats, ...
Posté le 21-02-2004 à 13:18:06  profilanswer
 

Shurik a écrit :

avce text c parfait (seul le manque de taille max fait chier mais comme j'avais deja fait des fonctions pour checker que la longueur etait bonne :)


tu peux aussi le détermnier ds tes input avec maxlength


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°650566
Shurik
Posté le 21-02-2004 à 13:18:45  profilanswer
 

simogeo a écrit :


tu peux aussi le détermnier ds tes input avec maxlength

ah ? :)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] conserver les blancs en debut et fin dans une base mysql ? :-/

 

Sujets relatifs
Generer un PDF en PHP.[PHP] isset et variable : 2 questions !
[PHP] Conseil sur Pseudo Frames et includes[PHP] Affichage page par page
generer une base de données access depuis un modele visioScript PHP exportant un bdd ACCESS (Linux)
[nOOb] Besoin d'aide pour activation PHP-Nuke[PHP] dupliquer une variable... [Resolu]
[python] Mysql et python = Erreur :([C++]Lire une valeur dans la base de registre
Plus de sujets relatifs à : [PHP] conserver les blancs en debut et fin dans une base mysql ? :-/


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR