Salut a tous!
J'ai un petit probleme avec php et une include.
Je suis en train de coder une petite routine pour une intranet ou j'ai besoin d'aller verifier l'existance d'un code entre par l'utilisateur dans une base de donnees qui nous est fournie et est maintenu par un autre organisme sur un serveur. Elle est en MSSQL.
J'ai aussi une bdd qui a ete developpee en internet et est hebergee sur un autre serveur. Celle ci est en MySQL.
J'ai repris le code de qqun d'autre qui utilisait l'extension php PEAR et plus specifiquement le package MDB2.
En gros, pour se connecter a une base de donnees et faire des requetes, ca ressemble a ca :
Code :
- $dsn1 = 'mssql://login:pass@hostname/nomBase';
- $smdb2 =& MDB2::singleton($dsn1);
- if (PEAR::isError($smdb2)) {
- die($smdb2->getMessage());
- }
- $query = 'du SQL';
- $res = $smdb2->queryAll($query);
- if (PEAR::isError($res))
- {
- echo"$query<br>";
- die($res->getMessage() . ', ' . $res->getDebugInfo());
- }
|
Bon maintenant ce que j'aimerai faire c'est recuperer le handle pour la bdd dans une fichier separe de mon code. Ainsi j'aurais juste a include le fichier qui s'occupe de ca et a utiliser mon handle dans ma page.
Le code ressemble donc a ca :
Le fichier a include (pour les tests, une base est sur un serveur, l'autre est sur mon pc et j'utilise Wamp)
Code :
- require_once("C:\Program Files\wamp\bin\php\php5.2.6\PEAR\MDB2.php" );
- $dsn1 = 'mssql://login:pass@hostname/PertracSQL_Test';
- $smdb2 =& MDB2::singleton($dsn1);
- if (PEAR::isError($smdb2)) {
- die($smdb2->getMessage());
- }
- $smdb2->setFetchMode(MDB2_FETCHMODE_OBJECT);
- ////////////////////////////////////////////////////////////////////////////
- $dsn = 'mysql://root@localhost/lafayette_prod';
- $mdb2 =& MDB2::singleton($dsn);
- if (PEAR::isError($mdb2)) {
- die($mdb2->getMessage());
- }
- $mdb2->setFetchMode(MDB2_FETCHMODE_OBJECT);
- //////////////////////////////////////////////////////////////////////////
- ?>
|
Et le bout de code en lui meme :
Code :
- <?php
- require_once('include.php');
- function checkCode($code)
- {
- $smdb2 =& MDB2::singleton($dsn1);
- $query = ' Select * From table Where code = ' . '\'' . $code . '\'';
- $res = $smdb2->queryAll($query);
- if (PEAR::isError($res))
- {
- echo"$query<br>";
- die($res->getMessage() . ', ' . $res->getDebugInfo());
- }
- if (empty($res))
- {
- return false;
- }
- else
- {
- return true;
- }
- }
- echo codeCheck(some code);
|
Bon c'est pas le code exact mais ca donne une bonne idee. J'essaye juste de savoir si le code existe ou pas.
Le probleme c'est que malgre l'include, j'ai l'impression que le prog ne connait pas $dsn1 et tente donc se connecte a ma base MySQL par defaut et tente sa requete dans cette base, du coup ca marche pas.
Donc du coup j'ai deux question :
Suis-je oblige de mettre mon $dsn1 dans le code general et d'abandonner le include?
Pourquoi est-ce qu'il se connecte a ma base MySQL que j'ai sur mon ordi par defaut? C'est du a Wamp?
Message édité par alcomachaon le 24-10-2008 à 16:09:09