Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : PostGreSQL/MySQL.... Problème de Majuscule [ Archives / Bases de données ] (Yemanjah)

jeudi 9 février 2006 à 03:08:32 | PostGreSQL/MySQL.... Problème de Majuscule

Yemanjah

  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 !<br>
          <p>&nbsp;</p>'
. $ReqSelect . '<br>' . 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 !<br> <p>&nbsp;</p>' . $ReqSelect . '<br>' . 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.

jeudi 9 février 2006 à 11:50:00 | Re : PostGreSQL/MySQL.... Problème de Majuscule

FhX

En tout cas, c'est mal codé...

"$type = $this->TypeBase;" <== ca sert strictement à rien ca...
"
$this->Query = $resultatNum = mysql_query($ReqSelect)or die('Erreur SQL !<br>" <== remarque, ca c'est pire !!

"
$this->Query = $resultatNum = pg_query($ReqSelect)or die('Erreur PostgreSQL !<br> <p>&nbsp;</p>' . $ReqSelect . '<br>' . pg_last_error());
            if (!
$resultatNum) {
                echo
pg_last_error($resultatNum);
            }"
Le OR DIE() est la justement pour é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étés orientée objet de celle ci ! A quoi ca sert ???

function GetArrayAssoc($QueryPar, $RequetSel)  <== Pourquoi vouloir faire passer ta ressource Query et ta requè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.

jeudi 9 février 2006 à 13:44:57 | Re : PostGreSQL/MySQL.... Problème de Majuscule

Yemanjah

    Merci de ton aide...



Cette discussion est classé dans : problème, base, mysql, type, tableau


Répondre à ce message

Sujets en rapport avec ce message

Problème Base de Donnée MySQL [ par snakykyle ] Bonjour tout le monde, Voila, je veux créer un espace membre, le problème s'est que j'ai pas bien saisi comment une fois que le membre s'est identifié problème avec les accents [ par chino18 ] Bonjour tout le monde! j'ai un problème qui va surement vous paraître un peu ballot, mais qui m'énerve grave! Voilà: J'insère dans ma base MySQL des d problème de condition [ par blackblade ] Hello,Gros problème dans ma condition pour ma base de données. J'ai une base de données dans laquelle si dans un champs précis (12) il est écrit ABS, problème de recherche sur base de données mysql [ par Xini28 ] Lorsque je fais une recherche dans une base de données mysql, il s'affiche "Resource id #3" au lieu de ce que je recherche. Quelqu'un sait de quoi ça Problème de connexion mysql [TITRE MODERE CAR PEU EXPLICITE] [ par blouxe ] Bonjour,j'ai un serveur Apache sous LinuxJ'ai un serveur de base de données mySQLJ'ai des scripts PHP sur le serveur Apache dans lesquels j'attaque ma problème des appostrofs dans l'insertion dans une base mysql [ par wsecure ] svp voir comment insérer un texte qui comprte des appostrofs ou des caractère spéciaux dans une table mysql et merçi recup ID [ par Joez ] bonjour voila mon problemeje fais un ajout dans une table, et j'ai besoin de recup l'id auto de cette occurrence tout de suite apres, c'est possible ? affichage de la base mysql dans un tableau [ par midos ] MiDo§bonjour,j'ai un petit probleme d'afficher dans un tableau ma base que j'ai créer avec mysql le nom de ma base c 'clients' et le nom de la table q tableau et base de donnee [ par renauddero ] Bonjours, Je souhaiterai definir les valeurs d'un tableau par une base de donnee.Voici mon code :    include('db.php');    mysql_select_db($database_c Problème connection base mysql via php [ par jiangnan ] Bonjour!J'ai un problème de connection sur la base mysql via php.par contre sous phpmyadmin je peut y accéder et aussi quand j'execute mysql -u -p ,ça


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version


LG KP501

Entre 9€ et 159€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,655 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.