Aller au contenu

Aide pour requête SQl qui coince...


Chandon

Sujets conseillés

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
Lien vers le commentaire
Partager sur d’autres sites

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

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

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
Lien vers le commentaire
Partager sur d’autres sites

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

Veuillez vous connecter pour commenter

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



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