By: Alec
Date: 2005-10-08
Time: 12:25
|
Sous-blocs avec array
J'ai écris une fonction "maFonction" qui renvoye un array.
Quelle est la syntaxe pour l'utiliser dans un sous-bloc comme indiqué ci-dessous ?
Si ce n'est pas possible, quelle est l'alternative ?
Merci
Alec
<code>
$TBS = new clsTinyButStrong ;
$TBS->LoadTemplate('tbs_fr_exemples_subblock.htm') ;
$Nbr = $TBS->MergeBlock('mb','array','TeamList') ;
// ligne originale de l'exemple
if ($Nbr>0) $TBS->MergeBlock('sb','array','TeamList[%p1%][matches]') ;
// ligne souhaitée
if ($Nbr>0) $TBS->MergeBlock('sb','array',maFonction("%p1%")) ;
$TBS->Show() ;
</code>
|
By: Skrol29
Date: 2005-10-08
Time: 18:28
|
Re: Sous-blocs avec array
Bonjour Alec,
Non ce n'est pas possible car le mode Requête Dynamique (avec des %1%) ne fonctionne qu'avec une chaîne comme requête. Hors, dans ton code, tu retournes un tableau.
Ce que tu peux faire, c'est d'utiliser un type de données personnalisé.
Code PHP:
if ($Nbr>0) $TBS->MergeBlock('sb','montype',"%p1%");
Tu dois alors coder trois fonctions PHP:
tbsdb_montype_open()
tbsdb_montype_fetch()
tbsdb_montype_close()
La syntaxe de ces fonctions sont décrites dans le manuelle.
La première fonction recevra "%p1%" comme paramètre, ce qui correspondra lors de l'appel réeel à la valeur du paramètre "p1" du sou-bloc nommé "sb".
|
By: Alec
Date: 2005-10-09
Time: 11:39
|
Re: Sous-blocs avec array
Bonjour Skrol,
Ca fonctionne super (voir code ci-dessous), merci.
Par contre, je n'ai pas réussi à implémenter mon nouveau type de donnée "arrayfunc" sous forme de classe. D'après la doc, les methodes doivent s'appeler tbsdb_open, etc... mais pas un mot au sujet du nom de la classe. Comment dois-je nommer la classe ?
Merci
Alec
// merge du sous-bloc avec nouveau type de donnée "arrayfunc"
$tbs->MergeBlock("sousblock","arrayfunc","getMonArray(%p1%,%p2%)");
function tbsdb_arrayfunc_open(&$Source, &$Query) {
// $Query contient l'appel a une fonction qui retourne un array - ex : maFonction("toto",42)
// on extrait le nom de la fonction à appeler ainsi que les arguments
$x=split("\(|)",$Query);
$myArrayFunction=$x[0];
$myArrayArgs=$x[1];
// on appelle la fonction
return $myArrayFunction($myArrayArgs);
}
function tbsdb_arrayfunc_fetch(&$Rs, $RecNum) {
return next($Rs);
}
function tbsdb_arrayfunc_close(&$Rs) {
$Rs=null;
}
|
|
By: Skrol29
Date: 2005-10-09
Time: 14:57
|
Re: Sous-blocs avec array
Bonjour,
Tu nommes la classe comme tu veux.
C'est dans le MergeBlock que tu rappele le nom.
Exemple :
$TBS->MergeBlock('mon_blk','~ma_classe','ma_requête');
Y'a un example dans la section "Programmation Orientée Objet" du manuel.
|
By: Alec
Date: 2005-10-09
Time: 23:49
|
Re: Sous-blocs avec array
C'est exact, cela m'a échappé. Je faisait une fixation sur la section "Ajout d'un type de source de données".
Merci encore pour tes conseils.
Alec
|
|
Posting in progress.
Please wait...
|