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 :

Nettoyer Base utilisateurs après Import CSV


Sujet :

PHP & Base de données

  1. #1
    wjc
    wjc est déconnecté
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 56
    Points : 29
    Points
    29
    Par défaut Nettoyer Base utilisateurs après Import CSV
    Bonjour,

    Chaque mois je fais un export csv depuis un crm afin d'alimenter ma base d'utilisateurs wordpress via script d'import
    Si nécessaire un utilisateur est ajouté ou les infos sont mises à jour.

    Cependant actuellement mon script ne gère pas le cas où des utilisateurs auraient été supprimé du fichier CSV.

    Quelle méthode me conseillez vous pour traiter ce cas ?

    J'avais pensé créer une table additionnelle temporaire pour importer tous les utilisateurs listées dans le CSV. Puis supprimer les utilisateurs présents dans la table qui sert pour le site web qui ne seraient pas présents dans la table temporaire.

    Qu'en pensez vous ?

    Merci pour votre aide

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Je ne comprend pas bien ton soucis. AMHA, supprimer un utilisateur n'est d'une application n'est pas propre, je pense qu'il est préférable d'ajouter une colonne de type datetime du genre "fin_activite" ou bien de type booléen du genre "is_actif".

    A+.

  3. #3
    wjc
    wjc est déconnecté
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 56
    Points : 29
    Points
    29
    Par défaut
    Pour supprimer un utilisateur j'utilise la fonction du core de wordpress
    aucun problème de ce côté là

    Le problème c'est que des utilisateurs sont supprimés du fichier csv exporté depuis une autre application.

    Lors que je l'importe mon script ne gère pas ces suppressions
    j'ai pensé importé ce fichier dans une deuxième table et comparer les 2 tables pour supprimer les utilisateurs qui n'existent plus dans le fichier csv

  4. #4
    wjc
    wjc est déconnecté
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 56
    Points : 29
    Points
    29
    Par défaut Import utilisateurs CSV
    Bonjour,

    J'ai développé un script qui me permet d'importer des utilisateurs issu d'une fichier CSV dans la base de mon CMS.
    Donc je traite ce fichier ligne par ligne :
    - si l'utilisateur n'existe pas je l'insère
    - si il existe je compare les 2 array (données du csv, données dans mysql) et si il y a des modifications je met à jour les données de l'utilisateur.

    Mais il y a un cas que je n'ai pas traité .... :
    Si un ou plusieurs utilisateurs ont été supprimé du fichier csv, avec cette méthode je n'ai pas de moyen de savoir lesquels supprimer ...

    Comment procéder ?
    Dois-je plutôt importer la totalité du csv dans une table dupliquée (users_csv_temp) pour traiter les insert et les update
    Et ensuite vérifier si les utilisateurs de ma table users existent bien dans la table temporaire users_csv_temp ? si il n'existe pas les supprimer ?

    Merci pour vos conseils

  5. #5
    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
    Est-ce que les id sont présents dans le csv ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    wjc
    wjc est déconnecté
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 56
    Points : 29
    Points
    29
    Par défaut
    Malheureusement non ...
    Par curiosité avec un ID disponible on aurait pu faire comment ?

    Par contre chaque utilisateur a une référence unique c'est avec cette référence que je vérifie si l'utilisateur existe ou non

  7. #7
    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
    S'il y avait eu l'id dans le CSV, tu aurais pu purement injecter la totalité du CSV comme nouvelle table sans faire ni UPDATE ni DELETE.

    Mais bon puisque tu connais tous les ID que tu aurais insérer ou mis à jour, tu n'as plus qu'a faire une requête DELETE ... WHERE id NOT IN (x,x,x,x,x,x)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    wjc
    wjc est déconnecté
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 56
    Points : 29
    Points
    29
    Par défaut
    donc je vais construire un array qui va s'alimenter des ID à chaque insertion ou contrôle si mise à jour !

    Autrement j'ai l'impression que mon script ralenti lorsque j'arrive à un certain nombre.
    Auriez vous un lien énumérant les mesures d'optimisation à respecter

    Merci le tuyau !

  9. #9
    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
    "Un certain nombre" ? 100 ? 1000 ? 1000000 ?

    Les requêtes préparées accélèrent l’exécution des requêtes en boucle.
    Pour les requêtes SELECT, créer un tableau PHP contenant tous les id et clefs de ta table users sera beaucoup plus rapide que de faire une requête SELECT à chaque fois, mais consommera autant de RAM qu'il y a d'utilisateurs.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    wjc
    wjc est déconnecté
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 56
    Points : 29
    Points
    29
    Par défaut
    Aux alentours de 25.0000 contacts ...

Discussions similaires

  1. Changer le format d'une table apres import csv
    Par jjjdud dans le forum SAS Base
    Réponses: 1
    Dernier message: 20/11/2013, 19h55
  2. [Débutant] "�" au lieu de "é" après importation CSV
    Par theophile76 dans le forum VB.NET
    Réponses: 18
    Dernier message: 06/02/2013, 17h37
  3. [MySQL] Encodage caractères spéciaux après import csv
    Par snorky94 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/10/2012, 15h27
  4. [XL-2003] Convertir une colonne en date apres import CSV
    Par imaril dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 04/02/2010, 15h48
  5. [MySQL] Apparition de saut de lignes après import CSV
    Par aiss57 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/06/2009, 19h42

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