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 :

Tableau résultat Sql et casse


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 42
    Points : 17
    Points
    17
    Par défaut Tableau résultat Sql et casse
    Salut,

    J'ai une requête toute simple :
    Select Champ1, Champ2 From table

    Je mets le résultat de cette requête dans un tableau $tableau.

    Pour afficher Champ 1 et Champ2, je dois faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo $tableau[Champ1];
    echo $tableau[Champ2];
    Ce que j'aimerais pouvoir faire c'est afficher le résultat quelque soit la casse de Champ1 et Champ2,
    par exemple que $tableau[CHAMP1] me retourne la valeur.

    J'ai besoin de ça car j'utilise mon script avec plusieurs BDD et Oracle retourne les champs tout en majuscule contrairement à Mysql qui garde la bonne casse.

    Y a t il une solution au niveau config de PHP, car j'ai ce problème dans plein de page et je n'ai pas le temps de faire la modif pour chaque requête.

    Merci

  2. #2
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    il me semble que MySQL est assez permissif de ce coté là...

    Essaie donc de tout coder comme tu le ferai pour oracle, et ca devrai passer (à tester tout de même, j'ai pas de easyPHP sous la main)
    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

  3. #3
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    À froid, je te propose un truc : dans ta boucle de récupération des données, recopie les champs dans un tableau associatif dont tu n'as que des indices que tu contrôles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while($row = mysql_fetch_assoc($result)){
       foreach($row as $field => $value){
          $row[strtolower($field)] = $value;
       }
     
       // suite des traitements : tu as tous les champs en minuscules
    }

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 42
    Points : 17
    Points
    17
    Par défaut
    merci, mais le problème c'est que je ne suis pas censé connaitre la casse des champs,
    donc là tu les mets tous en minuscules, mais ça se trouve dans mon programme, les champs sont écrits différement, et je n'ai pas envie d'aller dans toutes les pages pour les modifier.

    par contre j'utilise ADODB donc je récupère le tableau à un seul endroit et c'est là qu'il faudrait faire quelque chose.

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Citation Envoyé par cbroissa
    Ce que j'aimerais pouvoir faire c'est afficher le résultat quelque soit la casse de Champ1 et Champ2
    Je te prie de m'excuser si je t'ai induit sur une fausse piste, cependant il m'avait semblé que tu cherchais un moyen d'accéder à tes champs quelle que soit leur casse. Je te propose d'y accéder systématiquement en minuscules, ce qui revient fondamentalement au même.

    Si tu ne connais pas la casse du champ en cours d'utilisation, utilise à nouveau strtolower() et tu seras sorti d'affaire.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 42
    Points : 17
    Points
    17
    Par défaut
    pas de problème, je me suis peut être mal expliqué, en tout cas merci de te pencher sur mon problème,

    dans ma table, j'ai Champ1, Champ2,
    en mysql, je les récupère tel quel
    sous oracle, ils deviennent CHAMP1, CHAMP2,

    dans mon code, quand je fais un echo, j'ai d'abord développé avec Mysql (j'utilisais pas Oracle), donc j'appelle $tableau[Champ1] avec un C majuscule et le reste en minuscule.

    Problème sous Oracle, ça ne retourne rien car le tableau est rempli avec CHAMP1.

    Je n'ai pas envie de toucher à mon code car ce problème se renouvelle pour chaque requête sur des 100taines de pages.

    Ta solution ne peut donc pas me servir car il faudrait que j'aille toucher tout monde code,
    par contre j'ai une page intermédiaire ou toutes les requêtes sont executés sous ADODB et là je peux peut être faire quelque chose mais quoi ?
    Je dois pouvoir remplir autant $tableau[Champ1] que $tableau[CHAMP1] et malheureusement je n'ai pas que ces 2 possibilités, il peut y avoir en exagérant $tableau[ChAmP1].

    Merci, j'espère avoir été plus clair.

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    J'ai bien compris ta problématique.

    Le souci est que PHP fait la différence entre les index ayant une casse différente. Du coup, tu seras bien obligé, à un moment ou à un autre, de toucher à ton PHP... C'est là qu'intervient ma solution.

    Pour la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
     
    $array&#91;'FIELD'&#93; = 'bouh';
    $array&#91;'field'&#93; = 'bleh';
     
    echo $array&#91;'FIELD'&#93;;
     
    ?>

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 42
    Points : 17
    Points
    17
    Par défaut
    je ne pourrais pas utiliser les expressions régulières (je ne sais pas comment),
    pour avoir quelque chose comme : $tableau[CcHhAaMmPp1] et donc toutes les combinaisons seraient réunies ?

    merci

  9. #9
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Oui, en effet, mais cela supposerait que tu touches à ton code PHP, auquel cas il serait largement plus simple de mettre en place la solution proposée plus haut (strtolower()). À toi de voir.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 42
    Points : 17
    Points
    17
    Par défaut
    non car j'utilise la couche ADODB, donc le résultat de la requête et la construction du tableau se fait qu'à un seul endroit,

    mais peut on faire un tableau insensible à la casse ?

Discussions similaires

  1. Résultat sql dans un tableau html
    Par devsymf2 dans le forum Langage
    Réponses: 1
    Dernier message: 21/09/2012, 19h05
  2. Optimisation résultat SQL -> tableau
    Par Mr N. dans le forum Langage
    Réponses: 4
    Dernier message: 06/09/2010, 13h47
  3. Ranger résultat sql dans un tableau avec while
    Par lemano dans le forum Langage
    Réponses: 4
    Dernier message: 15/06/2010, 11h36
  4. Tableau avec résultat SQL d'une BDD Access
    Par Courgette17 dans le forum JDBC
    Réponses: 4
    Dernier message: 24/04/2007, 12h24
  5. [MySQL] Affichage de résultats SQL dans un tableau
    Par illight dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 14/02/2007, 10h24

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