IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

formulaire de recherche successif sur résultats précédents


Sujet :

Langage PHP

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Points : 136
    Points
    136
    Par défaut formulaire de recherche successif sur résultats précédents
    Bonjour,

    voilà j'ai un gros problème.
    J'ai un formulaire de recherche.
    quand je le valide il affiche les résultats et aussi le formulaire de recherche avec champs précédents remplis afin d'affiner la rechercher et donc de la relancer et ainsi de suite.

    je n'arrive pas à trouver par quel moyen judicieux on peut réaliser ça.

    une idée ?

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bonjour
    Je ne sais pas si c'est un moyen judicieux, mais ça peut toujours servir de base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <form action="" method="post">
      <input type="text" name="nom" <?php if(isset($_POST['nom'])) echo "value=\"$_POST['nom']\""; ?> />
    </form>
     
    <?php
    if (isset($_POST['nom'])){
    //traitement des infos
    }
    ?>
    Evidemment, si ton formulaire comporte 3 millions de champs, ce n'est sans doute pas la méthode la plus pratique
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Points : 136
    Points
    136
    Par défaut ok
    bonjour,

    merci mais hélas ça ne peut pas fonctionner.
    en plus les champs de mon formulaire sont dynamiques (c'est l'utilisateur qui les choisi).

    du coup j'ai pensé à une solution maline mais que je n'arrive pas à reproduire suite à un probleme d'encodage d'InnerHTML.

    En gros voilà comment je procédè :
    - 1 | j'ai encapsulé le FORM html entre des balises SPAN comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <SPAN id="html_div_search">
    <form class="form-catalog" id="NOTICE_author_query" name="NOTICE_author_query" method="post" action="./catalog.php?categ=search&amp;mode=0" onsubmit="return test_form(this)">
    <h3>Auteur/titre</h3>
    ..etc
    </form>
    </SPAN>
    - 2 ensuite j'ai rajouté dans le formulaire un champ caché-hidden :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <SPAN id="html_div_search">
    <form ...
    <input name="html_search" value="" type="hidden">
    </form>
    </SPAN>
    -3 quand j'appuyerai sur le bouton recherche je vais copier le contenu html (donc avec innerHTML) dans ce champ caché de manière à stocker le formulaire HTML personnalisé de l'utilsateur dans une variable qui sera $_POSTée. Donc dans la page des résultats, je n'aurai qu'un echo $_POST['html_search']; à ajouter pour rafficher mon formulaire successif.
    Dans le bouton je mets ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input class="bouton" value="Rechercher" onclick="document.NOTICE_author_query.html_search.value=document.getElementById('html_div_search').innerHTML;" type="buton">
    jusque là ça marche seulement voilà le problème.
    Dans le contenu mis dans le champ hidden, tous les caractères HTML sont encodés (espace, accolade,accent..) avant l'envoi au serveur. Cet encodage bizarre est fait au moment de la copie javascript .innerHTML. voilà son rendu (affichage du code source) :

    <input name="html_search" value="
    &lt;form class=&quot;form-catalog&quot; id=&quot;NOTICE_author_query&quot; name=&quot;NOTICE_author_query&quot; method=&quot;post&quot; action=&quot;./catalog.php?categ=search&amp;amp;mode=0&quot; onsubmit=&quot;return test_form(this)&quot;&gt;
    &lt;h3&gt;Auteur/titre&lt;/h3&gt;
    &lt;div class=&quot;form-contenu&quot;&gt;
    &lt;div class=&quot;row&quot;&gt;
    &lt;label class=&quot;etiquette&quot; for=&quot;title_query&quot;&gt;Titre&lt;/label&gt;
    &lt;/div&gt;
    ...etc">
    alors, d'où vient cette encodage javascript mystérieux ?

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ah oui, effectivement, c'est un chouia plus compliqué
    Je crois que je ne vais pas pouvoir t'être d'une grande utilité : ton code est un niveau au-dessus de ce que je maitrise

    Je vais quand même poser une question bête : tu stockes ton formulaire dans un champ qui se trouve dans ce même formulaire ? ça ne risque pas de poser des problèmes ? (ou alors c'est moi qui n'ai rien compris )

    Bon courage !
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Points : 136
    Points
    136
    Par défaut ok
    ayé j'ai résolu avec ça côté serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo stripslashes(html_entity_decode($_REQUEST['html_search']));

  6. #6
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Points : 136
    Points
    136
    Par défaut non
    bonjour à tous,

    bon finalement c'est pas résolu. En fait si sous IE qui marche à merveille et ça permet de faire des prouesses en terme de moteur de recherche (lisez la FIN où j'explique.)

    Mon problème est que le contenu du innerHTML ne prend pas les valeurs des champs INPUT.value sous Firefox/gecko. Sous Ie ç'est sublime.

    On m'a conseiller de ne pas utiliser .innerHTML mais le DOM mais ça ne peut pas aller dans mon cas de moteur de rechercher dynamique en champs et en profondeur. je ne peux pas utiliser le DOM car le nombre de champ INPUT est dynamique à la volée et en recherche successive.

    FIN :
    Voilà ce que je souhaite faire :
    -J'ai une page qui permet de choisir/positionner des champs de recherche
    -Ensuite le visiteur en remplit certains à sa guise
    -Sur l'appuie du bouton recherche, j'enregistre le contenu html (innerhtml) dans une variable hidden.
    -à la page des résultats, je raffiche sa sélection de champs/recherche (stockée grace au hidden/innerhtml) et il peut encore en rajouter et refaire une recherche et raffiner encore indéfiniement....
    Le nombre de champs n'est pas connu au départ et sera progressif. (par exemple l'admin peut décider d'ajouter des champs de recherche)
    Cela fonctionne très très bien sous IE grace au innerHTML qui me permet de ne pas me soucier de la structure d'arbre qu'impose le DOM.

    donc je suis coincé....et je comprends pourquoi Google n'a pas mis en place cette solution maintenant car elle marche que sous IE et le jour où MSN Live fera ça, ça fera mal.!

    Donc comment contourner mon problème avec Gecko ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/02/2014, 16h49
  2. Réponses: 1
    Dernier message: 15/03/2009, 20h02
  3. formulaire de recherche ? Digression sur DECALER
    Par polak62 dans le forum Excel
    Réponses: 26
    Dernier message: 16/11/2007, 11h38
  4. Ajouter un formulaire de recherche Youtube sur son site
    Par koKoTis dans le forum Internet
    Réponses: 0
    Dernier message: 12/09/2007, 17h39
  5. Réponses: 3
    Dernier message: 21/09/2006, 11h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo