Categories > TinyButStrong general (FR) >

problèm d'utilisation de merge block( n'arrive qu'à éfféctué q'une seule lecture)

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

problèm d'utilisation de merge block( n'arrive qu'à éfféctué q'une seule lecture)

encore une petite, question, actuellement tout vas bien, mais, car il y a toujours un mais. J'affiche une liste d'enregistremnet avec pour chacun une liste déroulante(créé dynamiquement en mergant le resultat d'une requète), le problèm c que cela ne fonctionne que sur le premier enregistrement, le deuxièm enregistrement ne sera pas affiché.

Je ne sais pas si mon explication est claire, mais en gros, j'ai l'impression que lorsque je merge un resultat de requète, il ne peut étre parcouru qu'une fois. Et cela m'embéte plus que baucoup pour le moment, éspérant pouvoir continuer mon site, j'épére que vous pourrer m'aider, n'hésité pas à me poser des question?


Merci....
By: Skrol29
Date: 2005-03-11
Time: 01:31

Re: problèm d'utilisation de merge block( n'arrive qu'à éfféctué q'une seule lecture)

Salut Nikcy,

Je crois que je vois ce qu'il se passe.
Tu as probablement crée plusieurs blocs du même nom pour remplire chacune de tes listes déroulantes. Peut être même que ces listes déroulantes ont été dupliquées par un MergeBlock().
Hors, si il a y plusieurs blocs du même nom, alors TBS supprime tout ce qu'il y entre ces blocs. (en fait, TBS considère que ceux sont des sections d'un même bloc, elles seront utilisée pour l'affichage alternatif.)

Si tu as d'abord fusionné tes enreg puis la liste déroulante de tes enreg , alors je te conseille de faire l'inverse : fusionne d'abord la liste déroulante de l'enreg de base , puis fusionne les enreg.
Si tu ne peux pas le faire dans ce sens car les liste déroulantes sont différentes pour chaque enreg, alors utilises des sous-blocs (voir la page d'exemple).

Si tout cela ne t'a pas aidé, c'est que je suis peut être à côté de la plaque. Envoie un bout de ton template et un bout de ton PHP pour qu'on voit de quoi il en tourne.


By: nicky
Date: 2005-03-11
Time: 09:10

Re: problèm d'utilisation de merge block( n'arrive qu'à éfféctué q'une seule lecture)

enfaite j'ai l'impression réside dans le problèm, que je ne peu pas parcourir plus d'une fois une resultat de requète

que cela soit avec TBS ou tout simplement comme voici.
while($range=mysql_fetch_array($r_cmd)){
}

Mais pourikoi  et comment faire
By: Skrol29
Date: 2005-03-11
Time: 09:50

Re: problèm d'utilisation de merge block( n'arrive qu'à éfféctué q'une seule lecture)

Quand tu ouvre une requête avec mysql_query() tu ne peut lire les enregistrement qu'une seule fois et vers l'avant. Quand tu arrive au bout des enreg, n'oublie pas de libérer le RecordSet avec mysql_free_result().

Si tu veux éviter de lancer deux fois une requête pour lire les données, il te suffit de les placer dans un tableau.
By: nicky
Date: 2005-03-11
Time: 11:30

Re: problèm d'utilisation de merge block( n'arrive qu'à éfféctué q'une seule lecture)

donc pour le moteur de template(tbs), on ne peux donc faire qu'un seul passage, on ne peux lister un jeux d'enregistrement qu'une seul fois, sinon il faut faire un tableau. Dans tout les cas merci pour l'info, je n'était pas au courant pour mysql_free_result();

Mais si tu as une solution pour le moteur de template, j'aimerai bien la connaitre

Merci encore
By: Skrol29
Date: 2005-03-11
Time: 11:41

Re: problèm d'utilisation de merge block( n'arrive qu'à éfféctué q'une seule lecture)

TBS est capable de faire plusieurs blocs avec une même requête.
Exemple :
$TBS->MergeBlock('b1,b2,b3','mysql','SELECT * FROM MaTable');

Cette instruction permet de fusionner les trois blocs b1, b2 et b3 avec la même requête. La requête n'est exécutée qu'une fois, et c'est TBS qui se charge de sauvergarder les enreg dans un tableau pour les blocs suivant.
En plus c'est optimisé : la sauvegarde des enreg n'est faite qui s'il y a plusieurs blocs à fusionner.
By: nicky
Date: 2005-03-11
Time: 13:55

Re: problèm d'utilisation de merge block( n'arrive qu'à éfféctué q'une seule lecture)

interessant à savoir,  ce que tu me dis, c claire. Mais le problèm pour mon cas,  c que du coté du templéte, j'imbrique 2 boucles.

Je liste tout les enregistrement d'une requéte, et j'affiche pour chacun d'eux, une liste déroulante  qui est issu d'un jeux d'enregistrement d'une autre requète, je sais pas si tu vois un peu près ce que j'essai de faire
By: nicky
Date: 2005-03-12
Time: 14:46

Re: problèm d'utilisation de merge block( n'arrive qu'à éfféctué q'une seule lecture)

bon derniere question sur ce problèm. y a t'il une solution pour avec le moteur de template pour mon problèm
Je liste tout les enregistrement d'une requéte, et j'affiche pour chacun d'eux, une liste déroulante  qui est issu d'un jeux d'enregistrement d'une autre requète, je sais pas si tu vois un peu près ce que j'essai de faire
Ou sinon il y a t'il une fonction ou solution simple sans boucler sur tout les enregistrement pour créer un tableau a partir d'un resultat de requete SQl.

Et promis, aprés ca devrai aller, merci d'avance
By: Skrol29
Date: 2005-03-12
Time: 16:20

Re: problèm d'utilisation de merge block( n'arrive qu'à éfféctué q'une seule lecture)

Salut,

Oui, les sous-blocs sont fait exactement pour ça.
Jette un oeil sur l'exemple en ligne de sous-bloc.
C'est la même chose sauf que au lieu de tableau gris, tu veux une liste, et au lieu d'un tableau Php, tu as des données MySQL.
Mais tout se passe de la même façon : tes données sont fusionnées en 2 instruction. Un premier MergeBlock() pour les enregistrements principaux, et un second MergeBlock() pour les sous-blocs avec requête dynamique.