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 :

Exclure des résultats lors d'une requête [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 129
    Par défaut Exclure des résultats lors d'une requête
    Bonjour à tous,

    J'ai un site qui propose des sorties amicales entres amis.
    Les usagers du site on la possibilité d'avoir une liste d'indésirable. Les indésirables ce sont souvent des gens qui annulent à la dernière minute ou encore qui n'annulent tout simplement pas et qui ne se présente pas.

    Les sorties peuvent être organisées par tout les usagers du site Internet.

    Ma question est la suivante, en ayant la liste des sorties, les indésirables ne doivent pas voir les sorties des usagers qui ont ses personnes dans leur liste.

    Voici ma requête initiale pour la liste des sorties :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $sql_sorties = "SELECT s.*, u.nickname, u.prenom, p.who
    			FROM sorties s
    			INNER JOIN usagers u
    			ON s.ID = u.ID
    			LEFT JOIN participants p
    			ON s.id_sortie = p.id_sortie AND p.who = '".$_SESSION['id_users']."' 
    			WHERE quand > Now() AND s.sortie_visible = '0' AND s.statut_sortie != '2' AND s.type_sortie = '1'
    			ORDER BY quand";
    Je demande tout les champs de la table sorties auxquelles je demande de joindre le surnom de l'usager ainsi que son prénom, le WHO fait partie de la table des participants à cette sortie. Celà me permet lorsque je fais la liste des sorties de vérifier si l'usager connecté participe aux sorties, si tel est le cas, le fond de la cellule change au vert. Plus facile pour eux de voir les sorties auxquels ils sont inscrits.

    Cette rêquete doit être modifier afin d'exclure les sorties pour lesquelles l'usager est considéré comme indésirable par le créateur de celle-ci

    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    comment gères-tu les choix des usagers qui excluent explicitement des participants ?

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 129
    Par défaut
    C'est vrai que je n'ai pas parlé de cette option.

    Les indésirables sont sauvegardées dans une base de données. Il y a l'ID de l'utilisateur qui ne veut plus une personne et l'ID de celui qui est classé comme indésirable.

    ID = ID de l'utilisateur
    id_not = ID de l'utilisateur indésirable pour l'ID

    La table s'appelle notdesired

    Si il manque d'informations, simplement me faire signe.

    Merci encore

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Quelque chose comme ça :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT
       s.*, u.nickname, u.prenom, p.who
    FROM
       sorties s
          INNER JOIN usagers u ON s.ID = u.ID
          LEFT JOIN participants p ON s.id_sortie = p.id_sortie AND p.who = '{$_SESSION['id_users']}'
    WHERE
       NOT EXISTS (SELECT 1 FROM notdesired WHERE ID = u.ID AND id_not = '{$_SESSION['id_users']}')
       AND quand > Now()
       AND s.sortie_visible = '0'
       AND s.statut_sortie != '2'
       AND s.type_sortie = '1'
    ORDER BY
       quand;
    ?>

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 129
    Par défaut
    Hello,

    En fait tu viens de me donner une bonne piste.

    Ce n'est pas tout à fait les bons champs des bonnes tables, mais j'avoue que je n'ai pas été clair, clair non plus.

    le $_SESSION['id_users'] est l'usager en ligne sur le site, et l'organisateur de la sortie est dans la table sorties avec le champ ID.

    Pour cet usager en ligne $_SESSION['id_users'], il ne doit pas être dans la liste des indésirables, donc id_not, de l'organisateur de la sortie ID.

    Corrige moi si ma requête n'est pas bonne, ou si elle est correct j'aimerais le savoir également. :-)
    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
     
    SELECT
       s.*, u.nickname, u.prenom, p.who
    FROM
       sorties s
          INNER JOIN usagers u ON s.ID = u.ID
          LEFT JOIN participants p ON s.id_sortie = p.id_sortie AND p.who = '{$_SESSION['id_users']}'
    WHERE
       quand > Now()
       AND s.sortie_visible = '0'
       AND s.statut_sortie != '2'
       AND s.type_sortie = '1'
       AND '{$_SESSION['id_users']}' NOT IN (SELECT '{$_SESSION['id_users']}' FROM notdesired WHERE ID = s.ID)
    ORDER BY
       quand;
    Donc le $_SESSION['id_users'] ne doit pas être dans la requête pour la table notdesired pour l'organisateur de la sortie ID.

    Merci encore de ton aide

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par ConceptInterWEB Voir le message
    le $_SESSION['id_users'] est l'usager en ligne sur le site, et l'organisateur de la sortie est dans la table sorties avec le champ ID.
    Euh c'est glissant un truc pareil : table sortie avec un champ ID qui correspond à l'id de l'organisateur ! Comment tu suis l'id de tes sorties ?

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/10/2009, 12h18
  2. Exclure des enregistrements vide dans une requête sql
    Par beegees dans le forum Langage SQL
    Réponses: 1
    Dernier message: 31/03/2009, 19h42
  3. [MySQL] Filtrage des résultats à partir d'une requête
    Par isitien dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 03/02/2009, 10h10
  4. [MySQL] Est-ce possible de creer des champs en temps réel lors d'une requête SQL ?
    Par kaptnkill dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/09/2006, 19h18
  5. Réponses: 3
    Dernier message: 18/05/2003, 00h16

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