Bonjour
Je suis en train de programmer un site pour le Directeur de mon site partenaire.
Le site est en SPIP, et je rencontre un problème à l'exécution d'un squelette comportant deux boucles imbriquées.
La version de SPIP est : 2.1.
Les tables lues sont : courses et rapports, avec une jointure sur le champ id_courses varchar(10).
Ce champ figure bien dans la table rapports, mais le champ correspondant varchar(10) dans la table courses, est id. J'ai donc déclaré une exception des jointures dans le fichier /config/mes_options.php
J'ai également déclaré explicitement la jointure :
mes_options.php
-------------------------
// Alias id_courses du champ id
// pour la jointure sur id_courses.
//
$exceptions_des_jointures['id_courses'] = array('courses', 'id');
// Jointure sur id_courses de rapports vers courses.
//
$tables_jointures['rapports']['id_courses'] = 'courses';
// Jointure sur id_courses de chevaux vers courses
//
$tables_jointures['chevaux']['id_courses'] = 'courses';
-------------------------
Pour la table chevaux, je n'en ai pas encore l'utiisation.
Ces deux tables courses et rapports, sont dans la database lescours, qui n'est pas la database par défaut, mais une database supplémentaire accessible en lecture correctement.
La boucle externe est sur la table courses, la boucle interne sur la table rapports.
Le champ id varchar(10) est de la forme : yymmddrrcc où yy est l'année, mm le mois, dd le jour, rr le numéro de réunion, et cc le numéro de course
Le champ id_courses a la même syntaxe.
La variable id_date est affecté avec yymmd , donc la date paramètre.
<BOUCLE_reunions_1(lescours:courses){id LIKE #GET{id_date}%}{par id}>
<BOUCLE_rapports_1(lescours:rapports){id_courses}>
L'identificateur de Course = #ID_COURSES
</BOUCLE_rapports_1>
</BOUCLE_reunions_1>
Théoriquement, le critère id_courses dans la boucle interne, sélectionne les id_courses égaux à ceux de la boucle externe, à cause de la jointure déclarée, qui est possible grâce à l'exception de la jointure qui est indiquée dans le script mes_options.php
Il est sûr et certain que les tables courses et rapports sont alimentées pour les champs id et id_courses égaux des tables courses et rapports. L'intitulé "L'identificateur de Course = " s'affiche, mais les #ID_COURSES sont blancs.
Que faire ?
Mes déclarations dans le script mes_options.php sont-elles correctes ? Elles devraient puisque les intitulés s'affichent.
Et... Il y a un bug. Même s'il n'y a pas de valeurs égales pour id et id_courses, l'intitulé s'affiche pour toutes les valeurs lues dans la table courses, alors que théoriquement, la boucle interne ne devrait pas être parcourue.
Mais... Dans le cas où il y a des valeurs égales id et id_courses, pourquoi #ID_COURSES ne s'affiche pas ?
Merci baucoup de votre aide.
Amicalement.
Jean-François Ortolo
Je suis en train de programmer un site pour le Directeur de mon site partenaire.
Le site est en SPIP, et je rencontre un problème à l'exécution d'un squelette comportant deux boucles imbriquées.
La version de SPIP est : 2.1.
Les tables lues sont : courses et rapports, avec une jointure sur le champ id_courses varchar(10).
Ce champ figure bien dans la table rapports, mais le champ correspondant varchar(10) dans la table courses, est id. J'ai donc déclaré une exception des jointures dans le fichier /config/mes_options.php
J'ai également déclaré explicitement la jointure :
mes_options.php
-------------------------
// Alias id_courses du champ id
// pour la jointure sur id_courses.
//
$exceptions_des_jointures['id_courses'] = array('courses', 'id');
// Jointure sur id_courses de rapports vers courses.
//
$tables_jointures['rapports']['id_courses'] = 'courses';
// Jointure sur id_courses de chevaux vers courses
//
$tables_jointures['chevaux']['id_courses'] = 'courses';
-------------------------
Pour la table chevaux, je n'en ai pas encore l'utiisation.
Ces deux tables courses et rapports, sont dans la database lescours, qui n'est pas la database par défaut, mais une database supplémentaire accessible en lecture correctement.
La boucle externe est sur la table courses, la boucle interne sur la table rapports.
Le champ id varchar(10) est de la forme : yymmddrrcc où yy est l'année, mm le mois, dd le jour, rr le numéro de réunion, et cc le numéro de course
Le champ id_courses a la même syntaxe.
La variable id_date est affecté avec yymmd , donc la date paramètre.
<BOUCLE_reunions_1(lescours:courses){id LIKE #GET{id_date}%}{par id}>
<BOUCLE_rapports_1(lescours:rapports){id_courses}>
L'identificateur de Course = #ID_COURSES
</BOUCLE_rapports_1>
</BOUCLE_reunions_1>
Théoriquement, le critère id_courses dans la boucle interne, sélectionne les id_courses égaux à ceux de la boucle externe, à cause de la jointure déclarée, qui est possible grâce à l'exception de la jointure qui est indiquée dans le script mes_options.php
Il est sûr et certain que les tables courses et rapports sont alimentées pour les champs id et id_courses égaux des tables courses et rapports. L'intitulé "L'identificateur de Course = " s'affiche, mais les #ID_COURSES sont blancs.
Que faire ?
Mes déclarations dans le script mes_options.php sont-elles correctes ? Elles devraient puisque les intitulés s'affichent.
Et... Il y a un bug. Même s'il n'y a pas de valeurs égales pour id et id_courses, l'intitulé s'affiche pour toutes les valeurs lues dans la table courses, alors que théoriquement, la boucle interne ne devrait pas être parcourue.
Mais... Dans le cas où il y a des valeurs égales id et id_courses, pourquoi #ID_COURSES ne s'affiche pas ?
Merci baucoup de votre aide.
Amicalement.
Jean-François Ortolo