Construction page de recherche

dougou
Invité n'ayant pas de compte PHPfrance

14 juin 2010, 17:31

Bonjour à tous !

Je suis en train de construire un formulaire de recherche (cherche dans BDD) qui
comporte 4 champs [mot clé, région, référence et type]. Jusque la pas de souci j'y arrive...
Mon probleme se pose au niveau de la construction de la page de recherche.

j'aimerai un rendu comme le site 'Leboncoin.fr'.
C'est à dire les entrées du formulaire au dessus et le rendu de la recherche en dessous.

J'y arrive presque mais la mienne (ma page) lorsque vous rafraichissez la page il y a la
demande de" confirmation d'envoi de données du formulaire" qui intervient et vous êtes
obligé de cliquer sur ok.

Et aussi les entrées du formulaire disparaissent ! Ce qui est assez dommage.

Mon formulaire pointe sur rien (action="") et je passe par un 'if' qui test le bouton 'envoyer' pour afficher la recherche.
if(isset($_POST['btn']))
{
include('resultat.php');
echo $RES; //$RES étant le résultat traité venant de la BDD
}


*J'aimerai supprimer la 'confirmation de renvoi de données' lorsqu'on rafraichi la page avec des résultats affichés
*aussi garder les entrées du formulaires remplies même avec des resultats affichés !
*et on ne sait jamais si vous avez des conseils/préférences pour la construction de ce genre de pages je suis preneurs.
J'ai vu que généralement c'est du $_GET utilisé et moi j'utilise du $_POST.


MERCI A TOUS CEUX QUI M'AIDERONT (ou pas :priere: )

Mammouth du PHP | 672 Messages

15 juin 2010, 09:23

*J'aimerai supprimer la 'confirmation de renvoi de données' lorsqu'on rafraichi la page avec des résultats affichés
*aussi garder les entrées du formulaires remplies même avec des resultats affichés !
*et on ne sait jamais si vous avez des conseils/préférences pour la construction de ce genre de pages je suis preneurs.
J'ai vu que généralement c'est du $_GET utilisé et moi j'utilise du $_POST.
Bonjour.

1. Tu ne pourras pas supprimer la 'confirmation de renvoi de données'.
En tout cas pas simplement.
Ou alors, il faut passer par du GET :roll:

2. Pour garder les entrées du formulaire :
Ce serait bien d'avoir un peu de code, et de voir comment tu ferais...
En gros, le principe :

Code : Tout sélectionner

SI on a reçu quelque chose (si $_POST['champ'] contient quelque chose) Mettre le contenu dans le champ du formulaire (value="$_POST['champ']).

dougou
Invité n'ayant pas de compte PHPfrance

15 juin 2010, 14:27

Bonjour, merci de t'interesser à mon cas !

Donc voilà la tete de mon formulaire
<form id="recherche_emploi" method="post" >
et voilà mon code
<fieldset>
<legend>Résultat de votre recherche</legend>
<?php
if(isset($_POST['btn']))
{
include('action/recherche_emServeur.php');
//echo $_SESSION['error'];
echo $REC;
//echo "CA MARCHE !";
}else{
echo "CA MARCHE PAS !";
}

?>
</fieldset>
et donc si j'ai bien compris je devrais passer par $_GET... et pour les entrées qui restent pour un 'input' c'est déjà plu abordable mais j'ai des 'checkbox' aussi

dougou
Invité n'ayant pas de compte PHPfrance

16 juin 2010, 09:06

RE Bonjour,

alors j'ai essayé la methode GET et ça ne marche pas parce uqe j'ai un fichier de configuration d'url qui me renvoi à la page par défaut parce qu'il ne reconnait pas l'url....

AU SECCCCCCCCUUUUUUUUURRRRRRRRRSSSSSSSS

Mammouth du PHP | 672 Messages

17 juin 2010, 15:39

Du coup, il te reste la solution à base de session. Mais ça risque vite de te compliquer le truc...

Exemple basique à sécuriser...
<?php
// On met en buffer pour pouvoir changer le header...
session_start();
ob_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
</head>
<body>
<form id='formulaire' action = 'test.php' method='post'>
<label>application OPC<input id='test' name='test' type='text' value='<?php
// Si une valeur a été saisie, elle est conservée
if (!empty($_SESSION['test']) ) {
	echo $_SESSION['test'];
}
?>' /></label>
<input type='submit' />
</form>
<?php
// Bout de code exécuté à l'envoi du formulaire
if (!empty($_POST) ) {
/*
 On met le conetnu de $_POST dans $_SESSION
 Puis on redirige sur la page, ce qui dégage le POST ?
 => F5 n'affiche plus le message
*/
	$_SESSION['test'] = $_POST['test'];
	header('Location: test.php');
}
?>
</body>
</html>
<?php
ob_flush();
?>

DOUGOU
Invité n'ayant pas de compte PHPfrance

20 juin 2010, 12:09

Il est vrai que ça complique beaucoup...

Je continue de chercher et je vous tiens au courant