Forums Développement Multimédia

Aller au contenu

Connexion à une base de données avec Silex

CMS Silex

27 réponses à ce sujet

#1 Żabojad

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 114 messages

Posté 12 December 2009 - 20:25 PM

Bonjour,

Je me retrouve bel et bien coincé à nouveau sur une nouvelle problématique : connexion à une base de données.

J'ai compris dans la doc que pour se connecter à une base de données à partir d'un site Silex, il faut utiliser les composants oof.

Je les vois bien apparaître dans la boite library, par exemple "DatabaseConnector.cmp.swf" qui a un nom intéressant par rapport a ma problématique mais je ne vois pas comment l'utiliser.

J'ai vu qu'il référence dans l'une de ses propriétés (gatewayUrl) le fichier php "silex/cgi/gateway.php".

J'ai l'impression qu'il y a du web service dedans donc comment ça marche? On implémente un web service qui ira piocher dans la base et qu'on appellera via un composant DatabaseConnector.cmp.swf ?

Je suis peut-être passe a coté mais y a-t-il un tutorial qui explique comment faire?

Question Secondaire: ma problématique est de récupérer des images stoquées dans une base et de les afficher dans mon site Silex. Est-ce possible ?

Merci d'avance pour votre aide.

#2 _lex

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1016 messages

Posté 13 December 2009 - 21:40 PM

bonjour

pour le databaseconnector, il permet de se connecter à un webservice et de transmettre les donnees à un selector. le selector permet de trier ces donnees et de les afficher dans une liste, sous une certaine forme (thumbs, texte avec des accesseurs pour afficher et mettre en forme certains champs de la base de données...)

le webservice auquel se connecte le databaseconnector doit avoir une certaine structure mais doit être écrit par toi en parti. pour commencer télécharge les composants oof sur la plateforme d'échange silex (dans ton manager, section "téléchargement") et part du script cgi/services/form_web_service.php pour commencer. il te faut écrire toi meme au moins la methode "getRecords" qui est appelée au chargement du connector.

dans le selector qui est relié à ton connector il te faut indiquer le nom du service que tu as ecrit, dans le parametre "source"

et par exemple, si ta methode getRecords retourne un tableau d'objets comme celui-ci :
Code: Tout sélectionner
[{title:test1,description:aaaaa},{title:test2,description:aaaaa},{title:test3,description:aaaaa},{title:test4,description:aaaaa}]

alors dans le parametre "cell format" de ton selector tu peux mettre queleque chose comme :
Code: Tout sélectionner
<b><<title>></b><br /><<description>>


et il faut lier une richtextlist à ce selector pour avoir une liste des titres suivi de la description de chaque enregistrement

Question Secondaire: ma problématique est de récupérer des images stoquées dans une base et de les afficher dans mon site Silex. Est-ce possible ?

tu peux faire un script php qui extrait une image de la base de donnée et retourne l'image jpg (avec le bon mime type)
dans ce cas tu peux poser une image sur la scene et dans sa propriété "url" tu mets l'adresse de ton script php
par exemple le code ci dessous ferait exactement ce dont je parle :
Code: Tout sélectionner
<?php
mysql_connect("localhost","wellho","xxxxxxx");
mysql_select_db("wellho");
$image = stripslashes($_REQUEST[imname]);
$rs = mysql_query("select * from im_library where filename=\"".
addslashes($image).".jpg\"");
$row = mysql_fetch_assoc($rs);
$imagebytes = $row[imgdata];
header("Content-type: image/jpeg");
print $imagebytes;
?>

code tiré de cet article

#3 Żabojad

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 114 messages

Posté 15 December 2009 - 16:36 PM

Bonjour Lexa,

Merci encore pour cette réponse de qualité.

Mais il me reste encore questions :D.

Tout d'abord, voici les étapes que j'ai suivies :

1 - J'ai téléchargé les OOF 1.2 pour Silex (version compatible avec Silex 1.53 ?),

2 - J'ai copié dans mon site Silex les fichiers d'oof suivants qui semblaient nécessaires :

