Rechercher : dans
Par :

Sur IE, history.back() ne restitue liste

Dernière réponse le 29 sep 2009 à 19:54:05 François, le 28 sep 2009 à 20:51:39 
 Signaler ce message aux modérateurs

Bonjour,
J'essaie vainement de trouver une solution pour pouvoir afficher ce que donnera réellement l'envoi d'un formulaire, puis retourner à ce formulaire soit pour corriger, soit pour envoyer.
Mon code fonctionne parfaitement avec Firefox, mais pas avec Internet Explorer.
Sur ce dernier, lors du retour, la liste de choix est désactivée. Y a-t-il une solution simple?
Voici un exemple simplifié illustrant ce que je veux faire (ne traitant pas de l'envoi des données puisque le problème ne se situe pas à ce niveau)

<html>
<head>
<title>Document sans-titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--
function SelectionAutrePays()
{
var Indice = document.forms['Annonce'].elements['Z_PAYS'].selectedIndex;
var Valeur = document.forms['Annonce'].elements['Z_PAYS'].options[Indice].text;
document.forms['Annonce'].elements['Z_AUTRE_PAYS'].style.visibility = (Valeur=="Autre pays")?"visible":"hidden";
document.forms['Annonce'].elements['Z_AUTRE_PAYS'].disabled = (Valeur=="Autre pays")?false:true;
}
//-->
</script>
</head>

<body bgcolor="#FFFFFF">
<form name="Annonce" action="1_Essai.php" method="post">
<?php
if (isset($_POST['B_ENVOI']))
{
if ($_POST['RADIO_SELECTION']=="Poster")
{
if (isset($_POST['Z_AUTRE_PAYS']))
{
echo "Pays choisi: ".$_POST['Z_AUTRE_PAYS'];
}
else
{
echo "Pays choisi: ".$_POST['Z_PAYS'];
}
}
elseif ($_POST['RADIO_SELECTION']=="Voir")
{
?>

<!-- Début partie visualisation **************************************************** -->
<table width="500" border="1" cellspacing="0" align="center">
<tr bgcolor="#008000">
<td colspan="2">
<div align="center"><b><font color="#FFFFFF">Exemple</font></b></div>
</td>
</tr>
<tr>
<td width="179"><b>Pays choisi:</b></td>
<td width="311">
<div align="center"><?php if(isset($_POST['Z_AUTRE_PAYS'])){echo $_POST['Z_AUTRE_PAYS'];}else{echo $_POST['Z_PAYS'];}?></div>
</td>
</tr>
<tr>
<td width="490" colspan="2" height="2">
<div align="center">
<input type="button" name="B_RETOUR" value="Retour" onclick="history.back()">
</div>
</td>
</tr>
</table>
<!-- Fin partie visualisation ***************************************************** -->
<?php
}
}
else
{
?>
<!-- Début partie affichage formulaire******************************************** -->
<p align="center">
<select name="Z_PAYS" size="1" onchange="SelectionAutrePays();">
<option>Belgique</option>
<option>France</option>
<option>Autre pays</option>
</select>
<input type="text" name="Z_AUTRE_PAYS" <?php if (!isset($_POST['Z_PAYS']) OR $_POST['Z_PAYS']!="Autre pays"){echo " disabled style=\"visibility:hidden;\"";}?>>
</p>
<p align="center">Que voulez-vous faire?
<input type="radio" name="RADIO_SELECTION" value="Voir" checked>
Visualiser
<input type="radio" name="RADIO_SELECTION" value="Poster">
Poster</p>
<p align="center">
<input type="submit" name="B_ENVOI" value="Envoyer">
</p>
<!-- Fin partie affichage formulaire*********************************************** -->
<?php
}
?>
</form>
</body>
</html>

Configuration: Windows XP
Firefox 3.0.7

Meilleures réponses pour « sur IE, history.back() ne restitue liste » dans :
Logiciels et chansons de Karaoké gratuits (VanBasco, KaraFun...) Voir Trouver les fichiers de chansons aux bons formats : .midi / .kar Télécharger des fichiers .midi de qualité pour le karaoké Enregistrer les fichiers .midi / .kar sur l'ordinateur Logiciels de chansons et de Karaoké gratuits Grâce à...
Supprimer la liste des recherches Google sous IE VoirProblème Sur Google et autres moteurs de recherche, est-il possible de supprimer ou au moins de ne pas faire apparaître la liste des recherches effectuées précédemment. Solution Sur une page sous internet explorer, cliquer sur Outils, puis sur...
[Windows] Obtenir la liste des fichiers d'un dossier VoirLister le contenu d'un dossier Voici une astuce simple qui permet de lister le nom des fichiers contenus dans un répertoire. Vous pourrez obtenir en un clic les titres de vos chansons, de vos photos, etc. dans un fichier...
Désinstaller IE 8 VoirDésinstallation d'IE 8 Vous avez installé IE8 pour le tester et vous souhaitez désormais revenir à une version précédente ? Voici la procédure à suivre pour les OS suivants : Windows Vista Windows XP Windows Vista Ouvrir le...
Listes et énumérations en HTML VoirLes listes Une liste est un paragraphe structuré contenant une suite d'articles. Le langage HTML définit trois types de listes : La liste ordonnée ; La liste non ordonnée ; La liste de définition. Liste ordonnée Conteneur Type de...
Front Office et Back Office VoirFront Office / Back Office Les termes de Front Office (littéralement « boutique ») et de Back Office (« arrière-boutique ») sont généralement utilisés pour décrire les parties de l'entreprise (ou de son système d'information) dédiées...
Listes de diffusion (mailing lists) VoirNotion de liste de diffusion Une liste de diffusion (en anglais mailing-list) est un des services les plus couramment utilisés sur internet, permettant à un expéditeur d'envoyer un message à un ou plusieurs destinataires. Le courrier électronique a...

