Categories > TinyButStrong general (FR) >

Liste déroulante trop lente

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Richard
Date: 2007-08-25
Time: 19:45

Liste déroulante trop lente

Bonjour
J'ai une page HTML dans laquelle j'affiche une liste déroulante générée à partir d'une requête MySql. La page ne contient pratiquement pas d'autres éléments à fusionner.

Code PHP
// Les auteurs
$sqlauteur = "SELECT idauteur, pseudo FROM auteur ORDER BY pseudo" ;
$TBS->MergeBlock('auteur', 'mysql', $sqlauteur) ;
(résultat : Il y a 99 auteurs).

Code HTML :
auteur<br>
    <select class="menuderoulant" name="idauteur" id="idauteur">
        <option value="">tous</option>
        <aut><option value="[auteur.idauteur;block=aut]">[auteur.pseudo]</option><option>[var.idauteur;selected]></option></aut>
    </select><br>
Sans cette liste déroulante la page s'affiche instantanément, mais avec cette liste, elle met 7 à 8 secondes.
Pour résoudre ce problème, je crée la liste dans une variable PHP et j'affiche cette variable, mais y-a-t'il une autre solution que celle que j'ai adoptée ?
(j'ai consulté le paragraphe 'The merge is too slow' dans le support).
By: Skrol29
Date: 2007-08-25
Time: 23:11

Re: Liste déroulante trop lente

Salut Richard,

Ht oui, je vois un gros souci dans ton bout de modèle : le champ [var.idauteur;selected] devrait être placé à l'extérieur du bloc fusionné.
Quand il est placé à l'intérieur, il est démultiplié autant de fois qu'il y a d'enregistrement dans la requête. Tu te retrouve donc à la fin avec une grande quantité de champ [var.idauteur;selected]. TBS va parcourir la liste un grand nombre de fois alors qu'une seule fois suffit pour la sélection d'item.

Si tu remplaces "block=aut" par "block=option" alors tout devrait rentrer dans l'ordre.


By: Richard
Date: 2007-08-27
Time: 09:32

Re: Liste déroulante trop lente

Bonjour
c'est ce que je fais habituellement.
Il faut que je retrouve pourquoi j'ai créé ce bloc 'aut'.
Merci Skrol29 pour la réponse;