Forums Développement Multimédia

Aller au contenu

Selectors imbriqués

CMS Silex

2 réponses à ce sujet

#1 Żabojad

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 114 messages

Posté 21 December 2009 - 19:00 PM

Hello !

Nouveau sujet, nouvelle problématique : cette fois, ce sera "comment imbriquer 2 selectors ?" (ou n selectors en fait, pas de raison de s'arrêter à 2).

Le problème du selector tel qu'il est conçu à l'heure actuelle, c'est qu'il ne permet de lire que dans une seule table à la fois (si je me trompe, dites le moi). Ce comportement arrête d'être un problème à partir du moment où l'on réussi à imbriquer 2 selectors.

Dans mon cas, j'ai deux listes, une liste de dossiers et une liste d'images. Quand je clique sur un dossier, je veux que la liste d'image de ce dossier s'affiche. J'ai tenté de réaliser ça de cette façon :

-> Selector 1 :
- connector name: DBConnector
- source : dossiers
- commands to execute on click :
TXTIO_dossiers.value=<<dos_desc>>
SELECT_images.doClear
SELECT_images.getRecords
- list name : LIST_dossiers
- cell content : ((<b><<dos_nom>></b>))
- nom : SELECT_dossiers
(...)

-> Selector 2 :
- connector name: DBConnector
- source : images
- list name : LIST_images
- WHERE clause : img_id_dos=<<SELECT_dossiers.selectedItem.id>>
- nom : SELECT_images
(...)

-> ThumbList
- name : LIST_images
(...)


Le résultat que j'obtiens est presque bon à part deux problèmes :

1/ Lorsque je clique sur un dossier, la liste d'images se rafraichît bien mais bizarrement, la première miniature de la liste n'apparaît pas.

2/ Si un dossier a le malheur ne pas avoir d'images, la consommation CPU monte au max puis ça plante.

Est-ce que je devrais bien utiliser les méthodes doClear() et getRecords() du selector pour le raffraîchir ? Quelles sont les méthodes appelées par Silex lorsqu'il charge un selector (à priori je devrais utiliser les mêmes et dans le même ordre) ?

Merci d'avance.

?abojad

#2 _lex

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1016 messages

Posté 21 December 2009 - 22:46 PM

oulala, Zabojad enflame Oof!

. Tu ne devrais pas utiliser 2 connector? Ca me paraitrait plus sur...
. Bien vu le "doClear" je ne connaissaiss pas
. Pour le cas ou il n y a pas de résultat, ca ressemble à un bon vieux bug...


Je risque de te saouler mais j'aurais fais tout ca sans base de données en fait.. Il y a un script qui liste les repertoires et/ou les fichiers : rss_browse_folder. Ca s'utilise avec le RSSConnector. Tu peux voir sa page d'aide ici. Mais c'est probablement bcp moins efficace qu'une base de données au niveau de la charge serveur.

Bravo en tous cas tu es un explorateur!

#3 ariels

    Ceinture Marron

  • Silex Lab
  • PipPipPipPipPipPip
  • 137 messages

Posté 22 December 2009 - 09:55 AM

salut,
effectivement, le DataSelector est conçu pour interagir avec une seule table, mais comme tu as vu tu peux les imbriquer. J'ai déjà fait des montages comme ce que tu veux faire, donc normalement il n'y a pas de problème. Tu n'as pas besoin d'appeler doClear, c'est appelé au début de getRecords. Tu peux utiliser le même connector, ça ne devrait pas poser de problème, mais ça peut être une piste à explorer d'en utiliser 2 différents si ça plante toujours.
Les 2 points sont potentiellement des bugs. Si tu veux je peux y jeter un coup d'oeil. Pour ça, pourrais-tu mettre en ligne qqpart, et remplacer ton silex.swf par celui attaché?
Enfin, je rejoins Lexa, tu peux utiliser le script rss_browse_folder. J'irai même plus loin: Tu peux nourrir un premier DataSelector avec la liste de répertoires, et le deuxième avec la liste de fichiers dans le répertoire choisi au 1er.
Ariel



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP