Categories > TinyButStrong general (FR) >

[fr] fonction évenementielle

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Th.C.
Date: 2004-09-07
Time: 14:21

[fr] fonction évenementielle

Problème avec les fonctions évenementielles, je n'ai peut être pas tout compris, en tout cas je patauge et je narrive pas à trouver d'info.
Je veux que pour chaque 'lot' la fonction me renvoi une chaine, qui soit ecrite dans le code html.
Mon problème est peut être lié au fait que j'utilise une requète dynamique?
Voici mon code,
merci pour toute aide que vous pourrez m'apporter.

HTML :
<tr onmouseover="highlightRow(this, true);" onmouseout="highlightRow(this, false);">
[lot2;onsection=getFoldClass] <!-- si onsection insérer dans le champ tbs suivant: erreur sur %p1% -->
  <td class="row1">
    <div class="[lot2.foldClass;noerr;block=tr;p1=[prog2.programme_id;noerr];htmlconv=esc]">
      <a href="../commun/lot_det.php?id_lot=[lot2.lot_id;noerr]">
        [lot2.lot_commercial;noerr]
      </a>
    </div>
  </td>
  <td class="row3">[lot2.type_lot;noerr]</td>
  <td class="row2">[lot2.prix_vente_ttc;frm='0 000.&nbsp;&euro;|*|&nbsp;';noerr]</td>
PHP:
function getFoldClass($NomBloc,&$CurrRec,&$DetailSrc,$RecNum){
  //$NomBloc   : nom du bloc qui appel la fonction (lecture seule)
  //$CurrRec   : tableau contenant les champs de l'enregistrement en cours (lecture/écriture)
  //$DetailSrc : source de la section en cours (lecture/écriture)
  //$RecNum    : numéro de l'enregsitrement en cours (lecture seule)
    $lot = new LotOptRes;  // creation d'un nouvel objet,...
    $lot->init($CurrRec['lot_id']); // s'initialisant avec les valeurs de la bd...
    $CurrRec['foldClass'] = $lot->getFoldClass();  // le champ 'foldClass' n'existe pas à l'origine dans le jeu de données (table de la bd)
                         // getFoldClass() retourne une chaine 'foldYel', 'foldRed',...
}
By: Th.C.
Date: 2004-09-07
Time: 14:29

Re: [fr] fonction évenementielle

précision: j'ai esasyé de mettre le 'onsection' dans le même champ que  la définition du bloc mais étant donné qu'il y a la définition du paramètre pour la requète dynamique, ça marche po!
By: Skrol29
Date: 2004-09-08
Time: 00:56

Re: [fr] fonction évenementielle

Salut,

Ta balise "[lot2;onsection=getFoldClass]" porte le nom du bloc "lot2" et n'a pas de nom de champs en suffixe. Donc elle définit un bloc. Mais comme la paramètre "block" n'y figure pas, le bloc est donc délimité par le modèle entier, et un seul enregistrement sera fusionné. C'est une spécificité de TBS.
Et je pense que la balise "[lot2.foldClass;noerr;block=tr;p1=[prog2.programme_id;noerr];htmlconv=esc]" n'est pas considérée comme une définition de bloc car elle est encapsulée dans le premier bloc défini.

Pour faire ce que tu souhaites, je pense que tu dois modifier tes deux balises comme suit :
"[lot2;block=tr;p1=[prog2.programme_id;noerr];onsection=getFoldClass]"
et
"[lot2.foldClass;noerr;htmlconv=esc]"


Il n'y a pas de contreindication pour utiliser 'onsection' et 'p1' en même temps.
By: Th.C.
Date: 2004-09-08
Time: 11:39

Re: [fr] fonction évenementielle

