Jump to content
  • 0

Liste Déroulante De Valeur Groupé


seb1395

Question

Bonjour à tous, je débute dans l'API PHP de Filemaker. J'arrive à me connecter à la base et à afficher des données suivant un ID.

Je voudrais créer un formulaire de recherche. Pour être plus claire, voici un exemple.

Ma base est la suivante

Id Ville Pays

1 Paris France

2 Rennes France

3 Madrid Espagne

4 Barcelone Espagne

5 Rome Italie

6 Milan Italie

7 Turin Italie

Je souhaiterai un menu déroulant (en faite récupérer les données groupés) pour affiche ceci:

France

Espagne

Italie

Avez-vous une idée, je connais pas très la programmation Orienté Objet ?

Merci d'avance!

Link to post
Share on other sites

24 answers to this question

Recommended Posts

  • 0

Il faut utiliser getValueList(). La documentation de l'API est accessible en ligne à http://serveur:16000/docs/PHP%20API%20Documentation/index.html

getValueList (line 251) Returns the list of choices from the value list associated with this field.

If this field is not associated with a value list, this method returns NULL.

  • return: Value list array.
array getValueList ([integer $recid = null])
  • integer $recid: Record from which to display the value list.
Link to post
Share on other sites
  • 0

Bonjour et merci pour votre réponse

Je fais cela, mais ça ne fonctionne pas :S

require_once ('FileMaker.php');$fm = new FileMaker('database', 'http://server', 'user', 'psw');$layout=$fm->getLayout("mylayout"); if (FileMaker::isError($layout))    {        echo "Layout Error : ". $layout->getMessage()."\n";        } $list_control=$layout->getValueList("Country");    if (FileMaker::isError($list_control))    {        echo "List Control Error : ". $list_control->getMessage()."\n";        }

Ma page entière :

<?phprequire_once 'FileMaker.php';$fm = new FileMaker('database', 'http://server', 'user', 'psw');?><?php$layout =& $fm->getLayout('mylayout');$typevalues = $layout->getValueList('Country');if (FileMaker::isError($result)) {    echo "Error: " . $result->getMessage() . "\n";    exit;}?><select id="country" name="country" size="1"><option value=""></option><?php foreach($typevalues as $value){ ?><option value="<?php echo $value; ?>"><?php echo $value; ?></option><?php } ?></select>
Link to post
Share on other sites
  • 0
$fm = new FileMaker('database', 'http://server', 'user', 'psw');$layout =& $fm->getLayout('mylayout');$typevalues = $layout->getValueList('Country');

Le problème ne vient pas forcément du code PHP.

Avez vous vérifié que :

"user" a les droits pour :

- accéder au modèle "mylayout"

- accéder à la liste de valeurs "Country"

- accéder aux données sur lesquelles est basée la liste de valeur (seulement si la liste de valeur est basée sur une rubrique)

et que le modèle "mylayout" a bien une rubrique sur laquelle est plaçée la liste de valeur "Country" ?

Link to post
Share on other sites
  • 0

Bonsoir et merci.

Alors, l'user à un accès intégral à la base.

Puis pour le layout, je l'utilise pour une requete.

Par exemple : Recherche l'ID 3 et affiche-en le country. Cela fonctionne.

Donc country fait bien partie de mylayout je pense.

Link to post
Share on other sites
  • 0

Bon autre soucis liée à cela (pas la peine de recréer un topic), les valeurs avec accent s'affichent mal.

Par exemple :

vendu => vendu

achat => achat

livré => livrlivré

Voilà ce que je récupère. Avez-vous déjà eu à faire à cela?

Merci

Link to post
Share on other sites
  • 0

Un peu plus de détail, pliiiiiiize.

Quel est le contenu de la rubrique : "livré" ou "livrlivré" ? Ca s'affiche mal où, dans quel contexte ? C'est la liste de valeur qui n'est pas bonne ? La recherche qui ne retourne pas ce qui est attendu ? Il y a quoi dans le source de l'HTML ?

Link to post
Share on other sites
  • 0

le contenu de la rubrique est livré. Il me retourne livrlivré.

Pour tout les mots qui ont un accent, il l'écrit, plante et le réécrit d'où livr 'plantage' puis livré ce qui nous donne livrelivré.

Le code HTML indique la même chose. J'affiche dans un select un foreach contenant des options. Si la valeur n'a pas d'accent, elle s'affiche correctement dans le même foreach.

:S Très bizarre!

code HTML

<select class="form_other" name="q5_Situation" id="q5" >  <option value="nada"></option> <option value="livrlivré">livrlivré</option> <option value="achat">achat</option> <option value="vente">vente</option> 

code php

