Bonjour mon problème est le suivant :
je dispose d'une table SQL avec les champs suivant : Date, FormId, Params
je veux extraire les données de la base pour les sortir sous forme de tableau excel, toutes les données sont dans le champ Params et sont séparés par ||
du genre :
pour extraire j'ai utilisé le script php suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 nom=blabla|| prenom=blibli|| arobase=blibla@hotmail.fr||
Donc avec ceci j'ai bien un tableau excel avec mes différentes colonnes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 <?php // Connexion à la base $id_connexion=mysql_connect("localhost","root","pass"); mysql_select_db("bdd",$id_connexion); // Création fichier Excel : première ligne, nom des champs $xls_output = "date ajout;nom;prenom;adresse mail"; $xls_output .= "\n"; //Requete SQL $query='SELECT params,date_added FROM jos_forme_data where form_id!="50"'; $result = mysql_query($query) or die(mysql_error()); //Boucle sur les resultats while($row = mysql_fetch_array($result)) { list($nom, $prenom, $arobase) = explode("||", $row[0]); // date $annee = substr($row[1],0,4); $mois = substr($row[1],5,2); $row[1]= $mois.'-'.$annee; // nom $nom = strtoupper($nom); $nom = substr($nom,4); // prenom $prenom = strtolower($prenom); $prenom = substr($prenom,8);; // mail $arobase = strtolower($arobase); $arobase = substr($arobase,9); // export excel $xls_output .= $row[1] .";"; $xls_output .= $nom .";"; $xls_output .= $prenom .";"; $xls_output .= $arobase .";"; $xls_output .= "\n"; } header("Content-type: application/vnd.ms-excel"); header("Content-disposition: attachment; filename=export_" . date("d-m-Y").".csv"); print $xls_output; exit; ?>
mais il y a une erreur sur les prenoms et mail de certains qui affichent
=leprenom au lieu de leprenom
=lemail au lieu de lemail
donc j'ai finit par trouver une solution qui remplit bien mon tableau qui est :
mais le souci c'est que j'ai des doublons dans la base donc je me retrouve aussi avec des doublons dans le tableau excel et je ne vois pas comment les supprimer ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 <?php // Connexion à la base $id_connexion=mysql_connect("localhost","root","pass"); mysql_select_db("bdd",$id_connexion); // Création fichier Excel : première ligne, nom des champs $xls_output = "date ajout;nom;prenom;adresse mail"; $xls_output .= "\n"; //Requete SQL $query='SELECT params,date_added FROM jos_forme_data where form_id!="50"'; $result = mysql_query($query) or die(mysql_error()); //Boucle sur les resultats while($row = mysql_fetch_array($result)) { list($nom, $prenom, $arobase) = explode("||", $row[0]); // date $annee = substr($row[1],0,4); $mois = substr($row[1],5,2); $row[1]= $mois.'-'.$annee; // nom $test1=$nom; $test1=substr($nom,0,3); if (strcmp($test1, "nom") == 0) { $nom = strtoupper($nom); $nom = substr($nom,4);} else {$nom="";} // prenom $test2=$prenom; $test2=substr($prenom,1,6); if (strcmp($test2, "prenom") == 0) { $prenom = strtolower($prenom); $prenom = substr($prenom,8);} else{$prenom=substr($prenom,9);} // mail $arobase = strtolower($arobase); $test3=$arobase; $test3=substr($arobase,1,7); if (strcmp($test3, "arobase") == 0) { $arobase = substr($arobase,9);} else{$arobase=substr($arobase,10);} // export excel $xls_output .= $row[1] .";"; $xls_output .= $nom .";"; $xls_output .= $prenom .";"; $xls_output .= $arobase .";"; $xls_output .= "\n"; } header("Content-type: application/vnd.ms-excel"); header("Content-disposition: attachment; filename=export_" . date("d-m-Y").".csv"); print $xls_output; exit; ?>
Comment comparer les noms des personnes et virer les mêmes ?
Merci d'avance
Partager