Mysql + export + csv + groupy en gardant les colonnes groupées

Petit tips avec MySQL. Admettons que vous voulez faire un export en csv d’une table (A). Dans ce cas, c’est facile, il suffit d’utiliser « INTO OUTFILE ». Par contre, si vous avez une jointure (A -> B), c’est plus compliqué.

Il y a plusieurs solutions : soit on se retrouve avec plusieurs ligne de la table A en double, puis à « droite » de ces lignes , les colonnes de la table B.

Soit on utilise la fonction group_concat; et un petit hack ;)

Exemple :

SELECT c.id, c.first_name, c.last_name,  GROUP_CONCAT(CONCAT(p.bar_code,'||',p.quantity,'||',p.date) SEPARATOR "||")
FROM contact c
LEFT JOIN product p on (c.id = p.contact_id)
GROUP BY c.id
INTO OUTFILE '/tmp/export.csv' FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"';

On fait notre jointure normalement, on group by sur c.id, et c’est dans le select qu’il y a une peu de magie. On va d’abord concaténer les attributs de la table « product » avec comme séparateur deux pipes « || ». Et ensuite, on va concaténer toutes les valeurs résultantes de la fonction GROUP BY.

Enfin, il va falloir remplacer tous nos doubles pipes par « ; » qui correspond a nos délimiteurs de champs.

sed -i 's/||/";"/g' /tmp/export.csv

Et voila, vous avec un beau fichier CSV bien formaté ;) Ici le hack c’est de remplacer un délimiteur un peu spécial « || » par un vrai délimiteur, a posteriori.

P.S. : Il se peut que mysql exporte le fichier csv avec l’utilisateur mysql. Vous n’aurez donc pas les droits pour le lire et/ou le modifier. Il faut donc passer en root ;).

Résoudre le Bug de var_dump avec Xdebug sous ubuntu

Si jamais l’affichage des var_dump avec xdebug ne se rendent pas comme ils devraient (en gros comme sans xdebug) avec ubuntu 10.04 ou 10.10, il suffit d’editer le fichier php.ini (/etc/php5/apache2/php.ini) et de passer la variables html_errors a On :

sudo gedit /etc/php5/apache2/php.ini

Vers la ligne 604 (enfin chez moi)

html_errors = On

Sortie de la première version de Apache Zeta Components

Qu’est-ce que Apache Zeta Components ?

Les Zeta Components sont des modules ou packages php qui peuvent être inclus dans une application. Historiquement, ces composants porté le nom de eZ Components, mais depuis juillet 2010, ces composants ont été rattachés à la Fondation Apache. L’entreprise qui avaient commencé le développement de ces composants n’est autre que eZ Systems, qui developpe aussi le framework / CMS eZ Publish.

Ces modules ont l’avantages d’être très faiblement couplé, ce qui veut dire que l’on n’est pas obligé d’embarquer toute la librairie de composants dans son application.

Continue reading

Installation du paquet PECL XDebug avec Ubuntu

Suite a mon précédent article, je vais vous expliquer comment installer le paquet XDebug sur Ubuntu en utilisant le gestionnaire de paquets PECL.

Qu’est-ce que XDebug ?

Tout d’abord un petit rappel sur XDebug. Xdebug est une sur-couche (extension) au moteur PHP pour rendre plus user-friendly les messages d’erreurs et de debug de PHP. Bien entendu, ce type d’extension n’est à installer que sur un environnement de développement, et surtout pas en production.
Continue reading