Aller au contenu

Aide pour requête SQl qui coince...


Sujets conseillés

Posté (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é par Chandon
Posté

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...

Posté

Merci de ta réponse.

J'ai basculé le champ en varchar(2).

Pas de changement dans les résultats de la requête... :(

Posté

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?

Posté

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 ... :(

Posté (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é par Chandon
Posté

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.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...