[Résolu] Une question de jointure ... -
Philipppe - 15/08/2011
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.9.4.2
#~ Url du site : http://www.amavie.fr
#~ Hébergeur / Soft : Gandi.net
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~
Bonjour,
Comment terminer cette requête qui doit :
- Séléctionner certains champs de la table cms_0agree, qui contient mes données
- quand la valeur du champs cms_0agree.email = valeur du champs cms_feusers_users.username correspondant à l'id de l'utilisateur connecté sur la page qui appelle le script, soit cms_feusers_loggedin.userid
- afficher le résultat.
Code :
$db = &$gCms->GetDb();
echo "<table>";
$query = "SELECT f1.userid, f2.id, f2.username, a.civilite, a.nom, a.prenom, a.adresse, a.cp, a.ville, a.agree, a.dateAgrement, a.rcpro
FROM ".cms_db_prefix()."feusers_loggedin AS f1
LEFT JOIN ".cms_db_prefix()."feusers_users AS f2 ON f1.userid = f2.id // résultat id du souscripteur (son email)
LEFT JOIN ".cms_db_prefix()."0agree AS a ON f2.username = a.email ";
$dbretour = &$db->Execute($query);//exécution de la requête
if($dbretour === false) { echo "La requête provoque une erreur !";exit();}
while ($row = $dbretour->FetchRow())
{
echo <<<AFFICHE
<tr>
<td class="colIntitules">- Praticien(ne) : </td>
<td class="colDonnees">{$row['civilite']} {$row['prenom']} {$row['nom']}</td>
</tr>
<tr>
<td colspan="2">afficher les chams utiles !
</td>
</tr>
AFFICHE;
}
echo "</table>";
//
J'ai essayé diverses syntaxes en utilisant les jointures avec les tables de Feu ...
Le résultat reste vide !
Et ... comment faire si plusieurs utilisateurs sont connectés en même temps ?
J'ai essayé de créer une variable de session intégrée au gabarit de connexion, sans succès !
Merci de vos aides éventuelles.
[Résolu] Une question de jointure ... -
Philipppe - 16/08/2011
Philipppe a écrit :J'ai essayé diverses syntaxes en utilisant les jointures avec les tables de Feu ...
Solution trouvée vers 2 heures du mat, en lisant des posts sur le forum "développez.com" : le copier/coller la "partie SQL" directement dans PhpMyAdmin fourni des niveaux de détail d'erreur qui me conviennent mieux dans ce contexte que le debug de CmsMs !
En fait ma requête est propre ... à ceci près : un mot manquant dans la désignation des tables du module feuseurs !
A force de chercher à optimiser le code ..., à comprimer ..., j'avais écrit cms_feusers_loggedin au lieu de cms_
module_feusers_loggedin ...
Donc, le code opérationnel :
Code :
$query = "SELECT f1.userid, f2.id, f2.username, a.civilite, a.nom, a.prenom, a.adresse, a.cp, a.ville, a.agree, a.dateAgrement, a.rcpro
FROM cms_module_feusers_loggedin AS f1
LEFT JOIN cms_module_feusers_users AS f2 ON f1.userid = f2.id
LEFT JOIN cms_0agree AS a ON f2.username = a.email ";
Reste maintenant pour moi à utiliser la variable de session du module Feu dans le cas où plusieurs personnes sont connectées en même temps !
[Résolu] Une question de jointure ... -
bess - 16/08/2011
Code :
$query = "SELECT f1.userid, f2.id, f2.username, a.civilite, a.nom, a.prenom, a.adresse, a.cp, a.ville, a.agree, a.dateAgrement, a.rcpro
FROM cms_module_feusers_loggedin AS f1
LEFT JOIN cms_module_feusers_users AS f2 ON f1.userid = f2.id
LEFT JOIN cms_0agree AS a ON f2.username = a.email ";
tu peux te passer du préfixe "cms_" en utilisant mon exemple (voir le blog que je t'ai filé il y a quelques jours)
l'avantage c'est que ton code fonctionnera sur toutes les installations.
[Résolu] Une question de jointure ... -
Philipppe - 16/08/2011
Merci bess ... j'ai lu, vu, et testé !
Et je partage le soucis de portabilité du code ... et ma version de production sera optimisé autant que je saurai le faire !
Pour l'instant, mon handicap moteur me fait préférer coder :
- cms_ = 4 caractères
plutôt que
- ".cms_db_prefix()." = 19 caractères sans compter les <Maj>pour rendre le <.> sur un clavier de portable 11 pouces ..... (mon dos n'y resisteras pas en ce moment).
Sans compter la nécessité de repasser à la version cms_ quand je poste un code sur un forum autre que CmsMs !
A suivre !