Carnet Multitables & Multibases

MultiBase Oracle

SPIP - Contrib :: Carnet SPIP :: Carnet Multitables & Multibases :: Derniers changements :: Recherche :

Nota SPIP-Contrib : une contrib qui remonte initialement a août 2005 (post SPIP 1.9 donc), depuis de nombreuses choses on changé sur le code, en particulier pour le portage multibase, voir par exemple : Portage de SPIP en PostGres

Une contrib donc probablement à remanier et à aboutir, mais la preuve est déjà faite que c’est possible ... contributeurs à vos claviers


Interroger une base Oracle grâce au MultiBase

Après plusieurs heures de recherche, de debug, j’ai enfin réussi à interroger une base Oracle.
voici donc le résultat des mes investigations :

Prérequis

Une connexion à Oracle qui fonctionne,

  1. vérifiez que vous avez bien un client oracle installé sur votre machine
  2. que le fichier TNSNAMES.ORA est bien configuré
  3. que l’extension php est installée
    dans le fichier php.ini supprimer le point virgule devant extension
    ;extension=php_oracle.dll

note : J’ai choisi de me connecter avec les commandes php Oracle ora, et non avec les commandes Oracle 8 oci, pas pour la simplicité du code, mais plutôt parce que je n’ai pas réussi a me connecter à ma base de tests avec les oci.

le fichier de connection et de traitement des boucles

j’ai créé un fichier inc_connect-ora.php3 avec pour début :

et avec les fonctions suivantes : function spip_ora_select, notez la gestion de $limit différente de mysql.

function spip_ora_fetch , ne pas oublier de remettre le résultat en minusucules !!!

function spip_ora_count

function spip_ora_free

Définition des tables

dans le fichier monsquelette_fonctions.php3

note importante : il faut s’arranger pour que les tables définies dans le tableau $GLOBALS['tables_des_serveurs_sql'] n’aient pas le même noms que les tables de SPIP, pour cela j’ai préfixé toutes les tables de "ora_" qui correspond au code de connexion du serveur ($table_ora['ora_articles'] =.

la boucle dans le squelette

Allez, je complique les choses et vais réaliser un lien entre les table ARTICLES et EPHEMERE_OPTIONS articles.article = ephemeres_options.ephemere


TODO :

  1. Fermer proprement la connexion à la base oracle
  2. tester, tester, et encore tester... merci pour votre aide...

Remerciements
merci beaucoup à :

@+ Coyote