Version complète: sur le forum Webmaster Hub : Aide pour requête SQl qui coince...
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > SQL
Chandon
Bonjour à tous,
Besoin d'aide pour un select que je n'arrive pas à faire marcher.

J'ai 2 tables, une contenant entre autres le nom des membres (ibf_members), une autre contenant une liste de plantes (base), définies par certains critères, et en particulier si la fiche est visible ou non par les autres (champ 'valid' issu d'un checkbox, valeur 'on' ou vide).
Je cherche à faire un select permettant, si le membre regarde sa liste ou celle des autres, que celle ci n'affiche bien sûr que les fiches 'autorisées' (champ valid=on)
Seulement, ma requete ne semble pas prendre en compte ce champ.
Pouvez vous me dire ce qui coince ?
Merci de votre aide

La requête :
CODE
if($access_full=='ok'){ // si c'est la collec du membre
$sql="SELECT src_id_spec,members_display_name FROM base,ibf_members WHERE ibf_members.id=base.src_id_member AND src_id_member='".$membre."'";
}
else{ // sinon si c'est une autre collec
$sql="SELECT src_id_spec,members_display_name FROM base,ibf_members WHERE ibf_members.id=base.src_id_member AND src_id_member='".$membre."' AND valid='on'";
}

Dans ma base de test, un membre a 2 fiches, une avec valid=on, une autre avec valid vide.
La requête devrait donc retourner 2 enregistrements si c'est le membre qui consulte sa fiche, et 1 enregistrement si c'est un autre membre qui visite cette même fiche.
Là, dans les 2 cas, il est retourné les 2 enregistrements.

A toutes fins utiles, le champ 'valid' est défini en CHAR(3) dans la base.
Portekoi
Char veut dire que le champ ne contient pas 'on' mais 'on ' avec espace smile.gif

Mets un varchar(3) par exemple et enlève l'espace pour voir...
Chandon
Merci de ta réponse.
J'ai basculé le champ en varchar(2).
Pas de changement dans les résultats de la requête... sad.gif
Portekoi
Si ta requete est bien celle-ci :

$sql="SELECT src_id_spec,members_display_name FROM base,ibf_members WHERE ibf_members.id=base.src_id_member AND src_id_member='".$membre."' AND valid='on'";

Je n'y vois aucune erreur.

Cette requête dit : "Va me chercher les valeurs de src_id_spec,members_display_name dans les tables base et ibf_members là où ibf_members.id=base.src_id_member et src_id_member='".$membre."' et valid='on'

De manière plus propre :
SQL
$sql="SELECT src_id_spec,members_display_name FROM base inner join ibf_members on base.src_id_member = ibf_members.id WHERE src_id_member='".$membre."' AND valid='on'";


Essaie cella là mais bon... es tu sûr que c'est bien la seconde requête qui est exécutée?
Chandon
Oui, j'en suis sûr car j'ai ajouté une petite phrase du genre 'ceci est votre collection' si on effectue la requete 1 ($access_full=='ok')
Or elle s'affiche ou non correctement en fonction de l'appel (confirmé par l'affichage de la requete sql dans la page).

Je ne comprends vraiment pas ... sad.gif
captain_torche
Si tu fais un echo de ta requête sur ta page, et que tu le copies/colles dans phpMyAdmin, ça te donne quoi ?
Chandon
Membre 1 : 1 fiche dont 1 visible :
CITATION
Votre collection :SELECT src_id_spec,members_display_name FROM base,ibf_members WHERE ibf_members.id=base.src_id_member AND src_id_member='1'

Le membre Chandon a 1 specimens dans sa liste.


Membre 39 : 2 fiches dont 1 visible :
CITATION
SELECT src_id_spec,members_display_name FROM base,ibf_members WHERE ibf_members.id=base.src_id_member AND src_id_member='39' AND valid='on'

Le membre maaagikk a 2 specimens dans sa liste.
Portekoi
Reprends ma syntaxe pour voir smile.gif
sarc
Bonjour,

As-tu essayé ce que t'as dit captain_torche ? Je n'ai pas compris ce qu'était ton dernier message, si c'était le résultat d'un test ou alors juste une explication supplémentaire ou un essai dans PHPMyAdmin, ou etc...

Dans l'ordre :
- Afficher la requète à l'écran
- La tester dans MyAdmin
- Voir si les résultats sortis sont cohérents

Soit ils sont cohérents dans MyAdmin -> tu as alors un problème dans ton traitement PHP
Soit ils ne le sont déjà pas dans MyAdmin -> vérifier la structure de tes tables, les données qui sont dedans et voir quelle restriction foire.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.