Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/05/2007, 09h40   #1
En attente de confirmation mail
 
Inscription : octobre 2002
Messages : 347
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 347
Points : 94
Points : 94
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 ?
Ekimasu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 09h53   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Bonjour
Je ne sais pas si c'est un moyen judicieux, mais ça peut toujours servir de base :

Code :
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)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 11h14   #3
En attente de confirmation mail
 
Inscription : octobre 2002
Messages : 347
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 347
Points : 94
Points : 94
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 :
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 :
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 :
<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) :

Citation:
<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 ?
Ekimasu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 11h38   #4
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
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)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 17h42   #5
En attente de confirmation mail
 
Inscription : octobre 2002
Messages : 347
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 347
Points : 94
Points : 94
Par défaut ok

ayé j'ai résolu avec ça côté serveur :

Code :
echo stripslashes(html_entity_decode($_REQUEST['html_search']));
Ekimasu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 11h54   #6
En attente de confirmation mail
 
Inscription : octobre 2002
Messages : 347
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 347
Points : 94
Points : 94
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 ?
Ekimasu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h02.


 
 
 
 
Partenaires

Hébergement Web