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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Nouveau champ


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Webmaster
    Inscrit en
    Février 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 3
    Par défaut Nouveau champ
    Bonjour

    J'utilise peu phpMyAdmin et une cliente m'a demandé de résoudre un problème pour lequel j'aimerais trouver une solution rapide et efficace.

    Il s'agit de permettre la connexion sur un site soit par le pseudo soit par le n° d'abonné.

    Actuellement on peut se connecter au site uniquement par le pseudo.
    Il y a une table existante qui regroupe tous les membres inscrits avec un champ "pseudo".
    Par contre les numéros d'abonnés ne sont inscrits nulle part dans la base.

    Ma cliente m'a fait parvenir un fichier Excel avec tous les abonnés classés par numéro d'abonné, il y en a plus de 2000...
    Il n'y a aucun pseudo qui pourrait faire le lien avec la base.
    Le seul point commun est le nom de l'abonné qui est le même que certains membres inscrits, donc pseudos.

    Je me vois mal créer un nouveau champ "n° d'abonné" et entrer chaque numéro en fonction du nom, que je devrais rechercher dans la table, vu qu'ils ne sont pas entrés dans le même ordre.
    Enfin de toutes façons, je vais devoir entrer manuellement chaque numéro d'abonné ou je peux utiliser la fonction "Importer" depuis la table? Je n'ai encore jamais importé...
    Est-ce que je peux automatiquement créer un lien entre les deux tables en fonction d'un champ, par exemple le nom?

    Pouvez-vous m'éclairer sur une méthode efficace?

    Merci beaucoup

  2. #2
    Membre éprouvé Avatar de vrd-74
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Par défaut
    Une idée, avec un peu de PHP, en supposant que tu ai déjà créé une table abonnés avec en clé primaire le numéro, et avec une colonne nom :

    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
     
    $updated = 0;
    foreach($abonnes as $line) {
    	$sth = $dbh->prepare('SELECT pseudo FROM members WHERE LOWER(pseudo) LIKE :name', , array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
    	$sth->execute(array(':name' => strtolower(preg_replace('/\s+/', '_', trim($line['name'])))));
    	$matches = $sth->fetchAll();
    	if(count($matches) == 1) {
    		$sth = $dbh->prepare('UPDATE members SET abonneNum = :numAbonne pseudo WHERE pseudo = :pseudo', , array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
    		$sth->execute(array(':numAbonne' => $line['numAbonne'], ':pseudo' => $matches[0]['pseudo']);
    		$updated++;
    	} elseif(count($matches) > 1) {
    		echo 'RESULTATS MULTIPLES<br />Num: ', $line['numAbonne'], '<br />Results: ', var_dump($matches), '<br /><br />';
    	} else {
    		echo 'NO RESULT FOUND FOR ', $line['numAbonne'], '<br /><br />';
    	}
    }
    echo 'Updated ', $updated, ' / ', count($abonnes);
    Ceci part sur le principe que les pseudos sont sous une forme de type prenom.nom. A adapter suivant les données, cela ne collera sans doute pas exactement avec ce que tu as.

    Les utilisateurs avaient ils le libre choix de leur pseudo ou celui-ci était généré par l'application ?

  3. #3
    Candidat au Club
    Femme Profil pro
    Webmaster
    Inscrit en
    Février 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 3
    Par défaut
    Merci de ta réponse vrd-74!!

    Les utilisateurs ont libre choix de leur pseudo.
    Je n'ai pas encore tenté ta solution.

    Alors maintenant ma cliente pense que je devrais saisir les données une à une.

    Comment fait-on en temps normal lorsqu'on doit entrer beaucoup de données dans une base?
    J'aimerais beaucoup savoir...

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    S'il est impossible de déterminer informatiquement quasi-surement ce que tu souhaites (en l'occurance, à tel pseudo correspond tel numéro d'abonné), le plus simple est de travailler dans un fichier excel puis d'importer celui-ci directement en base de données ensuite.

  5. #5
    Candidat au Club
    Femme Profil pro
    Webmaster
    Inscrit en
    Février 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 3
    Par défaut
    Oui ça me parait impossible. J'ai un fichier excel, j'ai tenté de l'importer dans la base, une table que j'ai crée avec le même nombre de colonnes aux mêmes noms mais ça ne fonctionne pas. Aucun "nom" et numéro d'abonné ne s'affiche et de façon incompréhensible pour moi, toutes les lignes ne sont pas importées. Je n'ai jamais fais cette manip donc je suppose que l'erreur vient de moi (?) mais je n'ai pas encore trouvé l'erreur.

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Déjà c'est un fichier CSV qu'il faut importer et non excel (sans doute le fais-tu déjà).

    Ce que je peux te recommander, c'est soit de passer directement par la requêtesql qui permet l'import de fichier (requête LOAD DATA INFILE ) ou d'utiliser un "vrai" client pour mysql, autre que phpmyadmin, par exemple je peux te conseiller l'excellent HeidiSQL (le "vrai" n'engage absolument que moi ) qui te permet de préciser clairement la manière dont tu souhaites importer ton fichier.

Discussions similaires

  1. Compilation dans un nouveau champ
    Par jevany dans le forum Access
    Réponses: 1
    Dernier message: 25/07/2006, 13h32
  2. SQL : Nouveau Champ - valeur par défaut
    Par chim33 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 22/06/2006, 14h41
  3. Réponses: 4
    Dernier message: 11/05/2006, 16h23
  4. Créer un nouveau "champ" <div id="a"
    Par FMaz dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/03/2006, 17h43

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