Pierre Andrews | 1 Jun 11:39 2005
Picon

Re: ! Filtres agenda_memo & squelette de calendriers


Stephane LAURENT wrote:
> J'ai quand meme un cas ou je n'ai pas trouvé d'autre solution que de 
> mettre du code dans les boucles : ordonner des valeurs provenant de 
> plusieurs boucles (ca peut etre interessant sur un resultat de recherche 
> entre autre ou pour ordonner des articles selectionnés par differentes 
> boucles).

Si c'est pour un objet identique (e.g. des articles), alors tu peux 
utiliser les doublons:

<BOUCLE_garder1(ARTICLES) {criteres} ... {doublons garder1}>
</BOUCLE_garder1>

<BOUCLE_garder2(ARTILCES) {criteres} ... {doublons garder2}>
</BOUCLE_garder2>

<BOUCLE_exclus(ARTICLES) {doublons garder1} {doublons garder2} {doublons 
exclus}>
</BOUCLE_exlucs>

<BOUCLE_affiche(ARTICLES) {doublons exclus} {par date} {0,10}>
#TITRE
</BOUCLE_affiche>

Ca oblige à faire une boucle d'exlusion qui parcourera tous les articles 
qui ne t'interessent pas, mais ca évite le php..
Donc après, il faut savoir quel optimum on cherche.

Pierre
(Continue reading)

Pierre Andrews | 1 Jun 12:08 2005
Picon

alterner sans modulo?

Salut,

Fil a ajouté dans la 1.8 le filtre alterner qui permet de ne pas mettre 
du php pour alterner des choses.

