begin process at 2008 05 12 03:03:45
1 170 129 membres
34 nouveaux aujourd'hui
13 956 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

GÉNÉRER UN ÉTAT SOUS WORD EN PHP


Information sur le tutorial

Catégorie :Tutoriaux Date de création : 13/03/2008 17:38:38 Vu : 2 338 fois

Note :
Aucune note

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

Description

Ce tuto vous montre une méthode simple et pratique de créer un document word contenant des données issues d'un traitement PHP.
Ce tutoriel suppose que vous avez des notions de base en PHP (Accès aux fichiers, Gestion des chaines de caractère).
Il est basé sur un modèle créé avec Microsoft Office 2003.

Tutorial

Générer un fichier Word en PHP. (Pour débutants en PHP)

Ce document exploite 2 fichiers

  • template.htm qui est le fichier modèle contenant votre lettre type
  • export.php qui est le fichier contenant les sources nécessaires à la création de votre fichier Word.

Etape 1 : Le fichier modèle

Le fichier modèle est une page que vous avez créé à l'aide de MS Word version antérieure à 2007.

Voici mon fichier template.htm

//////////////////////////////////

<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 11">
<meta name=Originator content="Microsoft Word 11">
<title>$titrefacture</title>
<style>
 @font-face
 {font-family:Tahoma;
 panose-1:2 11 6 4 3 5 4 4 2 4;
 mso-font-charset:0;
 mso-generic-font-family:swiss;
 mso-font-pitch:variable;
 mso-font-signature:1627421319 -2147483648 8 0 66047 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {mso-style-parent:"";
 margin:0cm;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 text-autospace:none;
 font-size:10.0pt;
 font-family:"Times New Roman";
 mso-fareast-font-family:"Times New Roman";}
h1
 {mso-style-next:Normal;
 margin:0cm;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 page-break-after:avoid;
 mso-outline-level:1;
 tab-stops:center 248.1pt;
 text-autospace:none;
 font-size:10.0pt;
 font-family:Tahoma;
 mso-font-kerning:0pt;
 text-decoration:underline;
 text-underline:single;}
h2
 {mso-style-next:Normal;
 margin:0cm;
 margin-bottom:.0001pt;
 text-align:center;
 mso-pagination:widow-orphan;
 page-break-after:avoid;
 mso-outline-level:2;
 text-autospace:none;
 font-size:16.0pt;
 font-family:Tahoma;}
h3
 {mso-style-next:Normal;
 margin-top:6.0pt;
 margin-right:0cm;
 margin-bottom:0cm;
 margin-left:0cm;
 margin-bottom:.0001pt;
 text-align:left;
 mso-pagination:widow-orphan;
 page-break-after:avoid;
 mso-outline-level:3;
 text-autospace:none;
 font-size:11.0pt;
 font-family:Tahoma;
 font-style:italic;}
p.MsoHeader, li.MsoHeader, div.MsoHeader
 {margin:0cm;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 tab-stops:center 8.0cm right 16.0cm;
 text-autospace:none;
 font-size:10.0pt;
 font-family:"Times New Roman";
 mso-fareast-font-family:"Times New Roman";}
p.MsoFooter, li.MsoFooter, div.MsoFooter
 {margin:0cm;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 tab-stops:center 8.0cm right 16.0cm;
 text-autospace:none;
 font-size:10.0pt;
 font-family:"Times New Roman";
 mso-fareast-font-family:"Times New Roman";}
 /* Page Definitions */
 @page Section1
 {size:595.3pt 841.9pt;
 margin:1.0cm 1.0cm 39.7pt 42.55pt;
 mso-header-margin:34.0pt;
 mso-footer-margin:39.7pt;
  mso-paper-source:0;}
div.Section1
 {page:Section1;}
 /* List Definitions */
 @list l0
 {mso-list-id:891423539;
 mso-list-type:simple;
 mso-list-template-ids:67895297;}
@list l0:level1
 {mso-level-number-format:bullet;
 mso-level-text:\F0B7;
 mso-level-tab-stop:18.0pt;
 mso-level-number-position:left;
 margin-left:18.0pt;
 text-indent:-18.0pt;
 font-family:Symbol;
 mso-bidi-font-family:Symbol;}
ol
 {margin-bottom:0cm;}
ul
 {margin-bottom:0cm;}
</style>
</head>

<body lang=FR style='tab-interval:35.4pt;text-justify-trim:punctuation'>

<div class=Section1>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:Tahoma'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='margin-left:248.1pt'><span style='font-size:11.0pt'>$titre<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:248.1pt'><span style='font-size:11.0pt'>$nomclient<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:248.1pt'><span style='font-size:11.0pt'>$adresseclient<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:248.1pt'><b style='mso-bidi-font-weight:
normal'><u><span style='font-size:11.0pt'>$ville - $pays<o:p></o:p></span></u></b></p>

<p class=MsoNormal style='margin-left:248.1pt'><span style='font-size:11.0pt;
font-family:Tahoma'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='margin-left:248.1pt'><span style='font-size:11.0pt;
font-family:Tahoma'><o:p>&nbsp;</o:p></span></p>

<h2 style='margin-top:36.0pt'>Facture N° $numfacture du $datefacture</h2>

<p class=MsoNormal align=center style='text-align:center'><span
style='font-family:Tahoma'>Affaire&nbsp;$nomdossier<o:p></o:p></span></p>

<div style='mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;
mso-border-bottom-alt:solid windowtext .75pt;padding:0cm 0cm 1.0pt 0cm;
margin-left:99.25pt;margin-right:99.15pt'>

<p class=MsoNormal align=center style='text-align:center;border:none;
mso-border-bottom-alt:solid windowtext .75pt;padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><span
style='font-size:6.0pt;font-family:Tahoma'><o:p>&nbsp;</o:p></span></p>

</div>

<p class=MsoHeader style='tab-stops:35.4pt'><span style='font-family:Tahoma'><o:p>&nbsp;</o:p></span></p>

<p class=MsoHeader style='tab-stops:35.4pt'><span style='font-family:Tahoma'><o:p>&nbsp;</o:p></span></p>

<p class=MsoHeader style='tab-stops:35.4pt'><span style='font-family:Tahoma'><o:p>&nbsp;</o:p></span></p>

<table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
 style='border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
 mso-yfti-tbllook:480;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-insideh:
 .5pt solid windowtext;mso-border-insidev:.5pt solid windowtext'>
 <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
  <td width=461 valign=top style='width:345.6pt;border:solid windowtext 1.0pt;
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoHeader style='tab-stops:35.4pt'><b><span lang=EN-GB
  style='font-family:Tahoma;mso-ansi-language:EN-GB'>DILIGENCES</span></b><span
  style='font-family:Tahoma'><o:p></o:p></span></p>
  </td>
  <td width=248 valign=top style='width:185.8pt;border:solid windowtext 1.0pt;
  border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
  solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><span
  style='font-family:Tahoma'>$dil<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:1'>
  <td width=461 valign=top style='width:345.6pt;border:solid windowtext 1.0pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoHeader style='tab-stops:35.4pt'><b><span lang=EN-GB
  style='font-family:Tahoma;mso-ansi-language:EN-GB'>SECRETARIAT</span></b><span
  style='font-family:Tahoma'><o:p></o:p></span></p>
  </td>
  <td width=248 valign=top style='width:185.8pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><span
  style='font-family:Tahoma'>$secret<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:2'>
  <td width=461 valign=top style='width:345.6pt;border:solid windowtext 1.0pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoHeader style='tab-stops:35.4pt'><b><span lang=EN-GB
  style='font-family:Tahoma;mso-ansi-language:EN-GB'>FRAIS</span></b><span
  style='font-family:Tahoma'><o:p></o:p></span></p>
  </td>
  <td width=248 valign=top style='width:185.8pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><span
  style='font-family:Tahoma'>$frais<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:3'>
  <td width=461 valign=top style='width:345.6pt;border:solid windowtext 1.0pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoHeader style='tab-stops:35.4pt'><b><span lang=EN-GB
  style='font-family:Tahoma;mso-ansi-language:EN-GB'>DEBOURS</span></b><span
  style='font-family:Tahoma'><o:p></o:p></span></p>
  </td>
  <td width=248 valign=top style='width:185.8pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><span
  style='font-family:Tahoma'>$deb<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:4'>
  <td width=461 valign=top style='width:345.6pt;border:solid windowtext 1.0pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><span
  style='font-family:Tahoma'>Total HT<o:p></o:p></span></p>
  </td>
  <td width=248 valign=top style='width:185.8pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><span
  style='font-family:Tahoma'>$tht<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:5'>
  <td width=461 valign=top style='width:345.6pt;border:solid windowtext 1.0pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><span
  style='font-family:Tahoma'>TVA<o:p></o:p></span></p>
  </td>
  <td width=248 valign=top style='width:185.8pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><span
  style='font-family:Tahoma'>$tva<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:6;mso-yfti-lastrow:yes'>
  <td width=461 valign=top style='width:345.6pt;border:solid windowtext 1.0pt;
  border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><b><span
  style='font-size:12.0pt;font-family:Tahoma'>Total TTC</span></b></p>
  </td>
  <td width=248 valign=top style='width:185.8pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><span
  style='font-family:Tahoma'>$ttc<o:p></o:p></span></p>
  </td>
 </tr>
</table>

<p class=MsoHeader style='tab-stops:35.4pt'><span style='font-family:Tahoma'><o:p>&nbsp;</o:p></span></p>

<p class=MsoHeader style='tab-stops:35.4pt'><span style='font-family:Tahoma'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='margin-right:-.1pt;tab-stops:right 11.0cm 411.1pt 18.0cm'><b><span
lang=EN-GB style='font-family:Tahoma;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></b></p>

<h1><span style='font-weight:normal;mso-bidi-font-weight:bold;text-decoration:
none;text-underline:none'>Date d'échéance&nbsp;: $datech<o:p></o:p></span></h1>

<h1><span style='font-weight:normal;mso-bidi-font-weight:bold;text-decoration:
none;text-underline:none'><o:p>&nbsp;</o:p></span></h1>

<h1><span style='font-weight:normal;mso-bidi-font-weight:bold;text-decoration:
none;text-underline:none'><o:p>&nbsp;</o:p></span></h1>

<h1><span style='font-weight:normal;mso-bidi-font-weight:bold;text-decoration:
none;text-underline:none'><o:p>&nbsp;</o:p></span></h1>

<h1><span style='font-weight:normal;mso-bidi-font-weight:bold;text-decoration:
none;text-underline:none'><o:p>&nbsp;</o:p></span></h1>

<h1><span style='font-weight:normal;mso-bidi-font-weight:bold;text-decoration:
none;text-underline:none'><o:p>&nbsp;</o:p></span></h1>

<h1 align=right style='text-align:right'><span style='font-weight:normal;
mso-bidi-font-weight:bold;text-decoration:none;text-underline:none'><o:p>&nbsp;</o:p></span></h1>

<h1 align=right style='text-align:right'><span style='font-weight:normal;
mso-bidi-font-weight:bold;text-decoration:none;text-underline:none'><o:p>&nbsp;</o:p></span></h1>

<h1 align=right style='text-align:right'><span style='font-weight:normal;
mso-bidi-font-weight:bold;text-decoration:none;text-underline:none'><o:p>&nbsp;</o:p></span></h1>

<h1 align=right style='text-align:right'><span style='font-weight:normal;
mso-bidi-font-weight:bold;text-decoration:none;text-underline:none'><o:p>&nbsp;</o:p></span></h1>

<h1 align=right style='text-align:right'><span style='font-weight:normal;
mso-bidi-font-weight:bold;text-decoration:none;text-underline:none'>Le service
Comptabilité<o:p></o:p></span></h1>

<h1 align=right style='text-align:right'><span style='font-weight:normal;
mso-bidi-font-weight:bold;text-decoration:none;text-underline:none'><o:p>&nbsp;</o:p></span></h1>

<b><u><span style='font-size:10.0pt;font-family:Tahoma;mso-fareast-font-family:
"Times New Roman";mso-ansi-language:FR;mso-fareast-language:FR;mso-bidi-language:
AR-SA'><br clear=all style='page-break-before:always'>
</span></u></b>

<h1 align=right style='text-align:right'><span style='font-size:12.0pt'>Détail
des prestations facturées - Affaire&nbsp;: $nomdossier<o:p></o:p></span></h1>

<p class=MsoHeader style='tab-stops:35.4pt'><span style='font-family:Tahoma'><o:p>&nbsp;</o:p></span></p>

<p class=MsoHeader style='tab-stops:35.4pt'><span style='font-family:Tahoma'><o:p>&nbsp;</o:p></span></p>

<p class=MsoHeader style='tab-stops:35.4pt'><span style='font-family:Tahoma'>$tableaudetails<o:p></o:p></span></p>

</div>

</body>

</html>

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  1. Ouvrez donc MS Word, Tapez y votre lettre type. Et à chaque emplacement de données, tapez la $variable php correspondante.
  2. Enregistrez votre fichier au format htm (template.htm) à un emplacement facilement accessible à partir de votre application PHP.
  3. Ouvrez votre fichier modèle template.htm à l'aide de votre éditeur HTML afin de vérifier que vos variables php introduites à l'aide de MS Word n'ont pas été formatées texte lors de l'enregistrement.
  4. Une fois toutes vos variables en bonne forme et place au sein du code HTML de structuration du document, enregistrez et fermez le template.htm.
  5. Passez à l'étape 2.

Etape 2 : Les variables PHP

J'ai veillé à nommer toutes mes variables dans template.htm par le même nom que j'utiliserais dans export.php

Voici le fichier export.php

<?

//Je suppose que vous avez déjà les variables php renseignées. Que ce soit un renseignement statique ou de données provenant de la base de données. Nommez vos variables selon les noms contenus dans le fichier template.htm

// Je capture et mémorise le contenu du fichier template.htm

$content=file_get_contents('template.htm'); // Attention au chemin d'accès au fichier template. ici, il est dans le même répertoire que export.php sinon donnez le chemin correct.

//Maintenant, je remplace une à une les variables. Méthode fastidieuse mais "Cameroun est chaud, on va faire comment". Optimisera au fil de l'expérience

 $content=str_replace('$titrefacture',$titrefacture,$content);
 $content=str_replace('$titre',$titre,$content);
 $content=str_replace('$nomclient',$nomclient,$content);
 $content=str_replace('$adresseclient',$adresseclient,$content);
 $content=str_replace('$nomclient',$nomclient,$content);
 $content=str_replace('$ville',$ville,$content);
 $content=str_replace('$pays',$pays,$content);
 $content=str_replace('$datejour',$datejour,$content);
 $content=str_replace('$nomdossier',$nomdossier,$content);
 $content=str_replace('$numfacture',$numfacture,$content);
 $content=str_replace('$datefacture',$datefacture,$content);
 $content=str_replace('$dil',$dil,$content);
 $content=str_replace('$secret',$secr,$content);
 $content=str_replace('$frais',$frais,$content);
 $content=str_replace('$deb',$deb,$content);
 $content=str_replace('$tht',$tht,$content);
 $content=str_replace('$tva',$tva,$content);
 $content=str_replace('$ttc',$ttc,$content);
 $content=str_replace('$datech',$datech,$content);
 $content=str_replace('$tableaudetails',$tableaudetails,$content);

// La suite du fichier à l'étape 3

?>

Etape 3 : La génération et l'ouverture du fichier word

Cette étape consiste à créer le fichier physique sur le disque dûr et y acceder.

// Code à insérer dans l'étape 2 EN FIN DE CODE

 $filename="facture.doc";
 touch($filename);
 if (is_writable($filename)) {
  if (!$handle = fopen($filename, 'a')) {
   echo "Impossible d'ouvrir le fichier ($filename)";
   exit;
  }
  if (fwrite($handle, $content) === FALSE) {
   echo "Impossible d'écrire dans le fichier ($filename)";
   exit;
  }
  echo "<a href='$filename'>Télécharger le fichier</a>";
  fclose($handle);
 } else {
  echo "Le fichier $filename n'est pas accessible en écriture.";
 }

ET VOILA !!!!!

Vous avez un fichier word tout beau avec vos données fusionnées.

Vous avez un affichage de votre fichier en mode "WEB" ? Changez l'affichage en mode "PAGE" pour voir votre fichie word comme d'habitude.

 

Pour toute question ou recommendation, adressez moi un mail sigapherve at gmail point com et donnezmoi le temps de traverser toute la forêt qui me sépare de mon cyber café (env 48h).

Tutoriel proposé par Hervé SIGAP

Douala - Cameroun.

13 mars 2008 17:46:17 :
nom de variable corrigé
  • signaler à un administrateur
    Commentaire de malalam le 15/03/2008 07:23:56 administrateur CS

    Hello,

    j'adoooore le html de Microsoft...;-)

    Non, bon, bonne idée ton tuto, merci. J'ajoute qu'on peut de cette manière générer très facilement un ficher excel aussi (pas un csv hein).

    Gaffe aux bêtes sauvages en allant à ton cyber café...

  • signaler à un administrateur
    Commentaire de malalam le 15/03/2008 07:25:05 administrateur CS

    Oublié de noter (9).

  • signaler à un administrateur
    Commentaire de mioume le 15/03/2008 21:41:44

    bonjour
    on nous demande de réaliser et integrer un module de génération d'état dans une solution logiciel.
    ce module devra permetre à partir de models ( formulaire..) créer dans un environnement graphique (vord. infopath..)de generer des états (html, pdf..)
    je ne sais pas comment commencer, je veux une explication sur cç ( c'est quoi exactement un générateur d'état, a quoi ça sert, Les problématiques qui y sont liées ?
    Quelles sont les techniques utilisées ? les outils ou librairie PHP permettant de le faire ? (leurs portées, avantages et inconvénients)
    merci.

Ajouter un commentaire

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Boutique

Boutique de goodies CodeS-SourceS