VERIFIER DU CONTENU DANS UNE REQUETE [Résolu]

Signaler
Messages postés
24
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
13 novembre 2006
-
Messages postés
24
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
13 novembre 2006
-
Bonjour à tous,

J'ai besoin d'aide, j'espère que certains pourront m'aider, je suis bloqué, merci d'avance à tous :
Dans ma base j'ai 2 tables, "utilisateurs" et "documents"





UTILISATEURS
id
NiveauxDeDocuments






DOCUMENTS

id
NiveauDuDocument



Le champ NiveauxDeDocuments.UTILISATEURS  contient plusieurs niveaux --> par ex "TI,TO,LB" etc...
Le champ NiveauDuDocument.DOCUMENTS contient son niveau --> par ex "TI"

Je souhaite que les utilisateurs ne voient que les documents dont ils ont les niveaux autorisés.
En fait j'ai besoin de faire l'inverse d'un LIKE

Soit  :   

SQL="SELECT * from UTILISATEURSwhere id=1"
Set rs=conn.Execute(SQL)
ListNiveaux=rs("NiveauxDeDocuments")

SQLDOCS="SELECT * from DOCUMENTS WHERE NiveauDuDocument (existe dans ListNiveaux, c la que je bloque)"

Merci d'avance pour toutes vos réponses, es-ce possible à faire en SQL ou peut être en ASP ? en tout cas je suis bloqué, votre aide me serais très précieuse.

Vins

9 réponses

Messages postés
192
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
9 mars 2007
1
Hello

Dans ta table Rel_UtilisateurNiveau, tu peux gérer autant de niveau pas utilisateur, il y a juste ç ajouter des enregistrements.

Par exemple dans tes tables tu peux avoir les données suivantes :

Utilisateur (id_utilisateur)
1
2

Document (id_document,id_niveau)
1,1
2,1
3,2
4,3

Niveau (id_Niveau)
1
2
3

Rel_UtilisateurNiveau (id_utilisateur - id_niveau)
1,1
1,2
2,1

L'utilisateur 1 a alors les niveau 1 et 2, et pourra accéder aux documets 1,2 et 3.

J'espère être assez clair ;-)

Bon courage,

TiK - MCSD.NET
http://bonnevault.net/cs/blogs/tikrimihttp://www.objectif-services.com
Messages postés
192
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
9 mars 2007
1
Bonjour,

Il faut que tu utilise la clause IN

Je pense que SELECT * from DOCUMENTS WHERE NiveauDuDocument IN SELECT NiveauDuDocument FROM UTILASATEUR WHERE .... ta condition .... ça doit faire l'affaire

TiK - MCSD.NET
http://www.objectif-services.com/
Messages postés
24
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
13 novembre 2006

Re, merci mais je viens d'essayer sans succès, j'ai une erreur de syntaxe dans la requete !
Messages postés
192
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
9 mars 2007
1
Essaye ça :

SQLDOCS="SELECT * from DOCUMENTS WHERE NiveauDuDocument in (select NiveauDeDocument from UTILISATEURS WHERE id = 1)

TiK - MCSD.NET
http://www.objectif-services.com/
Messages postés
24
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
13 novembre 2006

Ok, bon il y a du mieux mais je n'arrive pas encore à ce que je veux.
Plus d'erreur dans la requete,
si
NiveauDeDocuments.UTILISATEURS=NiveauDuDocument.DOCUMENTS, j'ai bien mes résultats.

Par contre si  NiveauDuDocument.DOCUMENT existe dans la chaine NiveauDeDocuments.UTILISATEURS je n'ai pas de résultats.

Pour simplifier, il me faudrait l'équivalent de :

NiveauDeDocument.UTILISATEURS LIKE NiveauDuDocument.DOCUMENT

merci
Messages postés
24
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
13 novembre 2006

Ou plutot

WHERE "NiveauDuDocument.DOCUMENT"  FAIT PARTI DE  "NiveauDeDocuments.UTILISATEURS"

soit un LIKE mais à l'envers !
Messages postés
192
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
9 mars 2007
1
Je viens de comprendre.

En fait tes tables sont mals pensées. Je doute que tu arrives à faire ce que tu veux faire en une requette... c'est le début de l'usine à gaz.

Si tu peux encore, utilises par exemple les tables suivantes :

Utilisateur
id_utilisateur

Document
id_document
id_niveau

Niveau
id_Niveau

Rel_UtilisateurNiveau
id_utilisateur
id_niveau

En utilisant ce schema de base, c'est beaucoup plus simple de retrouver les document qu'un utilisateur peut consulter en fonction de ses diférents niveaux.

TiK - MCSD.NET
http://www.objectif-services.com/
Messages postés
24
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
13 novembre 2006

Ok merci tikrimi pour tes infos, mais alors dans ma table Rel_UtilisateurNiveau

id_niveau pourra comporter plusieur niveaux ? Disons que je ne suis pas expert MYSQL, si tu pouvais m'expliquer comment faire la relation entre les 2 tables et ensuite pouvoir afficher les documents qu'un utilisateur peut consulter ce serait cool !

merci encore, je vois que je partais dans le mauvais sens mais comme tu vois j'ai encore besoin de ton aide !
Messages postés
24
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
13 novembre 2006

Ok ! merci pour tes réponses je pense qu'en faisant comme ça je vais pouvoir m'en sortir !

a+
Vins