cgi/services/form_web_service.php
cgi/services/form_web_service.methodTable.php
cgi/includes/user_content_manager.php
cgi/includes/crud.php
cgi/includes/oof_security.php
cgi/includes/oof_db_connection.php
cgi/includes/oof_db_config.php
cgi/includes/OofSecurity.ini

3 - J'ai éditer le fichier cgi/includes/oof_db_config.php de façon à ce qu'il contienne les informations nécessaires pour se connecter à ma base (nom de la base, utilisateur, mot de passe, addresse).

4 - J'ai implémenté directement dans cgi/services/form_web_service.php (c'est correct ça, ou faut-il le faire dans une classe à part?) la fonction getRecords() suivante :

Code: Tout sélectionner
   /**getRecords (custom method)
   *
   * @returns Array
   */
    function getRecords() {
   
      $form = "dossiers";
      $fields =  array("dos_id", "dos_nom", "dos_desc");
      $whereClause = null;
      $orderBy = null;
      $count = null;
      $offset = null;
      
      return getRecords($form, $fields, $whereClause, $orderBy, $count, $offset);
   }


A noter que form_web_service.php contenait déjà :

Code: Tout sélectionner
    /**getRecords
    * @access remote
    * @param form(String)
    * @param fields(Array)
    * @param whereClause(String)
    * @param orderBy(String)
    * @param count(Number)
    * @param offset(Number)
    * @returns Array
    */
    function getRecords($form, $fields, $whereClause, $orderBy, $count, $offset){
      $userContentManager = new user_content_manager();
      return $userContentManager->getRecords($form, $fields, $whereClause, $orderBy, $count, $offset);   
 
    }


5 - Côté Silex, J'ai ajouté un DatabaseConnector.cmp.swf ayant les propriétés suivantes :

GatewayUrl: http://127.0.0.1:80/silex/cgi/gateway.php (à changer?)
serviceName: form_web_service
name: DBConector

6 - Puis j'ai ajouté un DataSelector.cmp.swf avec les propriétés suivantes :

connector name: DBConector
source: form_web_service
name: DataSelector
cell content: <b><<dos_id>></b><br /><<dos_nom>><br /><<dos_desc>>

7 - Enfin, j'ai ajouté un RichTextList.cmp.swf avec les propriétés suivantes :

data: DataSelector

Évidemment à ce stade rien ne se passe quand je rafraîchis ma page silex. Mais pourrais-tu me dire ce qu'il faut que je change pour que ça fonctionne (pour le moment, j'aimerais déjà simplement afficher le résultat de ma requête SQL)?

Merci d'avance.

#4 ariels

    Ceinture Marron

  • Silex Lab
  • PipPipPipPipPipPip
  • 137 messages

Posté 15 December 2009 - 17:51 PM

Bonjour,
4 - J'ai implémenté directement dans cgi/services/form_web_service.php (c'est correct ça, ou faut-il le faire dans une classe à part?) la fonction getRecords() suivante :
Les 2 sont valables, je conseille de faire au plus simple :-)

5 - Côté Silex, J'ai ajouté un DatabaseConnector.cmp.swf ayant les propriétés suivantes :

GatewayUrl: http://127.0.0.1:80/silex/cgi/gateway.php (à changer?)
serviceName: form_web_service
name: DBConector

Sauf cas exceptionnel la gatewayurl n'a pas à être changé, elle est générée par silex

Sinon:
Je te conseille d'installer ceci:
5 - Côté Silex, J'ai ajouté un DatabaseConnector.cmp.swf ayant les propriétés suivantes :
http://wp-manager.silex-ria.org/?p=375

Avec ça tu pourras tester tes services. Une fois que le côté PHP fera ce qu'il faut, tu pourras tester avec le DatabaseConnector etc.
Un autre outil qui te rendra peut-être service si t'es en galère:
http://www.charlesproxy.com/

Tiens nous au courant de tes avancées, et bon courage!
Ariel

#5 Żabojad

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 114 messages

Posté 15 December 2009 - 19:20 PM

Bonjour Ariel,

Merci pour ces deux outils, ils me donnent en effet beaucoup plus de visibilité.

J'ai pu debuggé mon web service avec le web services browser. Il fonctionne désormais correctement et renvoie bien les bonnes valeurs.

