[php] [mysql] [resolu] problème de récupération de donnée pour "publipostage"

Bonjour à tous,

J’ai cherché sur google, j’ai essayé un tas de trucs, mais je n’ai pas réussi à faire ce que je voudrais, je me permet donc de vous embêter ! :smiley:

J’ai développé avec un collègue pour le boulot un « site » en PHP associé à une base MYSQL, histoire de récupérer toutes les donnée des avaries qui interviennent pendant des périodes d’entretien afin de pouvoir les transmettre à l’industriel en charge du chantier.
A la base ce truc était basé sur un tableau excel mis sur le réseau et que tout le monde remplissait (avec les limites qu’implique un tableau excel en réseau) et un mec désigné faisait un publipostage des lignes acceptées par le boss et le bigboss. :slight_smile:

Maintenant, grâce au PHP et à MYSQL, tout le monde peux entrer les fameuses données en même temps. C’est impec, jusque là on a réussi à faire un truc propre (identification du boss, du bigboss, et d’un admin, affichage en fonction des différents visas et tout le toutim), nickel quoi… :slight_smile:

Là où on bloque vraiment, c’est sur le formatage de la sortie papier, obligatoire et qui doit suivre un formulaire bien précis.

Tout ce qu’on a réussi à « bricoler », c’est que quand on clique sur le numéro de la fiche à imprimer, une pop-up html s’ouvre. Cette pop-up contient en image de fond ce formulaire « vierge », sur lequel sont positionnés au mieux (donc à l’arrache) par du CSS les champs préremplis (via une requête php vers la base mysql). :stuck_out_tongue:

Quand je vous disait que c’était du bricolage… A la limite ça peut le faire, mais il suffit que l’industriel change son formulaire ou même que les marges soient modifiée dans l’impression à partir d’IE et on est mal…

Ce que je cherche donc à faire, c’est un espèce de publipostage à partir de la base mysql avec filtres de sélections, car toutes les fiches ne doivent pas être systématiquement imprimées, et que les fiches à imprimer ne se suivent pas forcément du fait des visas nécessaires avant transmission.

Je me demande donc si il est possible par exemple de remplir une espèce de fichier modèle word/pdf ou autre (qui serait stocké sur le serveur, sur lequel on a tous les droits soit dit en passant ) en choisissant de façon simple les fiches à imprimées.

L’idéal serait que tout ce publipostage ce lance à partir du site, sans utiliser trop de logiciels tiers, à part évidement word ou autre assimilés, l’idée étant qu’un mec qui a déjà du mal à faire un publipostage excell => word y arrive !

des petites infos qui pourraient sevir : toutes les machines sont sous XP, le serveur utilise easyphp 3.xx et va bientôt passer sous easyphp 5.xx, ont peut avoir tous les droits sur le serveur, et le gars qui doit faire le publipostage travail direct sur le serveur.

En attendant vos réponse je continue à chercher ! :smiley:

Merci d’avance !

Pourquoi ne pas utiliser une bibliothèque de génération de PDF comme http://www.fpdf.org/

+1 TRES bon outil, faut bien suivre les tutos

Ok je vais regarder ça de plus près…

j’espère trouvé mon bonheur !

bon après avoir regardé de plus près j’en revient en fait au même souci, si l’industriel change sont formulaire papier il faut tout reprogrammé, je continu à chercher du coter du ODBC pour aller chercher les données direct dans la base à partir de word mais je bloque sur “l’accès” à la bonne table, pour le moment je n’accède qu’a la base qui contient toutes les tables mais bon je continu à cherché !

Je suis désolé de faire un double post mais comme j’ai trouvé la solution je la met ici et j’ajoute résolu sur le titre du post:

Donc finalement je suis reparti sur un publipostage sous word tout « simplement » :smiley: (ce fut dur)

J’ai téléchargé le pilote ODBC pour mysql ici : http://dev.mysql.com/downloads/connector/odbc/5.1.html

Je l’ai installé, jusque la aucun problème c’est tout simple.

Ensuite j’ai cherché encore et encore dans word mais ce sacré pilote n’apparais nulle par, en fait il faut d’abord configurer les sources ODBC dans les outils d’administration :

dans le panneau de configuration, il faut aller dans outils d’administration puis Sources de données ODBC

La dans les sources de données utilisateur il faut en créer une nouvelle :
donc : Ajouter et là on peut enfin voir apparaitre (et donc choisir) MYSQL ODBC

Il faut remplir les différents champs : nom du fichier, adresse du serveur (pour moi en local pour le moment), user, MDP et choisir la base de donnée (la table sera choisie plus tard).
On valide tous ça et c’est bon on peux aller dans word.

Word 2007 démo:

Select Recipients
Use existing List : Et c’est la que c’est important il faut cliquer sur :
New source : On choisi ODBC DSN et dans la liste qui apparait on choisi celle qu’on a créer dans les sources de données ODBC.
A ce moment on peut enfin choisir la table qui nous intéresse
Et hop on enregistre.
Maintenant on peut voir apparaitre un nouveau fichier de source de donnée qui ce nomme par défaut du nom de la base + table et qu’on utilise donc.

Pour la suite c’est comme un publipostage classique ou on place les champs que l’on veux récupérer dans la base à l’emplacement adéquat sur le document à créer.

Je précise qu’il faut évidement que le serveur soit lancé (ben oui j’ai galéré la dessus :smiley: ) et que ce n’est pas forcément l’ID de la table qui en utilisé pour le publipostage mais plutôt la position de la ligne dans la table, si des ligne ont été supprimées et que donc les ID ne ce suivent plus ça peut vite être galère.

Je suis désolé pour les fautes d’orthographe, et j’espère que ce petit « truc » pourra servir à d’autres. :slight_smile:
En tout cas merci pour vos réponses !

Merci pour le minituto, ça peux toujours servir.

Je rajoute un petit bout de tuto après avoir galéré pendant quelques heures (beaucoup en fait) pour faire un publipostage de base de donnée mysql vers word toujours, mais en utilisant word 2000 cette fois !

Et il est moins tolérant le bougre !

En gros la procédure reste la même, on installe le pilote ODBC et on va le configurer à partir des outils d’administration, sauf qu’en plus il faut rentrer dans les « détails » :wink:

Donc : cliquer sur détails et dans les différents onglets qui apparaissent (je n’est pas compris la moitiée des options :slight_smile: et quand je dis la moitié je me comprend hein ) ont va dans le dernier (misc option) et dans le menu déroulant de « character set » il faut choisir celui qui correspond à votre base de donnée !!!
Dans mon cas, par exemple, la base de donnée utilise un interclassement : utf8_general_ci donc j’ai choisi : utf8.

Dans word maintenant, il faut démarrer un publipostage « classique » sauf qu’il faut utiliser MSQUERY (il faudra peut être l’installer grâce au cd) et aller chercher la table qui nous interesse dans la base, toutes les options proposée ne me servent pas, a priori c’est pour faire « du tri »

Il ne reste plus qu’a ajouter les champs de publipostage la ou il faut dans le document !

Si on ne fait pas la manip dans le mysql connector, et bien msquery arrive à récupérer les infos, il les affiche parfaitement dans sont tableau de synthèse, il les importe également dans excel par exemple mais par contre, word lui n’affiche pas les champs de la base de donnée avec une valeur d’interclassement !

Et je peut vous dire que google n’a pas été mon ami sur ce coup là ! (bon en même temps je savait pas trop comment lui poser ma question !)