Bonjour,
au lieu d'utiliser deux boucles (classique...)
Je tente en une seule boucle (compliqué pour moi) d'établir une jointure entre la table DOCUMENTS et la table ARTICLES de manière à obtenir :
de la table DOCUMENTS : une image d'un article (filtrée par l'id de l'article et le descriptif de l'image)
et de la table ARTICLES : l'url, le titre et le descriptif de l'article.
J'obtiens bien l'image avec #FICHIER, normal
mais l'url est 0; le titre et le descriptif sont ceux de l'image.
Est-ce possible en une boucle avec jointure de deux tables d'obtenir le résultat ?
Voici la tentative qui n'est pas au point :
<BOUCLE_image(DOCUMENTS){articles.id_article=50}{descriptif=selection}>
<a href="#URL_ARTICLE">[(#FICHIER|image_reduire{260,0})]</a>
#TITRE
#DESCRIPTIF
</BOUCLE_image>
Merci, merci,
A+
Alain
peut etre plutot :
<BOUCLE_image(DOCUMENTS articles){id_article=50}{descriptif=selection}>
<a href="#URL_ARTICLE">[(#FICHIER|image_reduire{260,0})]</a>
#TITRE
#DESCRIPTIF
</BOUCLE_image>
il me semble que j'ai un truc plus ou moins similaire qqpart. Si cet
exemple ne fonctionne pas, dis le moi, je regarderai plus en details.
Chag
Alain HUSSON a écrit :
Bonjour,
au lieu d'utiliser deux boucles (classique...)
Je tente en une seule boucle (compliqué pour moi) d'établir une jointure
entre la table DOCUMENTS et la table ARTICLES de manière à obtenir :
de la table DOCUMENTS : une image d'un article (filtrée par l'id de
l'article et le descriptif de l'image)
et de la table ARTICLES : l'url, le titre et le descriptif de l'article.
J'obtiens bien l'image avec #FICHIER, normal
mais l'url est 0; le titre et le descriptif sont ceux de l'image.
Est-ce possible en une boucle avec jointure de deux tables d'obtenir le
résultat ?
Voici la tentative qui n'est pas au point :
<BOUCLE_image(DOCUMENTS){articles.id_article=50}{descriptif=selection}>
<a href="#URL_ARTICLE">[(#FICHIER|image_reduire{260,0})]</a>
#TITRE
#DESCRIPTIF
</BOUCLE_image>
Merci, merci,
A+
Alain
_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip ou
http://embed.mibbit.com/?server=irc.freenode.net&channel=%23spip
--
"Ca ne marche pas" ne veut rien dire. Alors ne dites rien (ou développez !)
"it doesn't work" means nothing. So, say nothing (or say more !)
Je n'ai pas dû poser la bonne question :
Dans la boucle :
<BOUCLE_image(DOCUMENTS){mode=image}{id_article}{descriptif=selection}>
<a href="#URL_ARTICLE">[(#FICHIER|image_reduire{260,0})]</a>
#TITRE
</BOUCLE_image>
du fait de la jointure automatique des tables effectuées pas SPIP
l'URL de l'article correspondant à l'image de l'id_article est juste.
Par contre, ce n'est pas le TITRE de l'image que je voudrais
mais le titre de l'article.
Le pb est que TITRE est commun au document et à l'article.
En sql j'écrirai table.champ, mais articles.#TITRE ne fonctionne pas.
Si quelqu'un a une solution, sans passer par deux boucles...
Merci
Alain
chag a écrit :
peut etre plutot :
<BOUCLE_image(DOCUMENTS articles){id_article=50}{descriptif=selection}>
<a href="#URL_ARTICLE">[(#FICHIER|image_reduire{260,0})]</a>
#TITRE
#DESCRIPTIF
</BOUCLE_image>
il me semble que j'ai un truc plus ou moins similaire qqpart. Si cet
exemple ne fonctionne pas, dis le moi, je regarderai plus en details.
Chag
Alain HUSSON a écrit :
Bonjour,
au lieu d'utiliser deux boucles (classique...)
Je tente en une seule boucle (compliqué pour moi) d'établir une jointure
entre la table DOCUMENTS et la table ARTICLES de manière à obtenir :
de la table DOCUMENTS : une image d'un article (filtrée par l'id de
l'article et le descriptif de l'image)
et de la table ARTICLES : l'url, le titre et le descriptif de l'article.
J'obtiens bien l'image avec #FICHIER, normal
mais l'url est 0; le titre et le descriptif sont ceux de l'image.
Est-ce possible en une boucle avec jointure de deux tables d'obtenir le
résultat ?
Voici la tentative qui n'est pas au point :
<BOUCLE_image(DOCUMENTS){articles.id_article=50}{descriptif=selection}> <a href="#URL_ARTICLE">[(#FICHIER|image_reduire{260,0})]</a> #TITRE
#DESCRIPTIF
</BOUCLE_image>
Merci, merci,
A+
Alain
_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip ou
http://embed.mibbit.com/?server=irc.freenode.net&channel=%23spip
Alain HUSSON a écrit :
Je n'ai pas dû poser la bonne question :
Dans la boucle :
<BOUCLE_image(DOCUMENTS){mode=image}{id_article}{descriptif=selection}>
<a href="#URL_ARTICLE">[(#FICHIER|image_reduire{260,0})]</a>
#TITRE
</BOUCLE_image>
du fait de la jointure automatique des tables effectuées pas SPIP
l'URL de l'article correspondant à l'image de l'id_article est juste.
Par contre, ce n'est pas le TITRE de l'image que je voudrais
mais le titre de l'article.
Le pb est que TITRE est commun au document et à l'article.
En sql j'écrirai table.champ, mais articles.#TITRE ne fonctionne pas.
Si quelqu'un a une solution, sans passer par deux boucles...
j'imagine que ta boucle est dans une boucle article.
dans ce cas, tu peux faire :
<BOUCLE_toto(ARTICLES){id_article}>
...
<BOUCLE_image(DOCUMENTS){mode=image}{id_article}{descriptif=selection}>
<a href="#_toto:URL_ARTICLE">[(#FICHIER|image_reduire{260,0})]</a>
#_toto:TITRE
</BOUCLE_image>
...
</BOUCLE_toto>
@++
Merci Stéphane, mais j'ai bien dit : sans passer par deux boucles
ce que des jointures en sql peuvent faire
en déclarant le nom de table et celui du champ
du genre table.champ
mais ce n'est peut-être pas possible avec spip, ce qui m'étonnerai car il y a tellement de possibilités.
Si quelqu'un sait faire ...
merci
A+
alain
Stephane a écrit :
Alain HUSSON a écrit :
Je n'ai pas dû poser la bonne question :
Dans la boucle :
<BOUCLE_image(DOCUMENTS){mode=image}{id_article}{descriptif=selection}>
<a href="#URL_ARTICLE">[(#FICHIER|image_reduire{260,0})]</a>
#TITRE
</BOUCLE_image>
du fait de la jointure automatique des tables effectuées pas SPIP
l'URL de l'article correspondant à l'image de l'id_article est juste.
Par contre, ce n'est pas le TITRE de l'image que je voudrais
mais le titre de l'article.
Le pb est que TITRE est commun au document et à l'article.
En sql j'écrirai table.champ, mais articles.#TITRE ne fonctionne pas.
Si quelqu'un a une solution, sans passer par deux boucles...
j'imagine que ta boucle est dans une boucle article.
dans ce cas, tu peux faire :
<BOUCLE_toto(ARTICLES){id_article}>
...
<BOUCLE_image(DOCUMENTS){mode=image}{id_article}{descriptif=selection}>
<a href="#_toto:URL_ARTICLE">[(#FICHIER|image_reduire{260,0})]</a>
#_toto:TITRE
</BOUCLE_image>
...
</BOUCLE_toto>
@++
Merci Stephane, mais dans l'exemple que je donne, il n'y a qu'une seule boucle et pas deux.
Dans une requête sql, on peut indiquer pour chaque table un nom de champ
lorsqu'il y a plusieurs champs identiques appartenant à plusieurs tables
du genre table.champ
Ce soit aussi être possible avec spip
Alors si quelqu'un a la solution savante...
merci
A+
Alain
Stephane a écrit :
Alain HUSSON a écrit :
Je n'ai pas dû poser la bonne question :
Dans la boucle :
<BOUCLE_image(DOCUMENTS){mode=image}{id_article}{descriptif=selection}>
<a href="#URL_ARTICLE">[(#FICHIER|image_reduire{260,0})]</a>
#TITRE
</BOUCLE_image>
du fait de la jointure automatique des tables effectuées pas SPIP
l'URL de l'article correspondant à l'image de l'id_article est juste.
Par contre, ce n'est pas le TITRE de l'image que je voudrais
mais le titre de l'article.
Le pb est que TITRE est commun au document et à l'article.
En sql j'écrirai table.champ, mais articles.#TITRE ne fonctionne pas.
Si quelqu'un a une solution, sans passer par deux boucles...
j'imagine que ta boucle est dans une boucle article.
dans ce cas, tu peux faire :
<BOUCLE_toto(ARTICLES){id_article}>
...
<BOUCLE_image(DOCUMENTS){mode=image}{id_article}{descriptif=selection}>
<a href="#_toto:URL_ARTICLE">[(#FICHIER|image_reduire{260,0})]</a>
#_toto:TITRE
</BOUCLE_image>
...
</BOUCLE_toto>
@++
* Alain HUSSON tapuscrivait, le 09/03/2009 17:03:
Merci Stéphane, mais j'ai bien dit : sans passer par deux boucles
ce que des jointures en sql peuvent faire
en déclarant le nom de table et celui du champ
du genre table.champ
mais ce n'est peut-être pas possible avec spip, ce qui m'étonnerai car il y a tellement de possibilités.
Malheureusement, en l'état de SPIP, ce n'est pas possible.
La notion d'alias n'existe pas
Et #table.CHAMP non plus 
--
RealET
Tant pis, SPIP fait tellement de choses
il est pardonné...
C'était histoire d'économiser une boucle pour aller plus vite.
On conservera donc plusieurs boucles.
Merci beaucoup pour la réponse.
A+
Alain
RealET a écrit :
* Alain HUSSON tapuscrivait, le 09/03/2009 17:03:
Merci Stéphane, mais j'ai bien dit : sans passer par deux boucles
ce que des jointures en sql peuvent faire
en déclarant le nom de table et celui du champ
du genre table.champ
mais ce n'est peut-être pas possible avec spip, ce qui m'étonnerai car il y a tellement de possibilités.
Malheureusement, en l'état de SPIP, ce n'est pas possible.
La notion d'alias n'existe pas
Et #table.CHAMP non plus 
Alain HUSSON a écrit :
Merci Stephane, mais dans l'exemple que je donne, il n'y a qu'une seule boucle et pas deux.
Dans une requête sql, on peut indiquer pour chaque table un nom de champ
lorsqu'il y a plusieurs champs identiques appartenant à plusieurs tables
du genre table.champ
Ce soit aussi être possible avec spip
le probleme, c'est pas tant la jointure, qu'il serait effectivement facile de faire, c'est plutot la présence de champs homonymes (titre) dans les 2 tables
Maintenant, je ne suis pas sur de mon coup, mais il est probable que #URL_ARTICLE hors d'une boucle ARTICLES provoque de toute facon la requete sur la table spip_article (au rechargement du cache uniquement bien sur)
donc niveau perf, mettre la boucle article, meme à l'interieur de ta boucle document, ca n'est pas forcement une mauvaise idée et ne devrait pas changer grand chose en terme de perf.
Alors si quelqu'un a la solution savante...
une piste serait peut etre de déclarer justement une jointure automatique avec une exception de nommage, mais ca va modifier le comportement de toutes les boucles documents
autre approche, te faire un critère genre {titre article} qui ajoute la jointure et le champ "spip_articles.titre as titre_article"
c'est un peu de code compliqué, mais c'est sans doute le plus propre
heu, je dis tout ca, mais tu es bien en spip 1.9.2 hein ?
@++