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 :

Récupérer les identifiants insérés et éviter doublons [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 123
    Points : 111
    Points
    111
    Par défaut Récupérer les identifiants insérés et éviter doublons
    Bonjour!
    À partir de PHP, je récupère un tableaux (arrays) envoyés par une fonction AJAX. Ce tableau contient un nombre variable des prénoms. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tbl_prenoms = array('Lea', 'Hugo', 'Nathan', 'Camille', 'Maxime', 'Jade');
    Ensuite, j'enregistre ces valeurs dans une table MySQL (prenoms):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO `prenoms` (`idPrenom`, `prenom`) VALUES
    (DEFAULT, 'Lea'),
    (DEFAULT, 'Hugo'),
    (DEFAULT, 'Nathan'),
    (DEFAULT, 'Camille'),
    (DEFAULT, 'Maxime'),
    (DEFAULT, 'Jade)

    Voilà mon problème:

    • Je désire récupérer les nouveaux identifiants générés afin de m'en servir dans une table de parité (et j'ai seulement trouvé mysql_insert_id() qui ne permet que de récupérer le dernier id généré).
    • Si un prénom est déjà existant dans la table, je veux éviter de créer un doublon et plutôt récupérer l'id de la ligne existante.


    Merci à l'avance!

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 123
    Points : 111
    Points
    111
    Par défaut
    Pour le moment, j'utilise la fonction suivante, elle teste la présence de chaque nom un à un. Si un nom existe dans la table, je récupère le ID, s'il n'existe pas, je crée l'entrée et récupère le nouveau ID.

    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
    function recupererIdAuteur($prenom, $nom) {
    	//on recherche un auteur correspondant
    	$sql = "SELECT idAuteur FROM auteurs WHERE prenom='$prenom' AND nom='$nom'";
    	$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
    	$nbreResultats = mysql_num_rows($req);
     
    	//si l'auteur n'existe pas, on crée une nouvelle entrée et récupère le nouveau id
    	if($nbreResultats == 0) {
    		mysql_query("INSERT INTO auteurs (prenom, nom) VALUES ('$prenom', '$nom')");
    		$idAuteur = mysql_insert_id();
    	}
     
    	//si l'auteur existe déja, on récupère le id
    	else {
    		$row = mysql_fetch_row($req);
    		$idAuteur = $row[0];
    	}
     
    	//on renvoie l'id de l'auteur
    	return $idAuteur;
    }

    Ça fonctionne très bien sauf que ça génère beaucoup de requêtes SQL. Donc si vous pouvez me mettre sur la piste d'un meilleur moyen, je serais heureux!

  3. #3
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Citation Envoyé par grafik.muzik Voir le message
    Ça fonctionne très bien sauf que ça génère beaucoup de requêtes SQL. Donc si vous pouvez me mettre sur la piste d'un meilleur moyen, je serais heureux!
    Ce ne sont que de toutes petites requêtes SQL de rien du tout... c'est très bien comme ça

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 123
    Points : 111
    Points
    111
    Par défaut
    Cool, ça aura été plus facile que je ne l'aurai cru. Résolu!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. récupérer les identifiants pour traitement
    Par pontarose dans le forum Langage
    Réponses: 2
    Dernier message: 08/07/2011, 10h33
  2. [MySQL] Récupérer les valeurs insérées dans la dernière requête
    Par qwertyu dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/10/2009, 18h28
  3. [ADODB] Récupérer les identifiants Windows
    Par CrazySeb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/07/2008, 15h01
  4. récupérer les identifiants de sessions via mysql
    Par loopback dans le forum Langage
    Réponses: 1
    Dernier message: 23/11/2007, 09h58
  5. Récupérer les identifiants de la DB avec SQL.
    Par Cygnus Saint dans le forum Langage SQL
    Réponses: 4
    Dernier message: 02/08/2005, 07h15

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