|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : mai 2006 Messages : 175 ![]() |
Bonjour,
Voilà j'ai une BDD avec plus de 800 enregistrements et je dois tous les mettre à jour. Il n'est pas question que je le fasse manuellement donc j'aimerais savoir comment le faire pour tous en une seule fois. Dans cette base j'ai un champ avec la taille le problème c'est que j'ai enregistré les valeurs comme ça : 100 cm, 110 cm, 120 cm... or je voudrais avoir juste des valeurs numériques et donc remplacé 100 cm par 100, 120 cm par 120 etc... Comment dois-je m'y prendre? Merci d'avance pour votre aide |
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : août 2003 Messages : 581 ![]() |
Salut, est-ce que tous tes enregistrements sont comme ça ?
c'est à dire composés d'un nombre de 3 chiffres, puis un espace, puis la chaine "cm" ? Dans ce cas là ça devrait pas être trop dur, mais as-tu des nombres plus petits que 100 ? Le cas échéant, sont-ils écrits "080 cm" ou "80 cm" ? Nako. |
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() ![]() Inscription : décembre 2003 Messages : 3 717 ![]() |
petite idée comme ça : tu fait un select *, tu stoques le résultat dans un array.
tu fait un explode sur le champ contenant ta longueur, avec comme séparateur espace, en ne gadans que le premier indice du tableau généré. il ne te reste plus qu'à tout re-injecter dans ta DB, et hop magie
__________________
Globalement inoffensif Merci de respecter les règles du forum. Aucune question technique par MP ! _______________________________________________________________________ La rubrique Ruby / Rails recrute. Contactez moi ! _______________________________________________________________________ Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS Tutoriaux HTML/CSS et PHP |
|
|
00
|
|
|
#4 | |
|
Membre éclairé
![]() Inscription : avril 2005 Messages : 495 ![]() |
Généralement, j'utilise php pour faire ce genre de truc. Je traite ligne par ligne en enregistrant directement à chaque ligne avec un update.
Citation:
|
|
|
|
00
|
|
|
#5 |
|
Membre chevronné
![]() |
Tout est dans le titre. C'est la solution que j'utilise également et que j'allais proposer.
|
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() ![]() Inscription : novembre 2004 Messages : 735 ![]() |
Bonjour,
Pour peut-être éviter un traitement BDD->Php->BDD, il serait utile de connaitre le serveur BDD que tu utilise ? En MySql, on peut utiliser INSTR et SUBSTRING pour faire ce genre de choses Bonne journée
__________________
Pierre 1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune. 2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers 3. Un code rapide c'est bien, un code maintenable c'est mieux ... Why was the font tag an orphan ? Because it didn't have a font-family. |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 791 ![]() |
Salut, plutôt que de passer par un tableau un str_replace() ou REPLACE(str,from_str,to_str) serait plus simple ^^
|
|
|
00
|
|
|
#8 | |
|
Nouveau Membre du Club
![]() Inscription : mai 2006 Messages : 175 ![]() |
Citation:
|
|
|
|
00
|
|
|
#9 | |
|
Nouveau Membre du Club
![]() Inscription : mai 2006 Messages : 175 ![]() |
Citation:
|
|
|
|
00
|
|
|
#10 | ||
|
Membre émérite
![]() ![]() Inscription : novembre 2004 Messages : 735 ![]() |
Supposons alors que le champ a modifié s'appelle a, je pense que cela donnerait un truc dans ce genre
Code SQL :
En gros bien sur. Je te conseille de faire un petit select de ceci avant pour vérifier Code SQL :
SELECT SUBSTRING(a,0,INSTR(a,' cm')) FROM matable WHERE INSTR(a,'cm') > 0 Bonne journée
__________________
Pierre 1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune. 2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers 3. Un code rapide c'est bien, un code maintenable c'est mieux ... Why was the font tag an orphan ? Because it didn't have a font-family. |
||
|
|
00
|
|
|
#11 | |
|
Nouveau Membre du Club
![]() Inscription : mai 2006 Messages : 175 ![]() |
Citation:
|
|
|
|
00
|
|
|
#12 |
|
Membre émérite
![]() ![]() Inscription : novembre 2004 Messages : 735 ![]() |
Il faut juste que tu execute la requete update dans phpmyadmin par exemple.
Pas besoin de php Par contre, je te conseille te faire un essai sur le select pour éviter de faire une fausse manip. Le select te permet de vérfier que cela fonctionne. Pour ce qui est du code SQL, il esta ssez simple, et similaire aux solutions que l'on t'a propposé en php Grace à INSTR, on trouve la position de la chaine ' cm' dans le champ. Ensuite avec SUSBTRING, on découpe le champ du début ( position 0 ) à la position de ' cm' renvoyé par INSTR Voilà
__________________
Pierre 1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune. 2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers 3. Un code rapide c'est bien, un code maintenable c'est mieux ... Why was the font tag an orphan ? Because it didn't have a font-family. |
|
|
00
|
|
|
#13 | |
|
Nouveau Membre du Club
![]() Inscription : mai 2006 Messages : 175 ![]() |
Citation:
|
|
|
|
00
|
|
|
#14 | |
|
Membre émérite
![]() ![]() Inscription : novembre 2004 Messages : 735 ![]() |
Citation:
Il me faut un deuxième café ce matin
__________________
Pierre 1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune. 2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers 3. Un code rapide c'est bien, un code maintenable c'est mieux ... Why was the font tag an orphan ? Because it didn't have a font-family. |
|
|
|
00
|
|
|
#15 | |||
|
Nouveau Membre du Club
![]() Inscription : mai 2006 Messages : 175 ![]() |
Citation:
voici la requete Code :
Affichage des enregistrements 0 - 29 (472 total, traitement: 0.0113 sec.) Seulement au lieu de les afficher dans le tableau ca dit en 1ere ligne : SUBSTRING( `heightlist` , 0 , INSTR( `heightlist` , ' cm' ) ) et ensuite toutes les lignes sont vides. C'esst normal? |
|||
|
|
00
|
|
|
#16 | ||
|
Membre émérite
![]() ![]() Inscription : novembre 2004 Messages : 735 ![]() |
Je crois savoir pourquoi cela ne marche pas, les chaines doivent commencer à l'index 1 et non à l'index 0.
Il te suffit de modifier le substring en remplaçant 0 par 1 . Il doit falloir également retrancher un caractère, pour ne pas capturer l'espace devant cm Code SQL :
__________________
Pierre 1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune. 2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers 3. Un code rapide c'est bien, un code maintenable c'est mieux ... Why was the font tag an orphan ? Because it didn't have a font-family. |
||
|
|
00
|
|
|
#17 | |||
|
Nouveau Membre du Club
![]() Inscription : mai 2006 Messages : 175 ![]() |
Citation:
|
|||
|
|
00
|
|
|
#18 | ||
|
Nouveau Membre du Club
![]() Inscription : mai 2006 Messages : 175 ![]() |
tu peux me dire si le code c bien ca
Code :
|
||
|
|
00
|
|
|
#19 | ||
|
Membre émérite
![]() ![]() Inscription : novembre 2004 Messages : 735 ![]() |
Ton update doit reprendre le code de ton select.
Celui que tu me présentes semble correct mais je pense que tu va prendre un caractère de trop ( l'espace devant cm ). Ensuite, il faudrait ne mettre à jour que les enregistrements ne possédant pas cm ( mois de ligne à traiter ). Pour cela, il faut tester si le INSTR est supérieur à 0 car celui-ci renvoie 0 si la chaine n'est pas trouvé Code SQL :
__________________
Pierre 1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune. 2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers 3. Un code rapide c'est bien, un code maintenable c'est mieux ... Why was the font tag an orphan ? Because it didn't have a font-family. |
||
|
|
00
|
|
|
#20 |
|
Nouveau Membre du Club
![]() Inscription : mai 2006 Messages : 175 ![]() |
ca a fonctionné parfaitement merci bien. Je dois encore le faire pour un champ. Le champ âge mais la ca se complique car le format est le suivant 1 an, 2 ans... mais j'ai aussi 'bébé' que je veux remplacer par 0. Je dois procéder en plusieurs fois non?
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com