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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
nom=blabla||
prenom=blibli||
arobase=blibla@hotmail.fr||
pour extraire j'ai utilisé le script php suivant :
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;
?>
Donc avec ceci j'ai bien un tableau excel avec mes différentes colonnes
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 :
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;
?>
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 ?
Comment comparer les noms des personnes et virer les mêmes ?

Merci d'avance