1

Zempachi, le 28 sep 2009 à 21:10:28

Salut,
c'est normal, firefox par défaut conserve les données saisies.
Il ne s'agit pas d'un fonctionnement lié à du javascript ou autre mais c'est disons une "fonctionnalité/particularité" de firefox. (qui d'ailleurs peut être encombrante dans certains cas).

Pour en revenir au problème, le moyen le plus commun est de retourner à la page du formulaire en passant les divers valeurs saisies en GET.
non, non, on peut pas!
Membre fondateur du FJH
v(^_^)v

Répondre à Zempachi

2

Quid37, le 28 sep 2009 à 21:48:48

Merci, je vais essayer, mais étant novice, je vais devoir passer un peu de temps à étudier le GET, puis tester. Je donnerai le résultat dès que possible, succès ou non.

Répondre à Quid37

3

Quid37, le 28 sep 2009 à 23:26:18

J'ai remplacé le $Post par $GET, çà ne change rien, ce qui n'est pas une surprise.
Sauf autre proposition de solution, je vais devoir tester d'autres moyens d'arriver à mes fins.

Répondre à Quid37

4

Quid37, le 29 sep 2009 à 16:04:18

Bon, j'ai testé le Get qui ne m'a pas apporté de solution. En fait, au rechargement de la page par history-back, IE a bien conservé la valeur sélectionnée dans la liste de choix. Le problème est donc: comment peut-on récupérer cette valeur avec php (ou javascript?) lors du rechargement de la page afin d'activer/désactiver la zone de texte selon cette valeur. Le parcours de nombreux groupes ne m'a pas permis de trouver une réponse. Finalement, ce n'est sans doute pas possible en php. Je vais essayer avec Jacascript.

Répondre à Quid37

5

Zempachi, le 29 sep 2009 à 16:14:21

Oublie le history.back()!

Tout devra être géré coté serveur (= php), et pas de javascript.
Tu as deux scripts php:
- ton formulaire
- le script de traitement qui va traiter les informations saisies

Ton formulaire va envoyer les infos en POST au script de traitement. Celui-ci va vérifier notamment le format des données saisies comme par exemple le format des emails sous la forme "xxx@xxx.xx". Si les données saisies sont correctes alors on redirige vers la suite sinon on revient vers le formulaire en passant en GET les données saisies.
Cela impose dans la page du formulaire que l'on affiche si elles existent (au moyen de la fonction isset() ) les données transmises en GET.

Donc pas de javascript et surtout pas de history.back().

Je te renvois aux différents tutos existants sur la toile pour les précisions.
non, non, on peut pas!
Membre fondateur du FJH
v(^_^)v

Répondre à Zempachi

6

Quid37, le 29 sep 2009 à 17:31:38