Une application importante est la création de tableau:
<B_documents>
<table>
<BOUCLE_documents(DOCUMENTS) {0,10}>
[(#COMPTEUR_BOUCLE|alterner{'<tr>','',''})]
<td>#LOGO_DOCUMENT</td>
[(#COMPTEUR_BOUCLE|alterner{'','','</tr>'})]
</BOUCLE_documents>
</table>
</B_documents>

mais ca pose problème parce que la dernière ligne ne sera pas fermé si 
le nombre de résultats n'est pas un multiple de trois.

Il faudrait donc un filtre dans ce genre:
</BOUCLE_documents>
[(#TOTAL_BOUCLE|multiple{3}|?{'','</tr>'})]
</table>
</B_documents>

function multiple($total, $combien) {
   return (($total % $combien) == 0);
}

qui serait complémentaire au filtre alterner.
(Continue reading)

Christian Lefebvre | 1 Jun 12:58 2005

boucle/critere where

Salut la liste,
  je suis coincé par un cas tordu que je n'arrive pas à exprimer en
boucle standards ...

  À une époque, il avait été évoqué l'idée d'une boucle
<BOUCLE_toto(SQL){where.. group by ...}>, ou d'un critère {WHERE ...}
mais je ne retrouve rien de précis là dessus.

  Quelqu'un sait-il me dire s'il y a une contrib ou une discussion
sur la liste qui cause de ça ?

--

-- 
À+, Pif.

Pierre Andrews | 1 Jun 13:15 2005
Picon

Re: boucle/critere where

Salut,

je ne sais plus pourquoi ni ou ca avait discuté, mais j'avais fait les 
critères:

function critere_sum($idb, &$boucles, $param, $not) {
	$boucle = &$boucles[$idb];

	if (!preg_match("/sum[[:space:]]+([a-z_0-9]+)/i",
					$param, $match))
	  erreur_squelette(_T('zbug_info_erreur_squelette'), $param);
	
	$boucle->select[] = 'sum('.$match[1].') as somme';
}

function critere_count($idb, &$boucles, $param, $not) {
	$boucle = &$boucles[$idb];

	if (!preg_match("/count[[:space:]]+([a-z_0-9]+)/i",
					$param, $match))
	  erreur_squelette(_T('zbug_info_erreur_squelette'), $param);
	
	$boucle->select[] = 'count('.$match[1].') as compte';
}

function balise_SOMME($p) {
   return rindex_pile($p, 'somme', 'sum');
}

function balise_COMPTE($p) {
(Continue reading)

Sylvain | 1 Jun 14:05 2005
Picon

Re: alterner sans modulo?

Le 01/06/05, Pierre Andrews<mortimer.pa <at> free.fr> a écrit :
> Une application importante est la création de tableau:
> <B_documents>
> <table>
> <BOUCLE_documents(DOCUMENTS) {0,10}>
> [(#COMPTEUR_BOUCLE|alterner{'<tr>','',''})]
> <td>#LOGO_DOCUMENT</td>
> [(#COMPTEUR_BOUCLE|alterner{'','','</tr>'})]
> </BOUCLE_documents>
> </table>
> </B_documents>
> 
> mais ca pose problème parce que la dernière ligne ne sera pas fermé si
> le nombre de résultats n'est pas un multiple de trois.
(...)
> Enfin, j'ai peut être ratté une subtilité, parce que j'écrit ca vite.
> Est ce que vous pensez que ca vaut le coup?

effectivement ... mais pense-tu que si cette dernière ligne n'est pas
complète ce soit gènant ?
visuellement/graphiquement ?
au niveau de la norme W3C ?

tu as un exemple en ligne ?

a+
--

-- 
       Sylvain
http://www.guaph.net/
(Continue reading)

Fil | 1 Jun 14:22 2005
Picon

Re: ! Filtres agenda_memo & squelette de calendriers

> Il retourne un espace juste pour signaler que la boucle n'est pas vide.

Je ne comprends pas à quoi sert cet espace. Boucle vide ou pas, on peut
toujours gérer "en sortie", avec <//B_> à la place de </B_>, non ?

-- Fil

Fil | 1 Jun 14:27 2005
Picon

Re: alterner sans modulo?

> Il faudrait donc un filtre dans ce genre:
> </BOUCLE_documents>
> [(#TOTAL_BOUCLE|multiple{3}|?{'','</tr>'})]
> </table>
> </B_documents>
> 
> function multiple($total, $combien) {
>    return (($total % $combien) == 0);
> }
> 
> qui serait complémentaire au filtre alterner.
> 
> Enfin, j'ai peut être ratté une subtilité, parce que j'écrit ca vite.

Tu as raté une subtilité en effet :))

[(#TOTAL_BOUCLE|alterner{'<td colspan="3"></tr></td>','<td colspan="2"></td></tr>','<td></td></tr>',''})]

http://listes.rezo.net/archives/spip-core/2005-04/msg00007.html

-- Fil

Déesse A. | 1 Jun 14:34 2005
Picon

Re: ! Filtres agenda_memo & squelette de calendriers


Le 1 juin 05, à 14:22, Fil a écrit :

>> Il retourne un espace juste pour signaler que la boucle n'est pas 
>> vide.
>
> Je ne comprends pas à quoi sert cet espace. Boucle vide ou pas, on peut
> toujours gérer "en sortie", avec <//B_> à la place de </B_>, non ?

oui, j'ai hésité à faire comme ça, mais avec cette technique on a la 
possibilité (exploitée par les squelettes que j'ai envoyés) d'envoyer 
une page disant "Pas d'article" plutot qu'un calendrier vide. On a 
aussi la possibilité d'exploiter la zone entre <Bx> et <BOUCLEx> comme 
on le fait d'ordinaire, ça ne me parait pas bon  d'introduire un cas où 
cette méthode classique de Spip ne marcherait plus. Il y a un coté 
"hack" c'est sûr, mais des espaces superflus il y en a déjà 
tellement...

Déesse A.

Pierre Andrews | 1 Jun 15:00 2005
Picon

Re: alterner sans modulo?

Salut,

et bien, c'est toujours bien de fermer les tags, sinon, on aurait pas 
inventé les tags fermants :-D

non, sérieusement, j'ai pas d'exemple en ligne, parce que je n'utilise 
pas les tableaux et alterner, mais en test Firefox ne se plaignait pas 
du tout du manque de tag fermant, probablement le w3c aurait crié.

Pierre

Sylvain wrote:
> Le 01/06/05, Pierre Andrews<mortimer.pa <at> free.fr> a écrit :
> 
>>Une application importante est la création de tableau:
>><B_documents>
>><table>
>><BOUCLE_documents(DOCUMENTS) {0,10}>
>>[(#COMPTEUR_BOUCLE|alterner{'<tr>','',''})]
>><td>#LOGO_DOCUMENT</td>
>>[(#COMPTEUR_BOUCLE|alterner{'','','</tr>'})]
>></BOUCLE_documents>
>></table>
>></B_documents>
>>
>>mais ca pose problème parce que la dernière ligne ne sera pas fermé si
>>le nombre de résultats n'est pas un multiple de trois.
> 
> (...)
> 
(Continue reading)

Pierre Andrews | 1 Jun 15:02 2005
Picon

Re: alterner sans modulo?

He bien voilà,j'en étais sûr.

Je pensais bien que je passai à côté de qq chose et que Fil n'aurait pas 
fait un filtre sans penser à tout :-D

Par contre, c'est certainement pas évident à comprendre pour les novices 
(ceux qui ne savent pas ce que (intval($i)-1)%($num-1)+1 fait) comment 
on alterne un truc fixe ;)

Merci

Pierre

Fil wrote:
>> Il faudrait donc un filtre dans ce genre: </BOUCLE_documents> 
>> [(#TOTAL_BOUCLE|multiple{3}|?{'','</tr>'})] </table> </B_documents>
>> 
>> 
>> function multiple($total, $combien) { return (($total % $combien)
>> == 0); }
>> 
>> qui serait complémentaire au filtre alterner.
>> 
>> Enfin, j'ai peut être ratté une subtilité, parce que j'écrit ca
>> vite.
> 
> 
> Tu as raté une subtilité en effet :))
> 
> [(#TOTAL_BOUCLE|alterner{'<td colspan="3"></tr></td>','<td
(Continue reading)


Gmane