Damien Mathieu

Blog d’un développeur web

Zend Framework et Mysqli

novembre3

Je publie ce billet un peu rapidement comme une note car j’ai eu du mal à trouver l’information lorsque j’en ai eu besoin.

La documentation de Zend Framework n’indique que les informations de connexion pour SQLite dans app.ini.
Mais tout le monde n’utilise pas SQLite (et pour donner un avis totalement personnel, je dirais heureusement).

Voici donc les informations requises pour la configuration de MySQL dans votre application utilisant Zend Framework.

[general]
database.adapter = “MYSQLI”
database.params.host = “localhost”
database.params.username = “root”
database.params.password = “”
database.params.dbname = “myDatabase”

Et puis rien que pour le fun, Oracle :
[general]
database.adapter = “Oracle”
database.params.host = “localhost”
database.params.username = “root”
database.params.password = “”
database.params.dbname = “myDatabase”

SQL Server
[general]
database.adapter = “Pdo_Mssql”
database.params.host = “localhost”
database.params.username = “root”
database.params.password = “”
database.params.dbname = “myDatabase”

Et PostgreSQL
[general]
database.adapter = “Pdo_Pgsql”
database.params.host = “localhost”
database.params.username = “root”
database.params.password = “”
database.params.dbname = “myDatabase”

posted under PHP | 4 Comments »

SQL : créer un nouvel uplet si la requête ne retourne aucun résultat

octobre22

Supposons le contexte suivant : vous avez une application traduite en plusieurs langues.
Pour chacune des langues, vous avez une ou plusieurs chaines de caractères. Et dans votre application, vous faites, par exemple :

__(’maChaine’);

Ainsi, la chaine appropriée est affichée en fonction de la langue que vous avez sélectionnée.
Suite à cela, vous avez une base de données qui contient chacune de vos chaines avec la langue et la valeur dans cette même langue.

Lorsque vous appellez la fonction __() avec la valeur de votre choix, vous faites donc un appel à votre base de données qui vous retourne la valeur de la chaine pour la langue en cours.

Le problème, c’est que lorsque vous développez votre application, vous ne pensez pas toujours à ajouter la chaine à chaque fois que vous la placez dans votre code source. Cela serait un tantinet lourd.

La procédure stockée suivante vous permet dont de faire la requête de selection adéquate en fonction de la chaine de caractères et de la langue.
Et si il n’y a aucun élément de retourné, elle en ajoutera un dans la base, avec la chaine vide.

Après, vous n’avez plus qu’à remplir toutes les chaines qui ont été ajoutées lorsque vous surfez dans votre application :)

CREATE PROCEDURE getTrads
@chaine varchar(150),
@langue int
AS
BEGIN
SELECT valeur FROM params_langue
WHERE chaine = @chaine
AND id_langue = @langue
IF (@@Rowcount < 1)
INSERT INTO [params_langue] ([chaine], [valeur], [id_langue]) VALUES (@chaine, ”, @langue)
END

Note : cette procédure a été construire pour fonctionner sous SQL Server. Elle n’est pas forcément portable sur tous les SGBDR. Notamment la variable @@Rowcount, qui peut ne pas être disponible partout.

Puis appellez votre procédure stockée :

EXECUTE getTrads
"maChaine", 1

Ou 1 est l’identifiant de votre langue (vous pouvez remplacer cet identifiant par son nom si vous le désirez. Mais je vous le déconseille).

Maintenance serveur vendredi et samedi

septembre18

Je procéderais à une maintenance sur le serveur qui héberge ce blog (ainsi que RefStats).
La raison de celle-ci est assez simple. A l’heure actuelle, les bases de données SQL sont stockées au même endroit que les fichiers de log, dans /var.

J’ai besoin de plus d’espace disque pour ces bases SQL. Espace dont je dispose dans /home.
Je dois donc couper le serveur mysql, déplacer toutes les bases et le relancer.
Lorsque j’avais tenté de faire cela l’an dernier, j’avais tout cassé. Je compte ici prendre beaucoup plus de rigueur et ait déjà fait l’essai sur Norris. Il n’y a pas de raison que cela foire.

Je prévois cependant d’avoir quelques soucis. On sait jamais.
La maintenance aura donc lieu au mieux vendredi de 22h à 1-2h du matin (GMT+1). Si je n’ai pas fini à ce moment la, je remets tout en place et je finis le lendemain dans les mêmes horaires.

Inutile donc de visiter ce blog ou RefStats demain (et peut-être samedi) entre 22h et 2h du matin (GMT+1).

posted under Général | 1 Comment »

Rss Feeds

En Français
In English