[Résolu] Appel à une base de données externe depuis un script php indépendant

Bonjour,

Je cherche à afficher, au survol des régions d’une carte de France, les informations relatives à ces régions.
Ces informations sont contenues dans une base de données externe à Drupal.

Dans le fichiers settings.php, j’ai le code suivant :

<?php
$databases
= array (
 
'default' =>
  array (
   
'default' =>
    array (
     
'database' => 'drupal2',
     
'username' => 'root',
     
'password' => 'MAY@M9z1rT',
     
'host' => 'localhost',
     
'port' => '',
     
'driver' => 'mysql',
     
'prefix' => '',
    ),
  ), 
 
'extra' =>
  array(
   
'default' =>
    array(
     
'database' => 'extraf',
     
'username'=> 'username',
     
'password' => 'password',
     
'host' => 'xx.xx.xx.xx',
     
'driver' => 'mysql',
    ),
  ),
);
?>

Dans mon template, une fonction javascript contient la ligne de code suivante :

$.get("<?php echo $base_path . path_to_theme() ?>/actions.php"...

Le fichier actions.php se situe sous sites/all/themes/monTheme/actions.php et contient le code suivant :

<?php
  db_set_active
('extra');
 
$sSQL = "SELECT monChamp FROM maTable";
 
$query = db_query($sSQL);
  ...
 
db_set_active('default');
?>

Or, quand je passe la souris sur une région, j’obtiens l’erreur :
Fatal error : Call to undefined function db_set_active() in \sites\all\themes\monTheme\actions.php on line 3

Quelqu’un saurait-il d’où vient le problème ?

Merci,

#

Il est probable qu’il manque un include dans le fichier de thème pour que les fonctions de BD soient accessibles.

A vue de nez : http://api.drupal.org/api/drupal/includes—database—database.inc/functi… , je dirais qu’il faudrait faire un include_once sur includes/database/database.inc

#

C’était bien le problème, entre autres.
Il fallait en fait ajouter au début de mon fichier actions.php les lignes :

<?php
  define
('DRUPAL_ROOT','../../../../../drupal'); //chemin vers drupal
 
include DRUPAL_ROOT.'/includes/bootstrap.inc';
 
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
?>

Donc le include mais aussi définir la constante DRUPAL_ROOT.

Merci de votre réponse !

Syndiquer le contenu