Vous êtes sur la page 1sur 6

Configurer la connexion ZF - SQL Server 2008

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

driver PDO IV. Remerciements

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

VAUDIN Michael Olivier Van Hoof (ovh)

Publi le 5 octobre 2010 Mis jour le 29 avril 2011

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.

On peut maintenant passer la suite.


I. Installation dudit driver

Double-cliquez sur le fichier tlcharg SQLSRV2.0.EXE , vous devriez voir :

http://m-vaudin.developpez.com/tutoriels/zend-framework/connexion-zend-sqlserver/

1/6

Configurer la connexion ZF - SQL Server 2008

20/12/2012

Cliquez sur Yes , choisissez ensuite le rpertoire d'extraction des fichiers :

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

Configurer la connexion ZF - SQL Server 2008

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

Configurer la connexion ZF - SQL Server 2008

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 .

Vous devriez maintenant voir

gauche de la ligne, a signifie que l'extension est lance.

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

Configurer la connexion ZF - SQL Server 2008

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

<?php $config=array( 'Database'=>'nomdelabase', 'UID'=>'logindelabase', 'PWD'=>'motdepassedelabase' ); $connect=sqlsrv_connect('ASTYAN-PC\SQLEXPRESS',$config); ?>

Et voila vous tes connect, vous pouvez ensuite effectuer une requte comme ceci :
Slectionnez

<?php $result=sqlsrv_query($connect,'SELECT * FROM matable'); while($row=sqlsrv_fetch_array($result)) { echo $row['nomcolonnedematable']; } ?>


III. Connexion avec Zend_Db_Table en utilisant le driver PDO

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

Configurer la connexion ZF - SQL Server 2008

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

resources.db.adapter resources.db.params.adapterNamespace resources.db.params.host resources.db.params.username resources.db.params.password resources.db.params.dbname

= = = = = =

"pdo_sqlsrv" "Application" "localhost\SQLEXPRESS" "admin" "motDePasse" "nomBase"

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

Copyright 2000-2012 - www.developpez.com

http://m-vaudin.developpez.com/tutoriels/zend-framework/connexion-zend-sqlserver/

6/6