Merci de ton aide,
Les traitements préconisés ont bien été programmés. Le code que j'ai envoyé n'était qu'un exemple, j'ai, en réalité 842 lignes pour ma page.
Le formulaire m'envoie un mail qui comporte tout le code HTML d'une page. Un copier-coller, je vérifie le contenu puis l'envoie sur le site.
Les membres qui postent des annonces d'actions (site d'une organisation humanitaire) souhaitent maintenant pouvoir visualiser ce que donnera la page avant publication, et retourner sur le formulaire contenant les infos déjà saisies pour éventuelles modifications.
Je ne souhaitais pas passer par une base de données, et afficher une page dont le code se trouve avec le formulaire. Selon le choix, avec des radios, le clic sur le bouton d'envoi soit affiche la page telle qu'elle sera sur le site - c'est là qu'est le bouton qui utilise le history-back - , soit m'envoie les données.
Cà me semblait être un concept simple.
Je cherche encore un peu, et si je trouve une méthode , je publie avant de clore la discussion.

Répondre à Quid37

7

 Quid37, le 29 sep 2009 à 19:54:05

Le Javascript a apporté la solution, il suffisait de récupérer la valeur sélectionnée dans la liste par un onload dans la balise <body> et d'utiliser la fonction déjà présente.
Reste un petit pb: le béboggeur de script annonce une variable Null a l'affichage de la visualisation.
Je considère que c'est résolu.
Merci des indications aimablement fournies.

Voici le code, la partie envoi n'est pas traitée ici:
<html>
<head>
<title>Document sans-titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--
function SelectionAutrePays()
{
var Valeur = document.forms['Annonce'].elements['Z_PAYS'].value;
document.forms['Annonce'].elements['Z_AUTRE_PAYS'].style.visibility = (Valeur=="Autre pays")?"visible":"hidden";
document.forms['Annonce'].elements['Z_AUTRE_PAYS'].disabled = (Valeur=="Autre pays")?false:true;
}
//-->
</script>
</head>

<body bgcolor="#FFFFFF" onLoad="SelectionAutrePays();">
<form name="Annonce" action="1_Essai.php" method="post">
<?php
if (isset($_POST['B_ENVOI']))
{
if ($_POST['RADIO_SELECTION']=="Poster")
{
if (isset($_POST['Z_AUTRE_PAYS']))
{
echo "Pays choisi: ".$_POST['Z_AUTRE_PAYS'];
}
else
{
echo "Pays choisi: ".$_POST['Z_PAYS'];
}
}
elseif ($_POST['RADIO_SELECTION']=="Voir")
{
?>

<!-- Début partie visualisation **************************************************** -->
<table width="500" border="1" cellspacing="0" align="center">
<tr bgcolor="#008000">
<td colspan="2">
<div align="center"><b><font color="#FFFFFF">Exemple</font></b></div>
</td>
</tr>
<tr>
<td width="179"><b>Pays choisi:</b></td>
<td width="311">
<div align="center"><?php if(isset($_POST['Z_AUTRE_PAYS'])){echo $_POST['Z_AUTRE_PAYS'];}else{echo $_POST['Z_PAYS'];}?></div>
</td>
</tr>
<tr>
<td width="490" colspan="2" height="2">
<div align="center">
<input type="button" name="B_RETOUR" value="Retour" onclick="history.back()">
</div>
</td>
</tr>
</table>
<!-- Fin partie visualisation ***************************************************** -->
<?php
}
}
else
{
?>
<!-- Début partie affichage formulaire******************************************** -->
<p align="center">
<select name="Z_PAYS" size="1" onchange="SelectionAutrePays();">
<option value="Belgique">Belgique</option>
<option Value="France">France</option>
<option value="Autre pays">Autre pays</option>
</select>
<input type="text" name="Z_AUTRE_PAYS"<?php if(!isset($_POST['Z_AUTRE_PAYS']) Or $_POST['Z_PAYS']!="Autre pays"){echo " disabled style=\"visibility:hidden;\"";}?>>
</p>
<p align="center">Que voulez-vous faire?
<input type="radio" name="RADIO_SELECTION" value="Voir" checked>
Visualiser
<input type="radio" name="RADIO_SELECTION" value="Poster">
Poster</p>
<p align="center">
<input type="submit" name="B_ENVOI" value="Envoyer">
</p>
<!-- Fin partie affichage formulaire*********************************************** -->
<?php
}
?>
</form>
</body>
</html>

Répondre à Quid37