En fait je viens de réussir, j'en aurais perdu du temps sur ce truc!
Skeye: Bah en fait, on nous a fournit une BDD Oracle sur laquelle des fonctions ont été créé pour nous remonter automatiquement certaines informations. Le but de mon script et de contacter la base Oracle, appeler ces fonctions pour récupérer les données voulues. En gros ça nous évite de nous farcir l'étude de la BDD pour écrire les requêtes nous mêmes, d'autant que cette base Oracle, nous n'y auront pas accès en prod, là j'ai juste récupéré une copie pour pouvoir faire les dev.
Sinon pour info, voici le code qui fonctionne, la fonction appelée c'est GetTarif du package WEB_CMD_DEV:
Code :
public function update() { $host = Mage::getStoreConfig('service/fioul/host'); $dbname = Mage::getStoreConfig('service/fioul/dbname'); $username = Mage::getStoreConfig('service/fioul/dbuser'); $password = Mage::getStoreConfig('service/fioul/dbpasswd'); $conn = oci_connect($username, $password, "$host/$dbname";); if ($conn === false) { $e = oci_error(); Mage:: throwException(htmlentities($e['message'], ENT_QUOTES )); } $sql = 'BEGIN :rc := WEB_CMD_DEV.GetTarif; END;'; $stid = oci_parse($conn, $sql); if($stid === false){ $e = oci_error(); Mage:: throwException(htmlentities($e['message'], ENT_QUOTES )); } $curs = oci_new_cursor($conn); oci_bind_by_name($stid, ":rc", $curs, -1, OCI_B_CURSOR); if(oci_execute($stid) === false){ $e = oci_error(); Mage:: throwException(htmlentities($e['message'], ENT_QUOTES )); } if(oci_execute($curs) === false){ $e = oci_error(); Mage:: throwException(htmlentities($e['message'], ENT_QUOTES )); } $this->_showResultsTable($curs, 'oci'); }
|
( pour préciser, les données sont contenues dans la variable $curs, j'ai cachée le code de showResultsTable car il ne présente aucun intéret particulier, on parcours le curseur ligne par ligne avec la méthode oci_fetch_array($curs, OCI_ASSOC+OCI_RETURN_NULLS) et on accède aux données voulues dans le tableau associatif retourné par cette fonction ).
Message édité par c0wb0y le 03-12-2010 à 17:20:37