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 :

Cherche aide pour une requete avec jointure


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2007
    Messages : 24
    Points : 18
    Points
    18
    Par défaut Cherche aide pour une requete avec jointure
    Salut,

    J'ai un petit problème de jointure avec ma requete delete qui porte utilise une jointure. J'ai peut-être fais une erreur de syntaxe??

    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    <?PHP
     
    // Blocage de l'accès à un groupe d'utilisateur
     
    	$bd ='gestionacces';
    	$lien = mysql_pconnect ('localhost', 'root', '');
    	mysql_select_db($bd);
    	$table = 'statut';
    	$table2 = 'appartenance';
     
        //connexion bdd
    	if ($lien == FALSE){
    		echo "connexion impossible à la base $bd";
    	} else {
     
    		if (isset ($_POST['bloquageGroupe'])){                	
                if ($lien == FALSE){
                echo "connexion impossible à la base $bd";
                   } else {
     
    			    $accesGroupe = $_POST['accesGroupe'];
                    $val3 = $_POST['listeGroupeAcces'];
    				$bloqué = "bloqué";
    				$débloqué = "débloqué";
     
    				if ($accesGroupe == "bloquerGroupe"){
    					$requeteSelection = "Select NomUtilisateur from $table2 where NomGroupe = '".$val3."'";
     
    						$result = mysql_query($requeteSelection)
    						or die('Requête invalide : ' . mysql_error());
     
    						$requeteSupression2 = "delete from $table Where statut.NomUtilisateur = appartenance.NomUtilisateur AND NomGroupe = '".$val3."'";
    						while($resultat = mysql_fetch_array($result))
    						{
    								echo '<b>'.$resultat['NomUtilisateur'].' '.'</b>';
    								$requeteInsertion2  = "INSERT INTO $table";
    								$requeteInsertion2 .= "(NomUtilisateur, Statut)";
    								$requeteInsertion2 .= "VALUES";
    								$requeteInsertion2 .= "(\"".$resultat['NomUtilisateur']."\",\"".$bloqué."\")";
     
    								$result2 = mysql_query($requeteInsertion2)
    								or die('Requête invalide : ' . mysql_error());
    						}
    				}
    				if ($accesGroupe == "débloquerGroupe"){
    					$requeteSelection = "Select NomUtilisateur from $table2 where NomGroupe = '".$val3."'";
     
    						$result = mysql_query($requeteSelection)
    						or die('Requête invalide : ' . mysql_error());
     
    						$requeteSupression2 = "delete from $table Where statut.NomUtilisateur = appartenance.NomUtilisateur AND NomGroupe = '".$val3."'";
    						while($resultat = mysql_fetch_array($result))
    						{
    								echo '<b>'.$resultat['NomUtilisateur'].' '.'</b>';
    								$requeteInsertion2  = "INSERT INTO $table";
    								$requeteInsertion2 .= "(NomUtilisateur, Statut)";
    								$requeteInsertion2 .= "VALUES";
    								$requeteInsertion2 .= "(\"".$resultat['NomUtilisateur']."\",\"".$débloqué."\")";
     
    								$result2 = mysql_query($requeteInsertion2)
    								or die('Requête invalide : ' . mysql_error());
    						}	
     
     
    				}
    				 mysql_query($requeteSupression2);
    				 mysql_query($requeteInsertion2);
    				 mysql_query($requeteSelection);
    				 mysql_close($lien);
     
                    }
     
    		}
     
    }
    ?>

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    delete from $table, appartenance à placer dans ta requête "jointé". Il faut que le from reference toutes les tables qui sont utilisés dans la requete.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2007
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    J'ai toujours aucune suppression malgré ton conseil.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requeteSupression2 = "delete from $table, $table2 Where statut.NomUtilisateur = appartenance.NomUtilisateur AND NomGroupe = '".$val3."'";

    Et si je met ma requete de cette facon, il va aussi me supprimer les champs dans ma table appartenance.

    Hors j'aimerai qu'il me supprime tous les enregistrements de la table statut, ou les utilisateurs appartiennent au groupe que je récupère.

    Pour être plus clair voici ma base de donnée.

    Table utilisateur

    NomUtilisateur, AdresseIP

    Table Groupe

    NomGroupe, Description

    Table statut


    Table appartenance

    NomUtilisateur, NomGroupe

    Table statut

    IdStatut, NomUtilisateur, Statut.

    Voilà pour ce qui est des liaisons entre table

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    sinon essaie ceci alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete="delete from statut where NomUtilisateur IN (select NomUtilisateur from appartenance where NomGroupe='".$val3."')";

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2007
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Si j'ai n'ai aucune donnée dans la table, il n'y a aucun problème d'insertion, en revanche si il y en a, il me met un message d'erreur de duplicata de clef. Donc j'ai toujours un problème avec ma requete de suppression.

    Je l'ai également testé de cette façon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requeteSupression2 = "delete from statut where statut.NomUtilisateur IN (select appartenace.NomUtilisateur from appartenance where NomGroupe='".$val3."')";

Discussions similaires

  1. Demande d'aide pour une requête avec jointure
    Par marcoxavier dans le forum Développement
    Réponses: 8
    Dernier message: 26/05/2015, 16h04
  2. Aide pour une requete avec pattern JpaDao
    Par wsp_ape dans le forum JPA
    Réponses: 1
    Dernier message: 19/06/2011, 10h16
  3. aide sur une requete avec jointures
    Par astroseb dans le forum Requêtes
    Réponses: 4
    Dernier message: 18/08/2010, 13h59
  4. Quelle techno pour effectuer une requete avec jointure ?
    Par JediMaster dans le forum Accès aux données
    Réponses: 5
    Dernier message: 07/01/2009, 02h17
  5. Besoin d'aide sur une requete avec jointure et MAX()
    Par droog dans le forum Requêtes
    Réponses: 4
    Dernier message: 04/07/2007, 18h23

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