Mon problème se situe maintenant sur l'interface Silex uniquement : Je ne parviens pas à faire afficher le résultat de ma requête avec le composant RichTextList.cmp.swf.

Je pense que mon DatabaseConnector fonctionne correctement car dans "Charles", je vois que la dernière requête envoyée de ma page est :

http://127.0.0.1/sil...gi/gateway.php? ... dasi5btcs7

et la response contient bien le résultat de ma requête SQL :

Results
[0] Object
dos_id String 1
dos_nom String Kielce
dos_desc String Halles de Kielce

Si je comprends bien, le DatabaseConnector contient le tableau de résultat complet de notre requête et le DataSelector sert à parcourir ce tableau à partir des composants d'affichage (RichTextList par exemple), c'est cela?

Pourrais-tu m'indiquer s'il te plaît quelles propriétés donner aux composants oof sur ma page silex pour que je puisse afficher le résultat de ma requête (sous forme d'une liste par exemple)?

Pour l'instant, ma page silex contient les composants suivants :

1 - un DatabaseConnector.cmp.swf ayant les propriétés suivantes : (lui, je pense qu'il fonctionne au vu de la dernière response interceptée par Charles)

-> ServiceName: zks_web_service (j'ai finalement implémenter mon ws dans une classe qui hérite de form_web_service)
-> name: DBConnector

2 - un DataSelector.cmp.swf avec les propriétés suivantes : (là déjà, je suis moins sûr de moi)

-> connector name: DBConnector
-> source: zks_web_service
-> name: DataSelector
-> cell content: <<dos_id>>, <<dos_nom>>, <<dos_desc>>

3 - Enfin, j'ai ajouté un RichTextList.cmp.swf avec les propriétés suivantes : (là je vois pas du tout comment fonctionne ce composant)

-> data: DataSelector


Si j'arrive à faire ça, je devrais déjà mieux comprendre comment marchent ces composants et comment les configurer.

Merci d'avance

?abojad

#6 Żabojad

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 114 messages

Posté 15 December 2009 - 19:59 PM

Ha, je viens d'afficher le résultat de ma requête avec mon RichTextList.cmp.swf avec les propriétés suivantes :

1 - DatabaseConnector :
-> ServiceName: zks_web_service
-> name: DBConnector

2 - un DataSelector.cmp.swf avec les propriétés suivantes : (là déjà, je suis moins sûr de moi)

-> connector name: DBConnector
-> source: zks_web_service
-> name: DataSelector
-> cell content: <<dos_id>>, <<dos_nom>>, <<dos_desc>>
-> list: liste

3 - Enfin, j'ai ajouté un RichTextList.cmp.swf avec les propriétés suivantes : (là je vois pas du tout comment fonctionne ce composant)

-> name: liste
-> data: DataSelector


Ce qui me fait cruellement défaut, c'est une description des différents composants oof et de leurs propriétés. Je suis peut-être passé à côté mais est-ce qu'il y a ça quelque part pour la version 1.2 des composants oof ?

Merci à vous.

?abojad

#7 ariels

    Ceinture Marron

  • Silex Lab
  • PipPipPipPipPipPip
  • 137 messages

Posté 16 December 2009 - 09:48 AM

Salut,
On n'a pas grand chose pour la doc à part les tutos qui se font petits à petits, par contre je peux te proposer la doc générée à partir du code. On a essayé de mettre des commentaires dedans qui expliquent la chose, et ça te permettrait de voir ce à quoi correspondent les différents paramètres. Elle est dans le devkit, mais je t'avoue que j'ai oublié de la régénérer pour la 1.2, donc la voici à jour.
Je te préviens que c'est en Anglais et un peu hostile, mais comme tu as une culture dev tu devrais t'en sortir. Si tu galères sur un point, dis le ici et je le rajouterai dans le code(et donc dans la doc).
Tu y trouveras le dataSelector dans dataUsers, et RichTextList dans lists. RichTextList dérive de CustomList, donc beaucoup de choses à propos des listes y sont décrites
Si tu veux en savoir plus sur les listes, on a essayé d'être compatibles autant que possible avec les listes mx, donc la doc mx peut t'intéresser si t'as envie de faire tes propres listes
http://livedocs.adob...m/flash/9.0/mai ... 03169.html

Maintenant tes autres questions:

Le montage des composants s'explique de la manière suivante:
le composant central c'est le dataselector. Selon la façon que tu veux interagir avec des données, tu lui donnes un connecteur différent: Excel, XML, DataBase. Une fois qu'il a ses données, il faut bien les afficher et proposer à l'utilisateur d'interagir avec. C'est pourquoi tu lui donnes une liste.
Ensuite, sur les paramètres:
DataSelector -> source: c'est un paramètre passé au service, qui en gros correspond dans le form_web_service au nom de la table. Si tu as fait un webservice custom, tu en fais un peu ce que tu veux

RichTextList:
le seul paramètre auquel tu as vraiment besoin de toucher pour afficher tes données c'est "name", pour que le DataSelector puisse le trouver. "data", c'est quand tu veux utiliser la liste seule et lui passer des datas en dur. Le reste c'est surtout de la présentation.

Ariel

#8 Żabojad

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 114 messages

Posté 16 December 2009 - 12:56 PM

Super, merci pour cette doc Ariel, c'est exactement ce qu'il me manquait.

J'hésiterai pas à venir vous déranger à nouveau si je me retrouve à nouveau bloqué :D.

#9 Żabojad

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 114 messages

Posté 16 December 2009 - 14:20 PM

Ariel, j'ai une dernière question sur les composants et leurs propriétés.

Sous Silex, la boîte de propriétés n'affiche pas les mêmes labels de propriétés que la doc technique pour les composants oof.

Je suppose qu'il y a quelque part un fichier contenant la correspondance entre les labels affichés dans la boîte de propriétés et le nom réel des propriétés dans le code des composants. Si c'est le cas, où se trouve ce fichier ?

Encore merci.

?abojad.

#10 _lex

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1016 messages

Posté 16 December 2009 - 15:40 PM

salut

bonne question Zabojad! pour avoir la correspondance entre les noms dans le code (et donc dans la doc générée avec NaturalDoc) et dans les paramètres de la boite à outils silex, regarde les fichiers de classe dans le trunk de Oof (utilise svn pour l'avoir), dans le répertoire silex_components

Par exemple, il y a un fichier silex_components/RichTextListCmp.as qui fait la correspondance pour la liste

a+,
lex.

PS : ariel, peux tu mettre a jour la doc Oof en ligne?

#11 Żabojad

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 114 messages

Posté 16 December 2009 - 18:20 PM

Bonjour Lexa, et merci pour cette réponse.

Je suis maintenant bloqué sur un problème tout simple. La solution doit être devant mon nez mais je ne la vois pas.

J'ai mon DatabaseConnector qui fonctionne correctement et qui me renvoie les champs dos_id, dos_nom et dos_desc des lignes de la table "dossiers".

J'ai mon DataSelector qui me paraît correctement configuré (pourtant le problème doit venir de lui) avec les propriétés suivantes :
- nom : DataSelector
- connector name : DBConnector (c'est bien le nom de mon DatabaseConnector)
- commands to execute on click : dossierIo.value=((<b><<dos_desc>></b>))
- list name : List_dossiers
- cell content : <b><<dos_nom>></b>
- deeplinking format : <<dos_nom>>

J'ai ma RichTextList configuré simplement avec la propriété name : List_dossiers

Enfin, j'ai un SingleLineIo.cmp.swf avec les propriétés suivantes :
- name : dossierIo
- urlPrefix : (vide)
- loadFromUrl : no
- useHtml : yes


Ce qui se passe, c'est que ma liste s'affiche correctement : J'ai bien mes deux éléments (ma table ne contient deux lignes) mais lorsque je clique sur un des deux choix de la liste, rien ne se passe. Mon SingleLineIo n'affiche rien, et le titre de la page ne change pas (malgré la propriété deeplinking).

Qu'est-ce que j'ai oublié ?

Question subsidiaire : à quoi servent les propriétés "id field" et "icon field" du selector ?

"Icon field" a la même description que "cell format" dans la doc (pourtant ils n'ont pas le même comportement):
la doc a écrit:cellFormat description This is an html representation of a cell. Each cell use this string as a content after replacing accessors by their values.
iconFieldName This is an html representation of a cell. Each cell use this string as a content after replacing accessors by their values.


Encore merci pour votre aide.

?abojad

#12 _lex

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1016 messages

Posté 16 December 2009 - 19:17 PM

ah, voila des questions techniques!
ca fait 2 ans qu'on les attends ;-)

1/ le singleLineIO n'affiche rien quand tu click dans la liste
. dans "commands to execute on click", essaie de mettre un truc genre
Code: Tout sélectionner
alert:test du click

. si ca affiche un truc, alors essaie
Code: Tout sélectionner
alert:test ((<b><<dos_desc>></b>))


2/ rien ne se passe quand tu click dans la liste
Si tu utilises "deeplinking format", c'est que tu veux ouvrir une page, donc ton selecteur doit être une icone. dans l'onglet "navig" des propriétés du sélecteur, coche "icone?" et dans "nom de la page", mets le nom d'une page qui sera ouverte pour chacun des éléments de la liste. elle contiendra probablement des accesseurs du style "<<monSelector.selectedItem.blabla>>"

3/ icon field n'est utile que quand tu utilises une thumb list, pout lui indiquer ou trouver le thumb (la miniature, l'image). Alors que cell content, c'est seulement pour les rich text list

#13 ariels

    Ceinture Marron

  • Silex Lab
  • PipPipPipPipPipPip
  • 137 messages

Posté 17 December 2009 - 09:31 AM

je confirme, je crois qu'on n'est jamais allé ausi loin sur forum :-)
pour la peine on va devoir écrire une doc...

#14 Żabojad

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 114 messages

Posté 17 December 2009 - 11:38 AM

Bonjour,

lexa a écrit:1/ le singleLineIO n'affiche rien quand tu click dans la liste
. dans "commands to execute on click", essaie de mettre un truc genre
Code: Tout sélectionner
alert:test du click



Je viens d'essayer mais il ne se passe toujours rien quand je clique.

D'où pourrait venir ce problème ?

Merci

?abojad

#15 ariels

    Ceinture Marron

  • Silex Lab
  • PipPipPipPipPipPip
  • 137 messages

Posté 18 December 2009 - 10:57 AM

Salut,
j'ai essayé le coup du alert, et ça ne marche pas(ouh, Lexa!!!). Du coup je suis perplexe, ce que tu as fait m'a l'air bien.
Par contre j'ai retrouvé qqchose qui peut t'aider:
Un exemple de livre d'or ultra dépouillé avec lequel tu pourras comparer ton site. C'est dans le svn de silex, mais c'est vrai qu'on ne le met pas en avant

Voici la table qui correspond. Pour tester, assure toi que ton Oof_db_config.php est bon, créé une table avec ce script :


--
-- Structure de la table `post`
--

CREATE TABLE IF NOT EXISTS `post` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`idOwner` int(11) NOT NULL,
`postTitle` varchar(500) NOT NULL,
`postText` longtext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

--
-- Contenu de la table `post`
--

INSERT INTO `post` (`id`, `idOwner`, `postTitle`, `postText`) VALUES
(1, 0, 'title post1', 'body post 1\r\nbody post 1\r\nbody post 1'),
(5, 0, 'titre post2 ', 'corps post2'),
(6, 0, 'title post2', 'body post2\r\nbody post2\r\nbody post2');


Du coup ça fait presque un tuto...
J'espère que ça va te permettre de trouver ce qui ne va pas dans ton site. Tiens nous au courant!

#16 ariels

    Ceinture Marron

  • Silex Lab
  • PipPipPipPipPipPip
  • 137 messages

Posté 18 December 2009 - 11:00 AM

j'ajouterai que le backoffice qui correspond existe aussi.
http://silex.svn.sou...orge.net/viewvc ... ackoffice/
Autant beaucoup des sites dans cet espace ne sont pas à jour, autant celui là marche toujours, j'ai essayé

#17 _lex

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1016 messages

Posté 18 December 2009 - 17:02 PM

Zabojad a écrit:Bonjour,

lexa a écrit:1/ le singleLineIO n'affiche rien quand tu click dans la liste
. dans "commands to execute on click", essaie de mettre un truc genre
Code: Tout sélectionner
alert:test du click



Je viens d'essayer mais il ne se passe toujours rien quand je clique.

D'où pourrait venir ce problème ?

Merci

?abojad

il ya donc un bug dans les composants oof? (bouh ariel)
peux tu me donner l adresse de ton exemple en ligne?
essaie avec une action sur le selecteur :
Code: Tout sélectionner
onRelease alert:test du click


#18 Żabojad

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 114 messages

Posté 18 December 2009 - 21:30 PM

Bonjour,

Merci pour vos réponses à tous les deux.

Je viens d'essayer ça :

lexa a écrit:essaie avec une action sur le selecteur :
Code: Tout sélectionner
onRelease alert:test du click



Et ça fonctionne.

Après j'ai essayé de changer la valeur de mon dossierIo en utilisant la fonction set décrite dans la doc

la doc a écrit:------------------------------------------------------------------------------------------------------------------
| set|
| Paramètres : Nom de la propriété à modifier
| valeurs : booléen, chiffre ou chaîne de caractère - valeur de la propriété
| (le chiffre peut utilisé+/- pour une valeur relative ou exacte)
| Exemples : set:_x,-15
| intro_mc.set:_height,+15
| _parent.set:_rotation,15
| premier_enfant_mc.objPage_mc.objPage_mc.set:_rotation,+15
| silex.set :fscom_support_bool_st.true
------------------------------------------------------------------------------------------------------------------


Comme ça :

Code: Tout sélectionner
dossierIo.set:_value,TEST


et comme ça :

Code: Tout sélectionner
_parent.dossierIo.set:_value,TEST


Mais ni l'un ni l'autre n'a fonctionné. Mais même si ça marchait, est-ce que l'on pourrait récupérer une valeur de ma requête (<<dos_nom>> par ex) dans un script action et l'assigner de cette façon à la valeur de dossierIo (mon SingleLineIo) ?

Je viens de tenter un déploiement rapide de mon ébauche de site sur mon serveur free mais il crache des erreurs 500 (la version de php doit pas être la bonne).

Éventuellement, tu peux jeter un oeil à mon site (pour le moment il contient trois pages) que j'ai attaché à ce message... Et une seule table dans la base de données :

Code: Tout sélectionner
CREATE TABLE IF NOT EXISTS `dossiers` (
  `dos_id` int(11) NOT NULL AUTO_INCREMENT,
  `dos_nom` varchar(50) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  `dos_desc` text CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  `dos_id_cat` int(11) NOT NULL,
  PRIMARY KEY (`dos_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=5 ;

--
-- Contenu de la table `dossiers`
--

INSERT INTO `dossiers` (`dos_id`, `dos_nom`, `dos_desc`, `dos_id_cat`) VALUES
(1, 'dossier 1', 'blablablabla 1', 1),
(2, 'dossier 2', 'blablablabla 2', 1),
(4, 'dossier 3', 'blablablabla 3', 1);


zks-szyndler.zip
zks-szyndler.zip


#19 _lex

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1016 messages

Posté 19 December 2009 - 13:47 PM

ok,
la commande serait plutot
dossierIo.value=TEST

je regarderai le site des que j'aurai 15 min
a+

#20 Żabojad

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 114 messages

Posté 19 December 2009 - 14:25 PM

lexa a écrit:ok,
la commande serait plutot
dossierIo.value=TEST

je regarderai le site des que j'aurai 15 min
a+


Super, merci Lexa. Pour accéder à la page contenant le connector, selector et singleLineIO, clique sur le lien "NAV" sur la gauche.

sinon, dossierIo.value=TEST fonctionne mais pas dossierIo.value=<<dos_nom>> ^^.

En attendant, je vais jeter un oeil au site exemple de livre d'or dont ariel a parlé.

Merci encore.

a+

?abojad

#21 Żabojad

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 114 messages

Posté 19 December 2009 - 14:36 PM

Ha j'ai oublié, pour que le site fonctionne, tu auras besoin également de copier le dossier attaché dans le dossier "media/components/" (il faut que tu ais media/components/zks-szyndler/intro.swf).

Le tout tournant sous Silex 1.53 of course.

a+

#22 _lex

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1016 messages

Posté 19 December 2009 - 15:25 PM

sinon, dossierIo.value=TEST fonctionne mais pas dossierIo.value=<<dos_nom>> ^^.

ah oui, la il faut utiliser
dossierIo.value=<<nomDuSelector.selectedItem.dos_nom>>


#23 _lex

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1016 messages

Posté 19 December 2009 - 16:33 PM

can you tell me if the parameter "get more data on click" is checked or not please?
and try to check it if it not checked

#24 Żabojad

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 114 messages

Posté 20 December 2009 - 12:28 PM

Salut Lexa,

lexa a écrit:
sinon, dossierIo.value=TEST fonctionne mais pas dossierIo.value=<<dos_nom>> ^^.

ah oui, la il faut utiliser
dossierIo.value=<<nomDuSelector.selectedItem.dos_nom>>


Oui en effet ça fonctionne. Ça me fera peut-être aussi office de workaround si j'arrive pas à régler ce problème...

lexa a écrit:can you tell me if the parameter "get more data on click" is checked or not please?
and try to check it if it not checked


It is checked :). J'ai essayé avec et sans mais ça n'a pas l'air de faire de différence.

Sinon j'ai essayé l'exemple de livre d'or qu'Ariel avait posté et lui, il fonctionne correctement sur la même plateforme silex... J'ai comparé les propriétés des éléments de mon site et de celui là et je n'ai relevé aucune différence significative... Étrange...

#25 Żabojad

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 114 messages

Posté 20 December 2009 - 14:21 PM

Je viens de trouver la cause du problème :

Il semble que le composant selector n'apprécie pas que l'on ait un champ id différent de "id" (codé en dur quelque part?).

En effet, j'ai renommé mon dos_id en id dans la base et dans la propriété "id field" de mon selector et maintenant ça fonctionne.

En jetant un oeil rapide dans le code, je pense que la cause du problème se situe à la ligne 44 de crud.php où le champs id est écrit en dur dans la requête :


           $query = "SELECT * FROM ".$form." WHERE id IN (".$idString.")";

Ça se confirme puisque si je remplace cette valeur en dur par "dos_id" et que je fais de même dans le champs id field de mon selector et dans ma base, ça fonctionne aussi...

#26 ariels

    Ceinture Marron

  • Silex Lab
  • PipPipPipPipPipPip
  • 137 messages

Posté 21 December 2009 - 10:22 AM

Salut,
effectivement, il faut que l'id soit id et pas autre chose. Bien vu! Sinon le dataselector ne s'en sort pas.
Ariel

#27 ariels

    Ceinture Marron

  • Silex Lab
  • PipPipPipPipPipPip
  • 137 messages

Posté 21 December 2009 - 10:23 AM

Ca me semble utile comme convention, mais est-ce que ça te choque? Si oui, et que tu as une idée pour améliorer, dis toujours
Ariel

#28 Żabojad

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 114 messages

Posté 21 December 2009 - 13:38 PM

Salut Ariel,

Just my 0.02$ mais je pense qu'il y a un problème de cohérence. On donne la possibilité dans la boîte de propriétés du selector de spécifier le nom de la PK de la table dans laquelle on va lire (qui est à mon avis la bonne chose à faire).

Dans ce cas, on devrait gérer cette propriété jusqu'au bout (ou alors ne pas la proposer du tout et écrire dans la doc que le champ PK de chaque table doit se nommer "id" ^^).

Dans l'état actuel de l'implémentation, ce champ semble être à moitié pris en compte : Si on donne un autre nom que "id" dans la boite de propriétés du selector mais que la PK de la table s'appelle vraiment id, ça ne marche pas non plus. Cette propriété est donc bien lue quelque part.

Du point de vue de l'implémentation, j'editerais le composant selector pour qu'il passe en paramètre le nom de l'id field à la méthode getIndividualRecords() du web service attaché, puis du point de vue de l'implémentation du web service les modifications seraient minimes : quasiment rien à changer à part remplacer la valeur en dur dans les requêtes par la valeur passé en paramètre.

a+

?abojad.



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