Bonjour,
Merci bcp pour les explications et les conseils (interessant et précis).
Pour le moment je peux pas tester ta solution... mais je donnerai des nouvelles dès que ce sera testé.
Quand je disais "ça marche po!" c'etait pas complètement vrai, en fait je suis arrivé à un semblant de résultat avec ça :
<td class="row3">
[lot2.type_lot;noerr;block=tr;onsection=getFoldClass;p1=[prog2.programme_id;noerr];htmlconv=esc ]
</td>
Le champ contenant la proprièté  'foldClass' se met bien à jour comme je le souhaite, mais celà prend beaucoup de tps à afficher...
De plus j'ai deux divisions à afficher (d'ou lot2 et prog2...), quand je mets le code (le même) pour afficher le première partie , la fusion fait exploser apache et postgre (processus à fond, freeze...), je n'arrive pas à savoir si c'est la construction de mes requètes (je ne pense pas), les va et vient fusion<->appel fonction(qui effectue une requète), ou tbs qui ce perd dans les blocs et qui part en cacahuète...(i.e. les block lot1, lot2 seraient mal définis et considérés comme tout le document et ...)
Une piste?

Merci encore.
By: Th.C.
Date: 2004-09-23
Time: 18:08

Re: [fr] fonction évenementielle

Merci skrol29,
il s'agissait bien d'un probleme de définition de bloc. Celà fonctionne en suivant tes conseils.
Par contre j'ai un autre soucis sur la même page.
il semblerai que quand j'ai plusieur 'lot' à afficher (ce sont les éléments de la sous requète) la page reste totalement blanche, sauf si j'écris du debug (echo) et même là ça s'arrete sur le $TBS->MergeBlock() comprenant ma sous requète, (apparement quand il y a plusieur résultats). dès que l'on passe sur cette méthode, plus rien aucun 'echo" ou quoi que ce soit!
Une piste?
Note: j'ai 2 block semblable, avec deux sous requètes chacun. Voilà comment ils sont construit:
[prog;block=begin]
    <table cellspacing="0" class="mcTable">
      <caption>
    <a href="../commun/prog_det.php?prog_id=[prog.programme_id;noerr;friend=table]">
           [prog.programme;noerr;]&nbsp;[prog.cp;noerr;max=3]&nbsp;[prog.ville;noerr]
        </a>
        (...)
    <tbody>[lot;block=begin;p1=[prog.programme_id;noerr];onsection=getFoldClass]
    <tr >
          <td class="row1"><div class="[lot.foldClass;noerr;htmlconv=esc]">

(...)

[prog2;block=begin]
    <table cellspacing="0" class="mcTable">
      <caption>
     <a href="../commun/prog_det.php?prog_id=[prog2.programme_id;noerr;friend=table]">
           [prog2.programme;noerr;]&nbsp;[prog2.cp;noerr;max=3]&nbsp;[prog2.ville;noerr]
         </a>
         (...)
      <tbody>[lot2;block=begin;p1=[prog2.programme_id;noerr];onsection=getFoldClass]
    <tr>
          <td class="row1"><div class="[lot2.foldClass;noerr;htmlconv=esc]">
By: Skrol29
Date: 2004-09-24
Time: 02:40

Re: [fr] fonction évenementielle

Le seul exit qu'il y ait dans TBS c'est sur la méthode Show() ou CacheAction().
Donc ce qu'il t'arrives vient probablement de ta fonction évènementielle getFoldClass().
Supprime momentanement le paramère "onsection=getFoldClass" pour vérifier. (renomme simplement le paramètre, c'est plus simple).
By: Th.C.
Date: 2004-09-24
Time: 13:04

Re: [fr] fonction évenementielle

Effectivement en le supprimant je n'avais plus le pb, mais je n'ai pas non plus le résultat escompté!
Mais ça si c'était pas une bonne piste!!
en fait en creusant il y avait une erreur de syntaxe dans une de mes méthodes utilisée par getFoldClass(),
un pg_nul_rows() au lieu de pg_num_rows() !!!
Encore merci j'aurais surement tourné en rond encore longtemps!!
Dsl d'avoir incriminé tbs!