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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Mysql] Ajout d'un caractere "0" sur toutes les valeurs d'un champs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Mysql] Ajout d'un caractere "0" sur toutes les valeurs d'un champs

n°1885947
kontas
Photographe amateur daltonien
Posté le 19-05-2009 à 09:40:39  profilanswer
 

Salut a tous,
 
 
J'ai récuperer une base de donné, (id,codepostal,commune) de france afin de créer un menu ou l'on commence par choisir le département.
 
Jusque la pas de souci,
 
Seulement, tous les code postaux qui devrais commencer par 0, donc de l'ain, les hautes alpes, etc commence directement par leurs premier chiffre, donc 1000 pour l'ain, et 5000 pour les alpes de hautes provence.
 
Ce que j'aimerais faire, c'est de rajouter ce 0 a tous les champs qu'il manque. Je pense que cela doit etre faisable directement dans phpmyadmin, mais j'en ai aucun idée du comment.
 
J'avais penser faire un script php du genre (en ayant isoler au prealable les departements en question dans une autre base)

Code :
  1. $sql = "SELECT id, codePostal FROM localisation";
  2. $req = mysql_query($sql) or die(.mysql_error())
  3. while ($data = mysql_fetch_array($req))
  4. {
  5.          $sql2 = "UPDATE localisation SET codePostal = "0"$data['codePostal'] WHERE id = $data['id']"
  6.          $req2 = mysql_query($sql2) or die(.mysql_error())
  7. }


J'ai pas trop osé lancer ce script, étant donné qu'il doit y avoir bien 5000 commune en comptant tous les département de 1 a 9.  
 
 
Donc, si vous pourriez m'indiquer si cette double requetes fonctionne, ou si vous aviez plus simple directement dans phpmyadmin.
 
Merci

mood
Publicité
Posté le 19-05-2009 à 09:40:39  profilanswer
 

n°1885956
flo850
moi je
Posté le 19-05-2009 à 09:49:50  profilanswer
 

ta colonne code postal est de quel type ?


---------------

n°1885981
kontas
Photographe amateur daltonien
Posté le 19-05-2009 à 11:08:33  profilanswer
 

Elle est de type "int()"

n°1885988
flo850
moi je
Posté le 19-05-2009 à 11:12:42  profilanswer
 

alors tu ne peux pas ajouter un zero devant  
 
pour cela , il faut que ta colonne soit de type varchar par exemple , poru que ton code postal soit un texte  
 
le plus simple est que tu modifie, lors de l'affichage pour ajouter un 0 si ton code postal est inférieur a 10000


---------------

n°1886047
kontas
Photographe amateur daltonien
Posté le 19-05-2009 à 12:26:49  profilanswer
 

a mince.
 
Le problème c'est que je fais une requete avec la fonction SUBSTRING(codePostal, 1, 2)  pour frabriquer les codes des départements a partir des codePostaux. Donc impossible d'utiliser une modification juste a l'affichage.
 
Sinon, ce n'est pas grave, je peu modifier mon type de champs et le passer en Varchar.
 
Donc dans le cas ou il serai en varchar, quelle manip me permettrer de rajouter un 0 devant mes champs ?
 
Merci encore ;)

n°1886097
flo850
moi je
Posté le 19-05-2009 à 14:15:28  profilanswer
 

si ta colonne est une int, alors le departement, ca va etre  codePostal/1000, tout simplement

 

et lors de l'affichage, tu ajoute le 0

 

edit si tu passe en var char, tu peux faire un truc
UPDATE table set codePostal = CONCAT(0,codePostal) WHERE LENGTH(codePostal) =4

 



Message édité par flo850 le 19-05-2009 à 14:17:03

---------------

n°1886244
kontas
Photographe amateur daltonien
Posté le 19-05-2009 à 19:10:19  profilanswer
 

Merci beaucoup tu est un CHEF !!
 
J'ai passer mon champs en VARCHAR, et la requete est passé nikel
 
et dire que j'ai tous essayer, meme avec l'import dans Mysql, avec excel, open office, Grrrrrrrrrrr
 
Mais apparement un chiffre ne peut commencer par "0", j'ai vraiment aps l'esprit matheu ^^
 
 
Merci encore, tu m'a economisé beaucoup de temps et de stress !


Message édité par kontas le 19-05-2009 à 19:10:48
n°1886245
flo850
moi je
Posté le 19-05-2009 à 19:14:53  profilanswer
 

c'est plutot que pour un nombre 0566 = 566
bonne continuation


---------------

n°1886256
kontas
Photographe amateur daltonien
Posté le 19-05-2009 à 19:42:01  profilanswer
 

Ben pour moi non ^^, c'est bien ce que je dis, je ne suis vraiment pas matheu ^^
 
Sinon, il y'a t'il une incidance sur la rapidité des traitements des données, si elles sont passé de INT a VACHAR ?
 
Si c'est une histoire comme quoi on ne peut pas utiliser tel ou tel fonction sur des champs de type varchar, je ne pense pas que cela m'affecte beaucoup, puisque ce sont des données qui ne bougeront pas.


Message édité par kontas le 19-05-2009 à 19:42:31
n°1886273
flo850
moi je
Posté le 19-05-2009 à 21:37:01  profilanswer
 

rien de notable , a moins que tu ne fasse souvent des additions de code postaux :o


---------------

mood
Publicité
Posté le 19-05-2009 à 21:37:01  profilanswer
 

n°1886291
kontas
Photographe amateur daltonien
Posté le 19-05-2009 à 22:41:35  profilanswer
 

ouai ^^, pas sur que cela soit vraiment utile ^^


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Mysql] Ajout d'un caractere "0" sur toutes les valeurs d'un champs

 

Sujets relatifs
probleme avec 2 mysql_fetch_assoc dans une seule while[résolu] afficher récursivement heure + mois sur deux champs
Problème vérification format champsInsérer des caractères spéciaux dans mysql
Lenteur formulaire avec de nombreux champs[PHP/mySQL] Different resultat d'une equete SQL entre PHP / phpMyAdmin
Avis MySQL une grosse table ou un MEDIUMTEXTformulaire + remplissage automatique de champs à partir d'un champ
Formulaire + remplir des champs automatiquement à partir d'une champmysql et c++ sous codeblocks erreur o niveau de insert
Plus de sujets relatifs à : [Mysql] Ajout d'un caractere "0" sur toutes les valeurs d'un champs


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