Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & ODBC
PHP & ODBC Forum d'entraide sur ODBC avec PHP. Avant de poster -> FAQ ODBC
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/12/2010, 15h50   #1
Invité de passage
 
Inscription : juin 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3
Points : 1
Points : 1
Par défaut Classe pour connexion ODBC et DB2/Iseries

Bonjour,


Désolé j'ai bien lu deux trois discussions sur le forum pour des prob. identiques mais je suis pas férru en PHP donc j'ai pas trouvé ma solution :
Au départ j'avais dév ca pour une base de donnée MS_SQL et ca tournait bien. Aujourd'ui en utilisant la même classe mais en m'appuyant sur les pilotes ODBC ca ne tourne plus et je ne trouve pas :
Donc j'ai une classe qui fait ma connesion sur mon serveur DB2 via mon pilote ODBC :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<?php
    class Database {
          var $serveur;
          var $user;
          var $password;
          var $db;
 
          function Database ($host='SERVEUR',$util='USER',$mdpasse='PWD') {
 
          $this->serveur=$host;
          $this->user=$util;
          $this->password=$mdpasse;
          $this->db=odbc_pconnect($this->serveur,$this->user,$this->password);
          }
          function __destruct() {
          }
}
?>
Ensuite j'ai une page qui fait appel à cette classe avec le code suivant :


Code :
1
2
3
4
5
6
 
include 'connect.class.php';
    $mabase=new Database();
 
    $result="select IHINVN, IHORNO from SROISH where IHINVN='7107000001'";
    $result= odbc_do($mabase, $result);

Si dans ma classe je change le nom d'utilisateur passé pour la connexion ODBC, j'ai bien ne fenètre du client ODBC qui s'ouvre en me disant que l'utilisateur n'existe pas et me propose d'en saisir un autre. Si je change le mot de passe j'ai une erreur comme quoi le mote de passe est invalide. Donc ma classe semble fonctionner. (pas de soucis de conf du php.ini / include_path())

par contre lors de l'exécution de ma page principale, j'ai une erreur de type :
odbc_do() expects parameter 1 to be resource
Si je fais un écho de la variable $mabase il me dit qu'il ne peut pas la convertir en string.
Par ailleur j'ai testé de passer directement dans ma page principale la commande odbc_connect('SERVEUR','USER','PWD') et la pas de soucis ca fonctionne. (l'echo me renvoi alors in connection_id)
Je pense que je dois me prendre les pieds dans le tapis entre la fonction et la méthode mais ou ?
Je suis plutôt débutant en php, mais cela fonctionnait très bien avec la fonction mssql_connect() pour me connecter sur du MS_SQL 2000.

merci de vos lumières
fmonnot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 15h53   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
il va plutôt falloir faire un methode connect, la $mabase retourne l'objet
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 16h38   #3
Invité de passage
 
Inscription : juin 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3
Points : 1
Points : 1
Merci d'avoir répondu rapidement. Mais concrètement, vu que j'ai une maitrise limitée de PHP je ne vois pas ce qu'il faut que je modifie / ajoute et a quel endroit. dans la classe , dans l'appel de la classe ?
fmonnot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 17h20   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par fmonnot Voir le message
Merci d'avoir répondu rapidement. Mais concrètement, vu que j'ai une maitrise limitée de PHP je ne vois pas ce qu'il faut que je modifie / ajoute et a quel endroit. dans la classe , dans l'appel de la classe ?

il faut creer une methode connect

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 class Database {
          var $serveur;
          var $user;
          var $password;
          var $db;
 
          function connect ($host='SERVEUR',$util='USER',$mdpasse='PWD') {
 
          $this->serveur=$host;
          $this->user=$util;
          $this->password=$mdpasse;
          $this->db=odbc_pconnect($this->serveur,$this->user,$this->password);
           return $this->db;
          }
}
Code :
1
2
3
4
$mabase=new Database();
 $conn = $mabase->connect();
    $result="select IHINVN, IHORNO from SROISH where IHINVN='7107000001'";
    $result= odbc_do($conn, $result);

par contre la ton code c'est du PHP 4, sinon c'est quoi l'intérêt de faire ca ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 17h57   #5
Invité de passage
 
Inscription : juin 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3
Points : 1
Points : 1
Super, ca marche. Pour ce qui est de l'intérêt, mon objectif est de n'avoir à changer les paramètres d'utilisateur/mot de passe que dans un seul fichier et l'ensemble de mes pages appelant la fonction tourne. Après il y a surement plus élégant, comme je l'ai dis je ne suis pas pro du php ni du dév. Il y a peut être plus puissant / efficace que de passer par les pilotes odbc mais je n’ai pas trouvé les extensions db2 gratuites (merci ibm a tout faire payer ).
Si il y a plus heureux je suis preneur d'idées.
fmonnot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 18h00   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par fmonnot Voir le message
Super, ca marche. Pour ce qui est de l'intérêt, mon objectif est de n'avoir à changer les paramètres d'utilisateur/mot de passe que dans un seul fichier et l'ensemble de mes pages appelant la fonction tourne. Après il y a surement plus élégant, comme je l'ai dis je ne suis pas pro du php ni du dév. Il y a peut être plus puissant / efficace que de passer par les pilotes odbc mais je n’ai pas trouvé les extensions db2 gratuites (merci ibm a tout faire payer ).
Si il y a plus heureux je suis preneur d'idées.
pourquoi ne pas juste faire :
Code :
odbc_pconnect(SERVEUR, USER, PWD);
et le pconnect c'est voulu, t'as vraiment besoin d'une connexion persistante ?

Sinon au niveau des autre lib y'a PDO_IBM mais il est pas par default partout
http://www.php.net/manual/fr/ref.pdo-ibm.php
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h18.


 
 
 
 
Partenaires

Hébergement Web