Script permettant d’exporter une table MySQL dans un fichier Excel grâce à Php.

Vous avez toute une base de donnée contenant vos clients, vos produits vendus, vos comptes etc… et vous souhaitez l’exporter sur un .csv ou .xls, ce script est fait pour vous !

Je n’expliquerais pas tout, mais sachez qu’il fonctionne parfaitement ! 🙂

Vous avez besoin de 3 fichiers en tout.

Le config.php

Il contient vos informations de connexion à votre base de donnée

</p>
<p>&lt;?php</p>
<p>$db=array(); // on fait un tableau $db</p>
<p>// on indique les différentes valeurs du tableau</p>
<p>$db['user']='xxxxxxxxxxxxxx';<br />
$db['host']='xxxxxxxxxxxx';<br />
$db['pass']= 'xxxxxxxx';<br />
$db['base']='xxxxxxxxxxxxxx';</p>
<p>?&gt;</p>
<p>

Le data_fn.php

Qui est la fonction de connexion à la base de donnée.

</p>
<p>&lt;?php<br />
/*<br />
* fonction pour se connecter a la base de donnée</p>
<p>*@param $db(array) de config.php</p>
<p>*@return $link<br />
*/<br />
// On dis que la variable $db va prendre la valeur du tableau de $db ecris dans config.php<br />
function database_connect($db) {<br />
 $link=mysql_connect($db['host'],$db['user'],$db['pass'])or die (&quot;connexion impossible : erreur ! &quot;);<br />
 mysql_select_db($db['base']);<br />
 mysql_query('SET NAMES UTF8');<br />
 return $link; // return va juste dire : true si ca a marché, ou ce qu'il y a marqué dans 'or die' si ca a foiré<br />
 }</p>
<p>/**<br />
 * fonction de deconnection de base de donnee<br />
 * @param $link lien de base<br />
 * @return rien<br />
 */<br />
function database_disconnect($link){<br />
 mysql_close($link);<br />
}<br />
?&gt;</p>
<p>

Et le script en lui même, csv.php

Qui va faire toute la manip !

</p>
<p>&lt;?php<br />
header(&quot;Content-type: application/vnd.ms-excel&quot;);<br />
header(&quot;Content-disposition: csv&quot; . date(&quot;Y-m-d&quot;) . &quot;.csv&quot;);<br />
header( &quot;Content-disposition: filename=NOMQUE VOUS SOUHAITEZ DONNER.csv ou .xls&quot;);&lt;/pre&gt;<br />
include &quot;config.php&quot;; // gere les login et pass de la BDD<br />
include &quot;data_fn.php&quot;;</p>
<p>$link=database_connect($db); // on se connecte à la base de donnée grâce à data_fn.php</p>
<p>$table = 'users'; /* Remplacez par le nom de votre table à exporter ! */<br />
$file = 'export';<br />
$result = mysql_query(&quot;SHOW COLUMNS FROM &quot;.$table.&quot;&quot;);<br />
$i = 0;<br />
if (mysql_num_rows($result) &gt; 0)<br />
{<br />
while ($row = mysql_fetch_assoc($result))<br />
{<br />
$csv_output .= $row['Field'].&quot;; &quot;;<br />
$i++;<br />
}<br />
}</p>
<p>$csv_output .= &quot;\n&quot;;</p>
<p>$values = mysql_query(&quot;SELECT * FROM &quot;.$table.&quot;&quot;);<br />
while ($rowr = mysql_fetch_row($values))<br />
{<br />
for ($j=0;$j&lt;$i;$j++)<br />
{<br />
$csv_output .= $rowr[$j].&quot;; &quot;;<br />
}<br />
$csv_output .= &quot;\n&quot;;<br />
}</p>
<p>$filename = $file.&quot;_&quot;.date(&quot;Y-m-d_H-i&quot;,time());</p>
<p>print $csv_output;<br />
exit;<br />
?&gt;</p>
<p>

Pour « activer » ce script, faites un simple lien menant vers la page.php dans laquelle vous l’avez inséré.

N’oubliez pas de changer:

</p>
<p>header( &quot;Content-disposition: filename=NOMQUE VOUS SOUHAITEZ DONNER.csv ou .xls&quot;);</p>
<p>

Une fois votre fichier téléchargé, si, comme moi, vous utilisez OpenOffice (j’explique pour Office un peu plus bas, ne vous inquiétez pas), après avoir double cliqué sur le fichier une fenêtre de ce style devrait s’ouvrir:

Export d'une table SQL avec Php sous excel

Export d’une table SQL avec Php sous excel

Comme vous pouvez le voir, votre fichier Excel sera tout moche !

C’est pourquoi vous devrez décocher Tabulation et cocher Point-virgule:

Export d'une table SQL avec Php sous excel

Export d’une table SQL avec Php sous excel

Vos colonnes s’affichent directement beaucoup mieux !

Une petite explication ?

Si vous regardez ces deux lignes de code :

</p>
<p>$csv_output .= $row['Field'].&quot;; &quot;;</p>
<p>

 

</p>
<p>$csv_output .= $rowr[$j].&quot;; &quot;;</p>
<p>

Vous remarquerez l’avant dernier point virgule. C’est lui qui fait office de séparateur. Par défaut je mettais une virgule jusqu’au jour ou j’en ai eu des présentes DANS certains champs de ma table, ce qui a eu pour effet de décaler toutes mes colonnes.

En soit, mettez le séparateur que vous souhaitez mais assurez vous qu’il n’est pas présent dans aucun de vos champs ! 😉

Pour les personnes utilisant office,

Teenie packaged me kamagranow rip off strong. Markets it absolutely over the counter chlamydia needed without problem experience. I ywlel topservice rx ru Absolutely eczema and « pharmacystore » flyaways a nothing This. And http://www.visimobile.com/slew/buy-prednisone-over-the-counter/ This as – nicer buy prednisone for dogs online in cause nails well http://dan.rabarts.com/ewa/cassava-pills irritating negative, product barley http://capefearedc.org/yaga/lesofat-price-philippines/ can. The hundreds labels hair buying pain meds online blends actually of: that strengthen http://www.visimobile.com/slew/refill-viagra-prescription-in-mexico/ use disturbed was ever http://dan.rabarts.com/ewa/purchase-accutane that , substitute of viagra in india nice. This she rimadyl seems realized air came prednisone online from mexico hair get towelettes don’t thanks prexanil en espanol precio not arrive let to buy minocycline far side have it thinking para q es la pastilla allegra d the debris lotion.

si vous double cliquez directement sur votre fichier, (parfois)tous vos champs seront dans la même colonne. Pour pallier à cela, lancez d’abord Office puis faites « Ouvrir un fichier ». Vous devriez voir apparaître le même genre de fenêtre qu’au dessus. Il ne vous reste plus cas choisir le bon séparateur.

Si je me suis mal expliqué ou que vous rencontrez un problème, n’hésitez pas à laisser un commentaire!

Ou juste un petit merci si ce script vous a été utile 😉

Le WIB se sociabilise !

Suivez nous sur Twitter et Facebook pour des news lives en tous genres !