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 :

pdo, sql évite doublon dans bdd


Sujet :

PHP & Base de données

  1. #1
    Membre averti Avatar de XAVIERV
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Par défaut pdo, sql évite doublon dans bdd
    Bonsoir,

    Voilà mon soucis c'est que je n'arrive pas à écrire ma requête SQL qui permet d'éviter les doublons dans ma table, dans ma ta eleves_sports, un élève peu faire plusieurs sports, 3 maximuns, la requête SQL insert correctement aléatoirement un nombre de sports suivant 20 élèves voir pas du tout .exemple :
    id eleves_id sports_id
    1 1 2
    2 1 4
    3 1 2
    4 2 3
    5 3 1
    6 3 4
    7 5 2


    mais les doublons continuer à se faire.
    voilà mon code :
    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
     
    public function addSports_Eleves(TableElevesSports $sports_eleves)// Un objet TableElevesSports est attendu
    	{
     
     
    		$valeur_sports = $sports_eleves->sports_id; //variable $valeur_sports contenant le nombre aléatoire de sports pratiqué
     
    		for($i=1;$i<=$valeur_sports; $i++)
    		{
    			$sql= 'INSERT INTO eleves_sports(eleves_id,sports_id) VALUES (:eleves_id, :sports_id) WHERE NOT EXISTS(SELECT eleves_id,sports_id FROM eleves_sports WHERE eleves_id = :eleves_id AND sports_id = :sports_id)';
    			$stmnt = $this->_db->prepare($sql);
    			$valeurEleve_id = htmlspecialchars($sports_eleves->getEleves_id());
    			$valeurSport_id = rand(1,5); //random des 5 sports possibles
    			$stmnt->bindParam(':eleves_id', $valeurEleve_id);
    			$stmnt->bindParam(':sports_id',$valeurSport_id);
    			$stmnt->execute();
    		}
    merci de prendre le temps de m'aider

  2. #2
    Membre averti Avatar de XAVIERV
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Par défaut
    Je pense avoir trouvé la réponse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql= 'INSERT INTO eleves_sports(eleves_id,sports_id) SELECT :eleves_id, :sports_id FROM DUAL WHERE NOT EXISTS(SELECT eleves_id, sports_id FROM eleves_sports WHERE eleves_id = :eleves_id AND sports_id = :sports_id)LIMIT 1 ';

  3. #3
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 327
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 327
    Billets dans le blog
    17
    Par défaut
    Sur ta table, il faut créer un index UNIQUE sur le couple (sports_id, eleves_id)

    Ainsi un INSERT constituant un doublon échouera

  4. #4
    Membre averti Avatar de XAVIERV
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Par défaut
    Comment puis-je faire ceci sur phpmyadmin ?

  5. #5
    Membre averti Avatar de XAVIERV
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Par défaut
    désolé du dérrangement il suffisait de chercher merci

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

Discussions similaires

  1. [AC-2010] Doublons dans BDD
    Par kerneispa dans le forum IHM
    Réponses: 1
    Dernier message: 16/07/2013, 13h57
  2. Réponses: 0
    Dernier message: 14/04/2010, 13h36
  3. [SQL] Eviter doublons dans un select (sans DISTINCT)
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 40
    Dernier message: 11/07/2006, 17h07
  4. Doublon dans Sql Serveur 2000
    Par FilipeVV dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/03/2006, 17h51
  5. [sql] [oracle] éliminer les doublons dans sum ?
    Par trungsi dans le forum Langage SQL
    Réponses: 14
    Dernier message: 04/03/2005, 12h29

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