IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Aide extraction sql vers excel, suppression doublons


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2007
    Messages : 36
    Points : 32
    Points
    32
    Par défaut Aide extraction sql vers excel, suppression doublons
    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

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    De quel type sont les doublons ? noms differents pour un meme email ? params complétement identique ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2007
    Messages : 36
    Points : 32
    Points
    32
    Par défaut
    ils ont un FormId différent, les noms, prenom et mail dans Params sont identiques mais le champ Params n'est pas complètement identique

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu pourrais pendant le traitement stocker la chaine "nomprenomemail" dans un tableau et controler a chaque nouveau traitement si tu l'as déjà traité ou non.

Discussions similaires

  1. [MySQL] Exportation SQL vers Excel
    Par Foudébois dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/08/2006, 16h56
  2. Exportation d'une requete SQL vers excel
    Par snooopy007 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 27/07/2006, 18h00
  3. Résultat d'une requete SQL vers Excel
    Par climz dans le forum Access
    Réponses: 6
    Dernier message: 09/05/2006, 16h44
  4. Exporter des données d'un requete SQL vers excel (csv)
    Par PrinceMaster77 dans le forum ASP
    Réponses: 9
    Dernier message: 08/10/2005, 23h28
  5. Extraction base vers excel
    Par georgeabitbol dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/07/2004, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo