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 ;).

Application de site E-Commerce [Code-Source]

Comme vous l’avez peut être vu passer sur twitter, j’ai du faire pour les cours une application e-commerce très basique. J’ai choisis de la faire avec Zend. Et du coup je partage le code ici ;). Cette application est très simplifié : il n’y a qu’une page produit, avec la possibilité d’ajouter des produits dans un panier et ensuite de gérer son panier. Il y a aussi la toute la partie gestion des utilisateurs : connexion, enregistrement, déconnexion etc… Et enfin il y a une page paiement qui vérifie les informations de la carte bancaire.

Continue reading

Comment passer de WP-codebox à Syntax Highlighter ?


J’ai changé de plugin pour le code source que je partage sur ce blog, passant de wp-codebox à Syntax Highlighter. J’ai changé car wp-codebox posait des problèmes avec le flux rss (celui ci n’était plus à jour et ne pouvais plus se générer). Sinon en terme d’utilisation, je trouve les deux très bien. Cependant y’a un petit plus pour syntax highlighter qui a un peu plus d’options et de thèmes, de plus le thème par défaut est très sympa.

Par contre la syntaxe à utiliser entre les deux est un peu différente. Je vous propose un petit script php a exécuter en ligne de commande pour pouvoir passer facilement de wp-codebox à Syntax Highlighter. Il va falloir commencer par exporter les données de la table *_posts (wp_posts par défaut) et de sauvegarder le fichier sur votre disque dur. (avec phpmyadmin, c’est un jeux d’enfant, cliquer sur l’image ci-dessous pour voir les options a cocher)
Continue reading

Zend Framework, Formulaire et Base de donnée, partie 2

database

On continue avec la deuxième partie de la gestion d’un formulaire, de la création de formulaire, et d’ajout de donnée en BDD dans le Zend Framework. Dans cette partie nous verrons comment afficher les données, les modifier à l’aide du même formulaire que pour l’ajout, et la suppression des données.
Continue reading

Zend Framework, Formulaire et Base de donnée, partie 1

database

Hello,
On va voir aujourd’hui comment construire et gérer un formulaire, ajouter les données récupéré dans une base de données, afficher ces données, et enfin modifier et supprimer celles-ci. En gros, on va utiliser les propriétés CRUD de Zend Framework en y associant une base de donnée et un formulaire.
P.S. : Pendant la rédaction de ce tuto, je me suis rendu compte qu’il allait être beaucoup trop gros, du coup j’ai décidé de le couper en deux parties, une première sur la création du formulaire et l’ajout en base, une deuxième sur la l’affichage, la modification et la suppression.
Continue reading