IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Problème mettre à jour les enregistrements de la BDD


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Par défaut [SQL] Problème mettre à jour les enregistrements de la BDD
    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

  2. #2
    Membre émérite Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Par défaut
    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.

  3. #3
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Par défaut
    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 !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  4. #4
    Membre éclairé Avatar de Space Cowboy
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2005
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2005
    Messages : 496
    Par défaut
    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.

    <?php
    $chaine
    = '100 cm';
    $A=explode(' ',$chaine);
    // Tu devrait te retrouver avec
    echo $A[0]; // 100
    echo '<br/><br />';
    echo
    $A[1]; // cm

    ?>
    Si je me trompe pas. Après suffit de faire un update ...

  5. #5
    Membre émérite
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 910
    Par défaut idem que Space Cowboy
    Tout est dans le titre. C'est la solution que j'utilise également et que j'allais proposer.

  6. #6
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    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

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Par défaut
    Citation Envoyé par Space Cowboy
    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.


    Si je me trompe pas. Après suffit de faire un update ...
    Ok merci. Je débute et je comprends ta solution en théorie mais je ne sais pas comment la mettre en pratique. Tu pourrais détailler un peu plus le code stp.

  8. #8
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    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à

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Par défaut
    Citation Envoyé par nako
    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.
    J'ai des cas du genre 70 cm ou 80 cm

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/12/2012, 07h07
  2. Réponses: 4
    Dernier message: 04/05/2008, 23h39
  3. [SQL Server 2000] obtenir les enregistrements de x à y
    Par Jahz dans le forum Langage SQL
    Réponses: 5
    Dernier message: 13/03/2006, 12h22
  4. [VBA-E] comment ne pas mettre à jour les liaisons!
    Par max2245 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/12/2005, 12h05
  5. Mettre à jour les if et variable toute les x seconde.
    Par Guillaume602 dans le forum C++
    Réponses: 5
    Dernier message: 06/12/2005, 19h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo