8710 sujets

Développement web côté serveur, CMS

Bonjour, je me heurte à un problème de synthaxe dans une requète sql.
J'ai une table utilisateurs avec leurs données personnelles.
teléphone fixe, mobile, mail,adresse.....
une case à cocher pour chaque donnée sensible permet d'afficher ou non l'info désirée aux autres utilisateurs dans un tableau.
Le type de requète que je n'arrive pas à écrire est du type:
select nom, adresse WHERE parutionadd='O', telephone WHERE parutiontelfix='O', email WHERE parutionemail'='O' .
Si le code parution d'un champ est a 'N' les champs a 'O' doivent apparaître dans le tableau.

Toutes les tentatives que j'ai entreprises se sont soldées par un echec.

Merci du conseil
Salut, je n'ai peut être pas compris l'énoncé, mais un truc dans le genre ne correspondrait t-il pas?

SELECT nom, adresse, telephone, email FROM XXX WHERE parutionadd='O' OR parutiontelfix='O' OR parutionemail='O';

XXX => nom de ta table, tu ne nous l'as pas donné ici.
Je ne sais pas si c'est pertinent pour ton problème, donne nous peut être ta structure de table en plus Smiley smile
Modifié par floreo (13 Jan 2014 - 20:08)
La tble s'appele "licencies".
La condition s'applique à presque chaque champs.
Il y a plusieurs case à cocher (une par champ personnel).
L'utilisateur doit pouvoir en cochant la case parutiontelfix 'O' permettre l'affichage du numéro de téléphone dans le tableau, mais il doit pouvoir aussi masquer son email en cochant la case parutionemail 'N'.
C'est l'imbrication de ces conditions que je n'arrive pas à gérer. Il y en à d'autres!
La syntaxe m'échappe!
ok je pense mieux comprendre, pas sûr de la syntaxe mais tu peux faire un truc du genre (à tester):

SELECT nom, if(parutionadd='O', adresse, null) as adresse, if(parutiontelfix='O', telephone, null) as telephone, if(parutionemail='O', email, null) as email, FROM licencies;
Merci, cela fonctionne!
Mais je ne comprends pas
if(parutiontelfix='O', tel_fixe, null) as tel_fixe

à quoi correspond 'null', la valeur n'est pas nulle puisqu'elle s'affiche?
Np, sinon c'est juste le fonctionnement du if:

if(parutiontelfix='O', tel_fixe, null) as tel_fixe


Ici, si tu as parutiontelfix qui est égal à O, tu affiches le contenu de tel_fixe (second argument), sinon tu affiches null (troisième argument). Tu récupères plusieurs lignes, le test est fait pour chaque ligne. Tu peux remplacer null par ce que tu veux par contre, ça dépend de ce que tu veux faire dans ton applicatif. Enfin le as tel_fixe permet juste de faire un alias, de même tu mets ce que tu veux.

Petit plus pour info, la doc (section IF):
IF(expr1,expr2,expr3)
Si l'argument expr1 vaut TRUE (expr1 <> 0 et expr1 <> NULL) alors la fonction IF() retourne l'argument expr2, sinon, elle retourne l'argument expr3. La fonction IF() retourne une valeur numérique ou une chaîne de caractères, suivant le contexte d'utilisation
Modifié par floreo (13 Jan 2014 - 23:40)