Jump to content
  • 0
tomy

Développer L'ensemble Trouvé En Php

Question

Bonjour,

Je travaille présentement à publier une base de données en version PHP dans laquelle j'aimerais pouvoir permettre à l'utilisateur de modifier ses recherches pour ensuite restreindre ou développer son ensemble trouvé comme on le retrouve dans FileMaker. Je suis parvenu à rendre possible la fonction Restreindre l'ensemble trouvé en ajoutant des critères de recherche (AddCriterion). Je n'ai malheureusement pas été capable d'en faire autant avec Développer l'ensemble trouvé. En fait, j'y suis parvenu en changeant l'opérateur logique "and" pour "or". Toutefois, la nouvelle recherche doit se faire dans une rubrique différente. Ce que je cherche présentement à faire, c'est faire une telle recherche dans la même rubrique. Donc, je me demande s'il est possible de rechercher deux critères - avec l'opérateur logique "or" - dans une même rubrique ? Ou peut-être connaissez-vous une autre façon de faire ?

Merci à vous tous !!

Tomy

Share this post


Link to post
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Il faut comme dans FileMaker créer plusieurs requêtes de recherche. La commande de l'API PHP concernée s'appelle FileMaker_Command_CompoundFind et est décrite dans la doc à http://serveur:16000/docs/PHP%20API%20Documentation/index.html

Share this post


Link to post
Share on other sites
  • 0

Il faut comme dans FileMaker créer plusieurs requêtes de recherche. La commande de l'API PHP concernée s'appelle FileMaker_Command_CompoundFind et est décrite dans la doc à http://serveur:16000/docs/PHP%20API%20Documentation/index.html

Bonjour Monsieur Devriese,

Merci pour cette prompte réponse. Effectivement, ça fonctionne parfaitement ! Je remarque que le CompoundFind s'exécute avec l'opérateur logique "or". Est-il possible de faire une telle requête avec l'opérateur "and" ? Je cherche à faire Restreindre l'ensemble trouvé dans une même rubrique.

Encore merci !

Tomy

Share this post


Link to post
Share on other sites
  • 0

dans ce cas, une espace entre les deux termes suffit, même si les performances sont bien moindre qu'en FileMaker natif avec Restreindre.

Share this post


Link to post
Share on other sites
  • 0

dans ce cas, une espace entre les deux termes suffit, même si les performances sont bien moindre qu'en FileMaker natif avec Restreindre.

Et c'était aussi simple... Merci beaucoup messieurs ! Ça m'aide grandement.

Tomy

Share this post


Link to post
Share on other sites
  • 0

Et c'était aussi simple... Merci beaucoup messieurs ! Ça m'aide grandement.

Tomy

Une autre question afin de corser les choses. Si je procède d'abord à une recherche dont les résultats proviennent d'un "Développer l'ensemble trouvé" et que je veux "Restreindre l'ensemble trouvé" avec de nouveaux critères de recherche, comment dois-je procéder ? Et inversement, si je restreins d'abord et que je veux développer par la suite avec de nouveaux critères de recherche ?

Merci !

Share this post


Link to post
Share on other sites
  • 0

haha ! c'est là que ça se complique !

il faut bien voir que php ouvre une session à chaque connexion. Il n'y a donc, à la différence d'IWP, pas de possibilité d'utiliser Restreindre/Développer.

Ce que tu peux (dois ?) faire est de placer l'ID des enregistrements sur le modèle qui te donne le résultat de la première recherche, et d'utiliser la fonction citée par Olivier pour ajouter ces requêtes à ta nouvelle.

Share this post


Link to post
Share on other sites
  • 0

haha ! c'est là que ça se complique !

il faut bien voir que php ouvre une session à chaque connexion. Il n'y a donc, à la différence d'IWP, pas de possibilité d'utiliser Restreindre/Développer.

Ce que tu peux (dois ?) faire est de placer l'ID des enregistrements sur le modèle qui te donne le résultat de la première recherche, et d'utiliser la fonction citée par Olivier pour ajouter ces requêtes à ta nouvelle.

Qu'entends-tu par "placer l'ID des enregistrements sur le modèle" ?

Share this post


Link to post
Share on other sites
  • 0

je veux dire qu'en plus des champs "utiles", tu dois obtenir lors de ta première requête, tu dois obtenir les IDs (les tiens ou les IDs internes dans un champ), et les stocker en $_SESSION afin de pouvoir rechercher ces enregitrements à nouveau lors de ta deuxième requête.

Share this post


Link to post
Share on other sites
  • 0

Bonjour Fabrice,

J'ai mis en place cette procédure que tu as conseillé. Elle marche très bien. Cependant, la base de données que je traite contient plus de 350 000 enregistrements. Il arrive que les resultats contiennent des centaines de milles enregistrements. Ceci occasionne un long délai et crée parfois un engorgement et plus rien ne se passe. J'obtiens après quelques minutes une erreur comme quoi j'ai excédé la mémoire.

Auriez-vous un autre truc dans votre chapeau ?

Encore merci !

Tomy

Share this post


Link to post
Share on other sites
  • 0

Stocke dans ta variable globale (le $_SESSION) non pas les id des enregs trouvés, mais les précédents critères de recherche.

Lors d'une recherche, tu peux créer un tableau contenant l'ensemble des critères ET et OU, et qui serait ensuite parsé en XML, et récriproquement (quand tu as besoin de poursuivre la recherche).

Le xml aurait la forme

<rech>	<critere>  		<champ = "nom">jean</champ>  		<champ = "ville">paris</champ>  </critere>  	<critere> 		<champ = "nom">bon</champ>  		<champ = "nom">brest</champ>  	</critere> </rech> 

Ceci rechercherait les "jean" de "paris" ou les "bon" de "brest" (et non pas les jean-bon de paris-brest)

Une petit coup de google de permettra de découvrir plusieurs solutions pour t'aider à réaliser le parsing dans les deux sens.

Yvan

Share this post


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...