VERIFIER DU CONTENU DANS UNE REQUETE

Résolu
vinsator
Messages postés
24
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
13 novembre 2006
- 13 oct. 2006 à 12:08
vinsator
Messages postés
24
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
13 novembre 2006
- 15 oct. 2006 à 22:04
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

tikrimi
Messages postés
192
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
9 mars 2007
1
14 oct. 2006 à 21:26
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
3
tikrimi
Messages postés
192
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
9 mars 2007
1
13 oct. 2006 à 12:27
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/
0
vinsator
Messages postés
24
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
13 novembre 2006

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

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

TiK - MCSD.NET
http://www.objectif-services.com/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

13 oct. 2006 à 15:41
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
0
vinsator
Messages postés
24
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
13 novembre 2006

13 oct. 2006 à 15:57
Ou plutot

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

soit un LIKE mais à l'envers !
0
tikrimi
Messages postés
192
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
9 mars 2007
1
13 oct. 2006 à 16:13
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/
0
vinsator
Messages postés
24
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
13 novembre 2006

14 oct. 2006 à 11:05
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 !
0
vinsator
Messages postés
24
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
13 novembre 2006

15 oct. 2006 à 22:04
Ok ! merci pour tes réponses je pense qu'en faisant comme ça je vais pouvoir m'en sortir !

a+
Vins
0