Categories > TinyButStrong general (FR) >

extraction de donnée mysql pour traitement avant affichage

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: sylv20c
Date: 2005-02-11
Time: 17:01

extraction de donnée mysql pour traitement avant affichage

Bonjour, je suis un "newbie". Voici mon problème :

Dans un base Mysql, j'ai un champs qui contient le nom d'une page qui devra être chargée en tant qu'include dans mon template.
donc coté php je fais :

$TBS->MergeBloc('bloc1',$cnx_id,'SELECT monchamp from etc...);
$TBS->Show();

Dans le HTML si je fais
[bloc1.monchamp] il m'affiche bien le contenu trouvé (ici : toto.html)
Par contre, quand je fais
[onload:file=[bloc1.monchamp]] ça explose.
le message est : TinyButStrong Error (Parameter 'file'): Field [onload] : unable to read the file '[bloc1.monchamp]

J'imagine que c'est parce qu'il ne l'a pas encore fusionné qu'il ne peux pas l'afficher.

question subsidiaire: quelle est la méthode pour extraire une valeur d'un résultat de requete (la requete est dans mergeblock), et le placer dans une variable pour traitement avant de faire $TBS->Show();

Merci d'avance pour votre aide.
By: Skrol29
Date: 2005-02-11
Time: 17:22

Re: extraction de donnée mysql pour traitement avant affichage

Bonjour,

Effectivement, le champ [onload] est traité lors du charement du modèle principal. C'est à dire lors de l'appel à la fonction LoadTemplate(). A cet instant, ton bloc n'est pas encore fusionné.

Ce que tu peux faire, c'est d'utiliser [onshow] au lieu de [onload]. [onshow] est traité lors de l'appel à la fonction Show().
Une autre solution est de faire : [bloc1.monchamp;file=[val]]
[val] est un mot-clé de TBS. De cette manière, le fichier est inséré dès la fusion du champ. Plus besoin de [onload] ou [onshow].

Pour ta question subsidiaire, il te faut utiliser ton propre code Php. Lire une valeur placée dans une base de données pour la mettre dans une variable Php n'a rien à voir avec un template ou quoi que ce soit en Html. Donc TinyButStrong ne le fait pas. Moi perso pour mes apppli, je me suis développé des petites fonctions m_Sql_Eval(),  m_Sql_Execute(), m_Sql_Record(), ...
By: sylv20c
Date: 2005-02-11
Time: 17:42

Re: extraction de donnée mysql pour traitement avant affichage

merci pour cette explication, effectivement, cela fonctionne parfaitement.

Pour la question subsidiaire, dans ce cas, si je prends le problème dans l'autre sens, en effectuant par exemple
$resultat = mysql_query($requete,$cnx_id);
$row = mysql_fetch_array($resultat);

et en faisant dans mon mergeblock
$TBS->MergeBlock('bloc1',$row);

Je n'arrive pas à extraire ma donnée [bloc1.db_nom] du tableau
Array ([0] => toto [db_nom] => toto)

merci encore pour ta première réponse et d'avance pour la suivante :)
By: Skrol29
Date: 2005-02-11
Time: 17:54

Re: extraction de donnée mysql pour traitement avant affichage

C'est parce que $row est un tableau simple non imbriqué dans un tableau contenant. Pour avoir le résulat que tu attend, il faut faire :
$row=array($row);

TBS est capable de fusionner un tableau simple, mais alors les noms de colonnes du bloc sont 'key' et 'val' qui représetent la clé et la valeur pour chaque item du tableau.
By: sylv20c
Date: 2005-02-11
Time: 18:40

Re: extraction de donnée mysql pour traitement avant affichage

merci infiniment skrol29.