PostGreSQL/MySQL.... Problème de Majuscule

Yemanjah Messages postés 8 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 29 avril 2008 - 9 févr. 2006 à 03:08
Yemanjah Messages postés 8 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 29 avril 2008 - 9 févr. 2006 à 13:44
Bonjour ,




J'ai un problème des plus étonnants , je souhaite mettre en place
une application qui bascule facilement d'une base de données à une
autre (dans mon cas MySQL/PostGreSQL).





Pour cela j'utilise les méthodes quasi-jumelles en php :





pg_query()/mysql_query()


pg_connect()/mysql_connect()


etc...




Bref , tout fonctionne correctement (la connexion se fait bien dans
les deux cas, il est possible de collecter des données dans les deux
bases, etc..)




J'ai quand même un problème assez étrange avec la fonction fetch_assoc


(pour les deux types de base).





Le cas n'est pas forcément simple à expliquer , donc j'vais prendre un exemple :





J'ai une requète simple du genre : "Select count(NumDessin)as Nombre from dessin ;"





j'appel donc une méthode d'une autre classe comme ceci :





$sqlCount = $Truc->SelectSQL("Select count(NumDessin)as Nombre from dessin ;");





Voici la méthode SelectSQL($MaRequete)


PHP:, ----
function SelectSQL($ReqSelect)

{

// On récupère le type de base dans une variable

$type = $this->TypeBase;

if ($type == "MySQL") {

// La base utilisé est de type MySQL , on utilise les méthodes MySQL d'accés à la base :
$this->Query $resultatNum mysql_query($ReqSelect)or die('Erreur SQL !

 

' . $ReqSelect . '
' . mysql_error());

return $this->GetArrayAssoc($resultatNum, $ReqSelect);

} elseif ($type == "PgSQL") {

// La base utilisé est de type PostGreSQL , on utilise les méthodes PostGre d'accés à la base :
$this->Query $resultatNum pg_query($ReqSelect)or die('Erreur PostgreSQL !
 

' . $ReqSelect . '
' . pg_last_error());

if (!$resultatNum) {

echo pg_last_error($resultatNum);

}

return $this->GetArrayAssoc($resultatNum, $ReqSelect);

}

    } 







Comme vous pouvez le voir, j'appel une methode GetArrayAssoc()...


vous l'avez devinez , ça me permet de récupérer un tableau associatif.





Voila la méthode GetArrayAssoc() (celle qui pose problème à mon avis) :


PHP:, ----
function GetArrayAssoc($QueryPar, $RequetSel)

{

// On récupère (encore) le type de base dans une variable

$type = $this->TypeBase;

if ($this->countSQL($RequetSel) > 0) {

if ($type == "MySQL") {

while ($d = mysql_fetch_assoc($QueryPar)) {

$Tableau[] = $d;

}

} elseif ($type == "PgSQL") {

while ($d = pg_fetch_assoc($QueryPar)) {

$Tableau[] = $d;

}

}

} else {

$Tableau = false;

}

var_dump($Tableau);

return $Tableau;

    } 







Je ne vous détail pas la fonction countSQL (qui me permet simplement de
compter le nombre d'enregistrement que renvoit la requete), à mon
humble avis mon problème ne vient pas de la.





Voila ce que me renvoit le var_dump du tableau associatif :





MySQL :


array(1) { [0]=> array(1) { ["Nombre"]=> string(2) "14" } }








PgSQL :


array(1) { [0]=> array(1) { ["nombre"]=> string(2) "14" } }





Comme vous pouvez le remarquer , le tableau est quasiment le même à une seule exception , la majuscule dans le tableau.





Ce qui m'embète en fait, car une fois revenue dans ma page principal, je récupère la valeur de cette façon :


$sqlNum[0]['Nombre']





Est-ce que quelqu'un sait d'ou le problème peut venir ???


Je suppose que c'est la fonction pg_fetch_assoc() qui est plus capricieuse que sa cousine mysql_fetch_assoc()....


Mais je n'ai rien trouvé à ce sujet dans la documentation PHP.





Merci d'avance.

2 réponses

FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
9 févr. 2006 à 11:50
En tout cas, c'est mal codé...

"
$type = $this->TypeBase;" <== ca sert strictement &#224; rien ca..."
$this->Query $resultatNum mysql_query($ReqSelect)or die('Erreur SQL !
" <== remarque, ca c'est pire !!
"
$this->Query $resultatNum pg_query($ReqSelect)or die('Erreur PostgreSQL !
 &amp;nbsp;

' . $ReqSelect . '
' . pg_last_error()); 
            if (!$resultatNum) { 
                echo pg_last_error($resultatNum); 
            }"
Le OR DIE() est la justement pour &#233;viter de faire un if() derriere ! Inutile ici !

Autrement, c'est pas dans ta table SQL que ca merde, mais bien de ton code.
De toute facon, tu utilises une classe sans utiliser les propri&#233;t&#233;s orient&#233;e objet de celle ci ! A quoi ca sert ???

function GetArrayAssoc($QueryPar, $RequetSel)  <== Pourquoi vouloir faire passer ta ressource Query et ta requ&#232;te string SQL en argument ?? Alors qu'il te suffit de faire :
$this->Query;
$this->Sql;
et tu obtiens tout ce que tu veux !
A mon avis, tu devrais revoir la structure de la classe. Rien que pour commencer.
0
Yemanjah Messages postés 8 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 29 avril 2008
9 févr. 2006 à 13:44
Merci de ton aide...
0
Rejoignez-nous