OVH Cloud OVH Cloud

Header et rafraichissement

5 réponses
Avatar
foxbille
Bonjour à tous,
J'ai un problème avec l'affichage d'une page "résultats" en utilisant
"header("location:mapage.htm")".
Je m'essplique :
Soit une page "construction de la requete" avec une <form
action="recherche.php"> contenant des champs "nom du champ" et "valeur
du champ" et un champ "type de sortie".
Soit une page "recherche.php" qui n'affiche rien mais construit la
phrase SQL de requete.
Les champs du formulaires sont récupérés avec POST et servent à
construire la clause WHERE ("nom du champ" = "valeur du champ")
le champ "type de sortie" permet de débrancher vers un script
d'affichage XL, PDF ou ecran. J'utilise pour cela ->
header("location:affiche_ecran.php");
Le problème se situe dans l'affichage de la page "affiche_ecran.php".
Pas le premier coup, mais lorsqu'on revient.
Si l'utilisateur veut modifier sa requete pour la relancer, c'est
l'ancienne page avec le résultat de la requete précédente qui
s'affiche
Pour visualiser le bon résultat, il faut rafraichir par F5.
Donc ma question : comment forcer le navigateur à afficher la bonne
page recalculée sans obliger l'utilisateur à une action quelconque,
OU quelle autre méthode mettre en oeuvre pour contourner le problème
?
J'espère avoir été suffisament clair... mais maintenant, vous n'en
doutez plus : je suis débutant en PHP ;-))
Eric,
qui trouve que PHP, c'est Pointu, et même Hard, mais Passionnant.

5 réponses

Avatar
Guillaume Bouchard
foxbille wrote:
Bonjour à tous,


Bonsoir.

J'ai un problème avec l'affichage d'une page "résultats" en utilisant
"header("location:mapage.htm")".


<mode orangina rouge>
1) Location c'est avec un L majuscule
2) On met un espace
3) URL ABSOLUE
4) google.fr > groupes > fr.comp.lang.php > machine à laver.
</mode>

Soit une page "construction de la requete" avec une <form
action="recherche.php"> contenant des champs "nom du champ" et "valeur
du champ" et un champ "type de sortie".
Soit une page "recherche.php" qui n'affiche rien mais construit la
phrase SQL de requete.


La phrase SQL elle fait quoi ? Elle transite entre les pages par GET ?
Si c'est cela, c'est une enorme faille de sécurité. N'importe qui peut
s'amuser à modifier ta requete.

Les champs du formulaires sont récupérés avec POST et servent à
construire la clause WHERE ("nom du champ" = "valeur du champ")
le champ "type de sortie" permet de débrancher vers un script
d'affichage XL, PDF ou ecran. J'utilise pour cela ->
header("location:affiche_ecran.php");


Re.
Pourquoi tu ne fais pas simplement

if( typedesortie == 'ecran') require('ecran.php');
if( typedesortie == 'print') require('print.php');

Le header est superflu AMHA.

Le problème se situe dans l'affichage de la page "affiche_ecran.php".
Pas le premier coup, mais lorsqu'on revient.
Si l'utilisateur veut modifier sa requete pour la relancer, c'est
l'ancienne page avec le résultat de la requete précédente qui
s'affiche
Pour visualiser le bon résultat, il faut rafraichir par F5.


Rien comprit au cheminement, rien compris au problème. N'utilise pas
header et tu veras la vie petillera.

J'espère avoir été suffisament clair...


J'ai eu du mal j'avoue.

mais maintenant, vous n'en
doutez plus : je suis débutant en PHP ;-))


Personne n'est parfait ;o) Bienvenu chez les foux.

qui trouve que PHP, c'est Pointu, et même Hard, mais Passionnant.


Bien joué :)

--
Guillaume.

Avatar
Olivier Miakinen
Bonjour à tous,
J'ai un problème avec l'affichage d'une page "résultats" en utilisant
"header("location:mapage.htm")".


C'est mal. ©

Tout d'abord, l'entête HTTP Location doit contenir une url absolue et
non pas relative, et ensuite tu évites un aller-retour inutile en
utilisant plutôt : require("script2.php"); exit();

http://faqfclphp.free.fr/#rub2.11

Je m'essplique :
Soit une page "construction de la requete" avec une <form
action="recherche.php"> contenant des champs "nom du champ" et "valeur
du champ" et un champ "type de sortie".


Ok.

Soit une page "recherche.php" qui n'affiche rien mais construit la
phrase SQL de requete.


Ah bon ? À quoi sert de faire une requête SQL si tu n'affiches pas le
résultat ?

Les champs du formulaires sont récupérés avec POST


Je suppose donc que c'était <form action="recherche.php" method="post">
car sinon les champs seraient récupérés en GET.

et servent à
construire la clause WHERE ("nom du champ" = "valeur du champ")
le champ "type de sortie" permet de débrancher vers un script
d'affichage XL, PDF ou ecran. J'utilise pour cela ->
header("location:affiche_ecran.php");


Non seulement c'est mal © mais en plus je ne vois pas comment tu peux
transmettre le résultat de ta requête SQL avec ta méthode. Alors qu'avec
un require() il est facile de passer des variables.

Le problème se situe dans l'affichage de la page "affiche_ecran.php".
Pas le premier coup, mais lorsqu'on revient.
Si l'utilisateur veut modifier sa requete pour la relancer, c'est
l'ancienne page avec le résultat de la requete précédente qui
s'affiche
Pour visualiser le bon résultat, il faut rafraichir par F5.


Là je n'ai rien compris, mais peut-être qu'avec le code ce serait plus
clair. Cela dit, commence donc par virer tous ces header("Location: ")
invalides et inutiles, et peut-être que cela résoudra ton problème par
la même occasion.

Donc ma question : comment forcer le navigateur à afficher la bonne
page recalculée sans obliger l'utilisateur à une action quelconque,
OU quelle autre méthode mettre en oeuvre pour contourner le problème ?


Faire afficher le résultat par recherche.php, ou par une page appelée au
moyen de require() dans recherche.php, ça devrait le faire.


Cordialement,
--
Olivier Miakinen

Avatar
foxbille
Bonjour à tous,
Et merci !
Je n'utilise plus HEADER et ça va mieux.... mais ma vie ne pétille
pas pour autant !! Aurais-je oublié qqchose ?
;-))
Merci encore.
Eric
Avatar
Guillaume Bouchard
foxbille wrote:
Bonjour à tous,


Bonjour.

Je n'utilise plus HEADER et ça va mieux....


Heureux de te l'entendre dire.

mais ma vie ne pétille
pas pour autant !! Aurais-je oublié qqchose ?


Me serais-je trompé ? Bon, ba eu... achete de l'eau gazeuse...

--
Guillaume.

Avatar
Olivier Miakinen
Je n'utilise plus HEADER et ça va mieux...


Bravo !

mais ma vie ne pétille pas pour autant !! Aurais-je oublié qqchose ?


S'il te reste un problème PHP, n'hésite pas à venir le soumettre ici, si
possible en donnant le bout de code qui ne marche pas (ou, mille fois
mieux, en donnant une url où on peut le lire).

Pour ce qui est du reste, tu peux essayer Orangina rouge comme le
suggérait Guillaume mais je ne crois pas que fclp puisse grand-chose
de plus pour toi... ;-)