Chandon Posté 9 Novembre 2007 Partager Posté 9 Novembre 2007 (modifié) 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 : 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. Modifié 9 Novembre 2007 par Chandon Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 9 Novembre 2007 Partager Posté 9 Novembre 2007 Char veut dire que le champ ne contient pas 'on' mais 'on ' avec espace Mets un varchar(3) par exemple et enlève l'espace pour voir... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Chandon Posté 9 Novembre 2007 Auteur Partager Posté 9 Novembre 2007 Merci de ta réponse. J'ai basculé le champ en varchar(2). Pas de changement dans les résultats de la requête... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 9 Novembre 2007 Partager Posté 9 Novembre 2007 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="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? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Chandon Posté 9 Novembre 2007 Auteur Partager Posté 9 Novembre 2007 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 ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 9 Novembre 2007 Partager Posté 9 Novembre 2007 Si tu fais un echo de ta requête sur ta page, et que tu le copies/colles dans phpMyAdmin, ça te donne quoi ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Chandon Posté 9 Novembre 2007 Auteur Partager Posté 9 Novembre 2007 (modifié) Membre 1 : 1 fiche dont 1 visible : 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 : 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. Modifié 9 Novembre 2007 par Chandon Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 9 Novembre 2007 Partager Posté 9 Novembre 2007 Reprends ma syntaxe pour voir Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sarc Posté 9 Novembre 2007 Partager Posté 9 Novembre 2007 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant