Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & Oracle
PHP & Oracle Forum d'entraide sur Oracle avec PHP. Avant de poster -> FAQ Oracle et Cours Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/04/2006, 14h57   #1
Invité de passage
 
Inscription : octobre 2002
Messages : 42
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 42
Points : 4
Points : 4
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 :
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
cbroissa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2006, 16h05   #2
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
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)
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2006, 16h05   #3
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
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 :
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
}
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2006, 16h16   #4
Invité de passage
 
Inscription : octobre 2002
Messages : 42
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 42
Points : 4
Points : 4
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.
cbroissa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2006, 16h20   #5
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
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.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2006, 16h29   #6
Invité de passage
 
Inscription : octobre 2002
Messages : 42
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 42
Points : 4
Points : 4
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.
cbroissa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2006, 16h51   #7
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
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 :
1
2
3
4
5
6
7
8
<?php
 
$array['FIELD'] = 'bouh';
$array['field'] = 'bleh';
 
echo $array['FIELD'];
 
?>
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2006, 10h26   #8
Invité de passage
 
Inscription : octobre 2002
Messages : 42
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 42
Points : 4
Points : 4
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
cbroissa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2006, 23h00   #9
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
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.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2006, 23h44   #10
Invité de passage
 
Inscription : octobre 2002
Messages : 42
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 42
Points : 4
Points : 4
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 ?
cbroissa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h23.


 
 
 
 
Partenaires

Hébergement Web