Académique Documents
Professionnel Documents
Culture Documents
20/12/2012
Forums Tutoriels Magazine FAQs Blogs Projets Chat Newsletter tudes Emploi Club Contacts T a b l e d e s m a t i r e s 0. Prrequis I. Installation dudit driver II. Connexion la base de
Accueil ALM Java driver natif Web EDI Langages SGBD Office Solutions d'entreprise Applications Mobiles Systmes donnes avec le .NET Dv.
III. Connexion avec Forum PHP FAQ PHP Cours PHP Zend_Db_Table en utilisant le
ACCUEIL ZF
Sources PHP
FORUM ZF
Livres PHP
Scripts PHP
Outils PHP
PHP
Comparatifs
Zend Framework
FAQ ZF
TUTORIELS ZF
LIVRES ZF
f E
i x
g p
u r
r e
e s
r s
l a
a v
Vous verrez dans cet article comment configurer une connexion une base de donnes SQL Server 2008, avec le framework Zend. 1 commentaire
L e s
a u t e u rL s a r t i c l e
L i e n s
s o c i a u
Fo e DnisrV P be u P
,
e i l-srhnisrV n oo e g w z A
et
ib M o
0. Prrequis
Tout d'abord, il faut tlcharger le driver PHP pour SQL SERVER 2008 cette adresse : Driver SQLSRV2.0 . Il faut aussi avoir Wamp (version2.0i) ou un autre server d'install, ainsi que Zend configur comme dcrit dans mon autre tutoriel ( Installer le framework Zend en 15 minutes ). Il vous faut galement l'un des systmes suivants : Windows Windows Windows Windows Windows Windows 7; XP Service Pack 3 ; Vista Service Pack 1 ou plus rcent ; Server 2008 ; Server 2008 R2 ; Server 2003 Service Pack 1.
http://m-vaudin.developpez.com/tutoriels/zend-framework/connexion-zend-sqlserver/
1/6
20/12/2012
Les fichiers ont t extraits dans C:\wamp\bin\php\php5.3.0\ext. Quittez Wamp (clic droit > exit) :
Relancez Wamp, puis faites un clic gauche sur l'icne, et allez dans PHP > PHP Extensions. Vous devriez voir l'image suivante : (quelques extensions ne seront pas coches chez vous, c'est normal)
http://m-vaudin.developpez.com/tutoriels/zend-framework/connexion-zend-sqlserver/
2/6
20/12/2012
Vous avez maintenant le choix entre six nouvelles extensions : php_sqlsrv_52_nts_vc6.dll (1) ; php_sqlsrv_52_ts_vc6.dll (2) ; php_sqlsrv_53_nts_vc6.dll (3) ; php_sqlsrv_53_ts_vc6.dll (4) ; php_sqlsrv_53_nts_vc9.dll (5) ; php_sqlsrv_53_ts_vc9.dll (6) ; 52 et 53 correspondent la version de PHP que l'on utilise, c'est--dire 5.3.0 dans ce tutoriel ; les extensions (1) et (2) fonctionnant avec la version 5.2.* de PHP, elles ne nous intressent donc pas ici. Si le nom du fichier pilote contient vc9 , il doit tre utilis avec une version de PHP compile avec Visual C++ 9.0. S'il contient vc6 , il doit tre utilis avec une version de PHP compile avec Visual C++ 6.0. Nous utilisons une version de PHP compile avec Visual C++ 6.0, les extensions (5) et (6) ne sont donc pas pour nous. Il ne reste que les extensions (3) et (4) qui sont respectivement non thread safe et thread safe , le choix entre ces extensions dpend de la .dll PHP qui est prsente dans le dossier : C:\wamp\bin\php\php5.3.0.
http://m-vaudin.developpez.com/tutoriels/zend-framework/connexion-zend-sqlserver/
3/6
20/12/2012
Personnellement, j'ai le fichier php5ts.dll, j'ai donc choisi la version thread-safe (4) (si vous avez le fichier php5.dll, l'extension (3) est faite pour vous !). Cliquez donc une fois sur la ligne php_sqlsrv_53_ts_vc6 , attendez quelques secondes, puis cliquez sur Restart All Services .
Lancez maintenant votre IDE prfr pour tester la connexion votre base de donnes.
II. Connexion la base de donnes avec le driver natif
Une fois votre IDE lanc, vous avez deux possibilits pour vous connecter : premire possibilit : Allez dans le fichier application.ini , qui se trouve dans le dossier Application/configs de votre projet et tapez les lignes suivantes :
En remplaant bien sr le nom d'hte (ASTYAN-PC\SQLEXPRESS) par le nom de votre PC ou une adresse IP suivie de \SQLEXPRESS si vous tes sous SQL SERVER 2008 EXPRESS, sinon mettez le nom du moteur aprs le \ , ex : ASTYAN-PC\EXPRESS2008R2 ; Testez ensuite la connexion la base de donnes en utilisant votre DbTable, Ex : DbTable Medecin ; $_name reprsente le nom de la table (ici Medecin) ;
Je n'entrerai pas plus dans les dtails de ce ct-l (ce n'est pas un tutoriel de Zend).
http://m-vaudin.developpez.com/tutoriels/zend-framework/connexion-zend-sqlserver/ 4/6
20/12/2012
deuxime possibilit de connexion : dans n'importe quelle page PHP de votre projet, tapez ceci (en modifiant ASTYAN-PC par votre base de donnes).
Slectionnez
Et voila vous tes connect, vous pouvez ensuite effectuer une requte comme ceci :
Slectionnez
PDO est la manire moderne de s'adresser aux bases donnes en PHP depuis la version 5, en offrant une couche oriente objet standard commune tous les moteurs de base de donnes. D'ailleurs beaucoup de bibliothques de bases de donnes de haut niveau s'appuient dessus. Pour plus d'informations je vous invite lire l'excellent article comprendre PDO . Pour utiliser une base de donnes SQL Server via PDO, Zend Framework propose la classe Zend_Db_Adapter_Pdo_Mssql. Malheureusement celle-ci s'appuie sur un ancien driver PDO. Pour utiliser le nouveau driver PDO de Microsoft, il suffit de modifier la manire de se connecter au driver natif. En parcourant la documentation on peut lire que la chane de connexion (DSN) doit tre au format suivant : sqlsrv:server=(local);Database=mabase. "(local)" est une syntaxe particulire qui remplace localhost, tout autre serveur s'crit normalement, par exemple : sqlsrv:server=192.168.1.2;Database=mabase. Sachant cela, nous pouvons driver la classe Zend_Db_Adapter_Pdo_Mssql et surcharger la mthode _dsn() qui se charge de construire la chane de connexion PDO.
library/Application/PDO/SqlSrv.php Slectionnez
class Application_PDO_SqlSrv extends Zend_Db_Adapter_Pdo_Mssql { /** * PDO type. * * @var string */ protected $_pdoType = 'sqlsrv'; /** * Creates a PDO DSN for the adapter from $this->_config settings. * * @return string */ protected function _dsn() { // baseline of DSN parts $params = $this->_config; $dsn = 'sqlsrv:server='; if (isset($params['host'])) { $dsn .= $params['host']; } $dsn = str_ireplace('localhost', '(local)', $dsn); if (isset($params['port']) && !empty($params['port'])) { $dsn .= ',' . $params['port']; } if (isset($params['dbname']) && !empty($params['dbname'])) { $dsn .= ';Database=' . $params['dbname']; } return $dsn; } }
http://m-vaudin.developpez.com/tutoriels/zend-framework/connexion-zend-sqlserver/ 5/6
20/12/2012
Il faut aussi changer l'attribut $_pdoType qui doit correspondre au nom systme du driver utilis : "pdo_sqlsrv" devient donc "sqlsrv". Pour utiliser automatiquement notre nouvel adaptateur, il suffit de prciser le namespace dans le fichier de configuration application/configs/application.ini :
application/configs/application.ini Slectionnez
= = = = = =
Comme vous pouvez le constater, la configuration ne change qu' deux endroits par rapport la version prcdente : le nom de l'adaptateur (pdo_sqlsrv) et le namespace pour utiliser notre classe. Cela suffit Zend Framework pour retrouver notre classe dans library/Application/PDO/SqlSrv.php. On peut ds lors tester avec une classe modle toute simple :
application/models/Users.php Slectionnez
class Application_Model_Users extends Zend_Db_Table_Abstract { protected $_name = 'Users'; protected $_primary = array('id'); } Et le test est tout aussi trivial :
Slectionnez
$users = new Application_Model_Users(); Zend_Debug::dump($users->fetchAll()); Ce bout de code affiche tous les enregistrements de la table users.
IV. Remerciements
Je tiens remercier tout particulirement Olivier Van Hoof pour son aide dans la publication de cet article, ainsi que mahefasoa pour sa relecture assidue.
Copyright 2010 A styan. A ucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose.
Responsable bnvole de la rubrique Zend Framework : Didier Mouronval - Contacter par email
Developpez.com
Nous contacter Participez Informations lgales
Services
Forum Zend Framework Blogs Hbergement
Partenaires
Hbergement Web
http://m-vaudin.developpez.com/tutoriels/zend-framework/connexion-zend-sqlserver/
6/6