<select class="form_other" name="q5_Situation" id="q5" >  <option value="nada"></option> <?php foreach($situation as $value){if($value!=""){ // suppression de la ligne vide ?><option value="<?php echo $value; ?>"><?php echo tronq($value, 0, 60, '', '…'); ?></option><?php } } ?></select> 
Link to post
Share on other sites
  • 0

$situation représente une autre liste de valeurs FileMaker ?

Si oui, avez vous essayé de faire ceci pour voir si la sortie FileMaker est bien en cause :

var_dump( $layout->getValueList('Situation') );

C'est un cas assez étrange, je ne pense pas que celà provienne de l'encodage,

mais avez vous vérifié tout de même que l'encodage de sortie FileMaker soit le même celui déclaré dans le HTML.

En sachant que par défaut, la sortie FileMaker est en UTF-8.

Autre piste, le contenu de cette liste de valeurs a-t-il été saisi directement dans FileMaker ou est-ce un copier-coller de Word par exemple ?

Link to post
Share on other sites
  • 0

Voici ce que retourne le var_dump

 [0]=> string(6) "LivrLivré" [1]=> string(4) "Achat" [2]=> string(6) "Vente" [3]=> string(4) "Retour" [4]=> string(7) "Chez le client" [5]=> string(6) "Chez lChezl'avenant" }

Je me suis aperçu que l'apostrophe posait aussi problème...

$situation représente qu'une seule liste.

Comment vérifier l'encodage de sortie de FM? Mon HTML est en UTF-8

Pour le contenu de cette liste, c'est le même problème pour une liste saisi, que pour une liste liée à une table...

Je craque!! Merci de votre aide!

Link to post
Share on other sites
  • 0

Pour l'encodage de la sortie FileMaker, si vous ne l'avez pas spécifié via la fonction "setProperty()",

c'est la valeur "charset" du fichier de configuration de l'api FileMaker qui est prise en compte, fichier situé par défaut ici :

FileMaker Server/Web Publishing/publishing-engine/php/lib/php/FileMaker/conf/filemaker-api.php

La valeur "charset" devrait être à utf-8 et il ne faut pas la modifier à cet endroit.

Si ce n'est pas le cas, il faut utiliser quelque chose comme ça dans votre code :

$fm = new FileMaker(...);$fm->setProperty("charset","utf-8")

Avez vous le même problème avec autre chose qu'une liste de valeur (valeurs de simples rubriques, liste des modèles, ...)

ou est-ce spécifique aux listes de valeurs ?

Link to post
Share on other sites
  • 0

Avez vous essayé d'isoler le problème ou de le reproduire séparément dans une nouvelle base ?

Essayez de faire un nouveau jeu de test en créant une nouvelle base FileMaker vide et en ne mettant que le minimum pour obtenir une liste de valeurs en sortie via PHP sans rien recopier de votre base actuelle.

Par ailleurs, quelle version de FileMaker Server utilisez vous ? votre profil indique la 8 ...

Et pourriez vous nous indiquer les valeurs affichées lorsque vous faites ceci dans un simple fichier PHP :

require "FileMaker.php";var_dump(FileMaker::getAPIVersion(), FileMaker::getMinServerVersion() );
Link to post
Share on other sites
  • 0

Non, je n'ai pas eu le temps. Pensez-vous que cela changerai quelquechose? A-t-on la main sur l'encodage de FMS?

Avez vous essayé de reproduire le problème dans un fichier vierge tel que je vous l'indiquais dans mon post précédent ?

Link to post
Share on other sites
  • 0

Non, je n'ai pas eu le temps. Pensez-vous que cela changerai quelquechose? A-t-on la main sur l'encodage de FMS?

C'est simplement une méthodologie pour parvenir à comprendre l'origine du problème.

D'après les informations fournies, le problème ne paraît pas venir du code PHP, c'est donc probablement un problème avec votre fichier.

Donc l'idée est de tout reprendre à zéro pour mettre en lumière le problème de manière isolée :

- fichier FileMaker avec le minimum pour obtenir une liste de valeurs (privilèges, 1 modèle + 1 rubrique + 1 liste de valeurs avec 2 ou 3 valeurs de test)

- le code PHP avec le strict nécessaire pour afficher cette liste avec un var_dump()

Si le problème se produit toujours, pourriez vous nous mettre à disposition le fichier PHP et le fichier FileMaker de ce jeu de test.

A-t-on la main sur l'encodage de FMS?

A proprement parler non, mais en pratique l'api PHP de FileMaker peut se charger d'une conversion d'encodage (avec la fonction SetProperty déjà sitée).

Mais à priori, d'après les informations fournies, ce n'est pas la bonne piste si non le problème se produirait pour toute donnée sortante de FileMaker.

Link to post
Share on other sites
  • 0

Bonjour,

Il semble que la fonction getValueList soit devenue obsolète avec FMS10. Voici ce que j'ai glané sur le site de FileMaker à l'url http://fm.lithium.com/fm/board/message?board.id=aut&message.id=4830#M4830

"The function has officially been "deprecated" in FMS10 -- and replaced with "getValueListTwoFields" -- but the ampersand is a case when the original function in fact _breaks_ when hosted in FMS10. Changing to the new function fixes the problem."

Visiblement, le problème vient de là, et non pas du fichier fp7 ! Il n'y a bien sûr pas que l'ampersand (&) qui provoque ce problème, mais comme les anglophones utilisent peu les caractères accentués, il a fallu attendre que quelqu'un utilise le & dans une liste pour faire remonter le bug.

J'ai modifié le nom de la fonction de getValueList en getValueListTwoFields dans les scripts qui l'appelaient, et tout semble rentré dans l'ordre.

Bonne année !

Philippe

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...