A voir également:
- Problème de cache ?
- Appel caché - Guide
- Copie caché - Guide
- Clear dns cache - Guide
- C'est quoi le cache d'une application - Guide
- Package cache - Forum Windows 10
29 réponses
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
4 févr. 2013 à 11:45
4 févr. 2013 à 11:45
Bonjour,
Dans ton formulaire, est-ce que tu essayes de les remplir à nouveau grâce à tes variables sessions ?
Si tu ne le fais pas, essaye de fouiller dans cette direction. Si tu fais précédent et que tu tombes sur un formulaire vide, c'est "normal" vu qu'aucune donnée n'est transmise dans cette direction.
Certains navigateur remplissent à nouveau les formulaires lorsqu'on fait un retour, mais c'est une "courtoisie" de ces navigateurs, si on veut que ces champs soient à nouveau remplis, il faut le faire explicitement
Dans ton formulaire, est-ce que tu essayes de les remplir à nouveau grâce à tes variables sessions ?
Si tu ne le fais pas, essaye de fouiller dans cette direction. Si tu fais précédent et que tu tombes sur un formulaire vide, c'est "normal" vu qu'aucune donnée n'est transmise dans cette direction.
Certains navigateur remplissent à nouveau les formulaires lorsqu'on fait un retour, mais c'est une "courtoisie" de ces navigateurs, si on veut que ces champs soient à nouveau remplis, il faut le faire explicitement
Tralala8
Messages postés
120
Date d'inscription
mercredi 17 août 2011
Statut
Membre
Dernière intervention
12 février 2013
14
4 févr. 2013 à 11:53
4 févr. 2013 à 11:53
Bonjour,
Simple question : as-tu mis un "session_start();" au début de ta première page ? Sans ça, les variables de sessions ne sont pas accessible.
Simple question : as-tu mis un "session_start();" au début de ta première page ? Sans ça, les variables de sessions ne sont pas accessible.
J'ai mis session_start()
Non, je ne les remplis pas via mes variables sessions, c'est pas idiot, effectivement, je vais essayer ça. Donc rien a voir avec le cache alloué par le serveur ?
Pour la syntaxe, pour affecter mes champs a ma variable session, faut simplement que je les affecte directement après la saisie, dans la même page ?
Non, je ne les remplis pas via mes variables sessions, c'est pas idiot, effectivement, je vais essayer ça. Donc rien a voir avec le cache alloué par le serveur ?
Pour la syntaxe, pour affecter mes champs a ma variable session, faut simplement que je les affecte directement après la saisie, dans la même page ?
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
4 févr. 2013 à 13:03
4 févr. 2013 à 13:03
pour affecter un champ, tu peux par exemple créer une variable session "retour" qui t'indiquera que tu reviens de ta page 2 et que tu peux avoir des données à afficher dans le formulaire.
ça pourrait donner quelque chose du genre :
ou tu peux faire ton affectation en début de code plutot que de vérifier à chaque input... enfin le principe en gros c'est ça
ça pourrait donner quelque chose du genre :
<?php echo '<input type="text" name="champBidule" value="'; if (isset($_SESSION['retour']) && $_SESSION['retour'] === "retour") { echo $_SESSION['champBidule']; } echo '" />';
ou tu peux faire ton affectation en début de code plutot que de vérifier à chaque input... enfin le principe en gros c'est ça
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai essayé ton bout de code mais sans variable retour, un truc du style if (isset($_SESSION['Nom']) { echo $_SESSION['Nom']; }
En gardant la même syntaxe autour, ça ne marche pas, ça ne m'affiche que : />
en me supprimant la zone de saisi.
Ça ne marche que avec cette histoire de variable retour, ça me parait bizarre, le code en lui même ne change pas...
En gardant la même syntaxe autour, ça ne marche pas, ça ne m'affiche que : />
en me supprimant la zone de saisi.
Ça ne marche que avec cette histoire de variable retour, ça me parait bizarre, le code en lui même ne change pas...
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
4 févr. 2013 à 14:07
4 févr. 2013 à 14:07
tu dois avoir un bout de ton code erroné, ça doit pas être grand chose
Comme d'habitude, tu as raison, une erreur d'echo mal placé. ça marche en tout cas, je vais reprendre mes input, la solution me parait un peu longue, mais au moins elle est sûre.
Merci beaucoup, encore une fois ! En espérant que c'est la dernière fois !
Merci beaucoup, encore une fois ! En espérant que c'est la dernière fois !
Je me suis peut-être emballé trop vite, j'ai vérifié pour quelques champs la possibilité de les retrouver je me suis dit " Cool" mais, j'ai beau fermer mon navigateur, appuyer sur mon bouton reset, les variables restent au niveau de la saisie, on peut les effacer, mais bon, j'aimerais que ça parte quand on ferme le navigateur, au moins ça...
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
4 févr. 2013 à 14:29
4 févr. 2013 à 14:29
Comment tu reviens à ta première page ? Avec la flèche de retour du navigateur ou est-ce que tu as prévu un lien pour revenir en arrière ?
J'ai un lien définit sur un bouton, mais finalement, c'est un précedent camouflé ça donne on.click = "history.go(-1)" quelque chose comme ça.
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
4 févr. 2013 à 14:39
4 févr. 2013 à 14:39
tu peux passer par une variable get pour être certain d'être en retour
<a href="page1.php?a=retour">retour</a>
et vérifier la présence de cette variable.
Sinon je pense que tu pourrais faire un truc de ce genre en début de page :
et dans tes inputs :
<a href="page1.php?a=retour">retour</a>
et vérifier la présence de cette variable.
Sinon je pense que tu pourrais faire un truc de ce genre en début de page :
if (isset($_SESSION['retour']) && $_SESSION['retour'] === 'oui') { $champ1 = $_SESSION['champ1']; $champ2 = $_SESSION['champ2']; etc... } else { $champ1 = ''; $champ2 = ''; etc... } $_SESSION['retour'] = 'non';
et dans tes inputs :
echo '<input type="text" name="champ1" value="'. $champ1 .'"' />';
Ah bah oui, effectivement, quand on met un vrai lien, et pas un précédent camouflé en mousse, ça marche comme prévu.
C'est bien plus rapide avec cette méthode oui... Je vais faire ça comme ça, ce sera plus rapide, par contre, j'ai une dernière question, sur certain champ, j'avais des value par défaut ("Non connu" par exemple) bon, pour les garder, pas de soucis, me suffirait d'un if. Mais, j'avais mis un code onfocus pour que dès qu'on clique, le texte par défaut s'efface, pratique pour pas s'embêter.
Sauf que avec le php, les guillemets font conflit... Quand je balance mon input, je le mets entre ' ' puis je peux faire mon type = "text" pas de problème, mais sur le onfocus, j'ai besoin des apostrophes et des guillemets, y a moyen de feinter la chose ?
Sauf que avec le php, les guillemets font conflit... Quand je balance mon input, je le mets entre ' ' puis je peux faire mon type = "text" pas de problème, mais sur le onfocus, j'ai besoin des apostrophes et des guillemets, y a moyen de feinter la chose ?
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
Modifié par ThEBiShOp le 4/02/2013 à 14:54
Modifié par ThEBiShOp le 4/02/2013 à 14:54
le caractère d'échappement qui marche dans de nombreux langages :
echo "Dans cette ligne je peux mettre des 'apostrophes' mais aussi des \"guillements\" grâce au caractère d'éhcappement !"; echo 'Même chose \'ici\' !!!';
Ah, ça marche aussi dans ce cas la, d'accord, je pensais que c'était juste pour afficher une apostrophe quand on en avait besoin, ou des guillemets !
Ok, bon bah, merci beaucoup thEBiShOp, je crois que ce coup-ci, ce sera enfin bon ! J'espère en tout cas !
Ok, bon bah, merci beaucoup thEBiShOp, je crois que ce coup-ci, ce sera enfin bon ! J'espère en tout cas !
J'ai un problème encore lié a ça. Je me doute que je dois commencer a être lourd, mais voila, j'ai des listes déroulantes qui s'appuient sur des fichiers texte pour leurs options. La question c'est comment reprendre la variable de session la dedans : <?php
$fichier = fopen('valeurs.txt', 'r+');
$contenu = fgets($fichier);
fclose($fichier);
$valeurs = explode('/', $contenu);
echo '<select name="mon_var">';
foreach($valeurs as $cle => $valeur)
{
echo '<option value="'.$valeur.'">'.$valeur.'</option>';
}
echo '</select>';
?>
$fichier = fopen('valeurs.txt', 'r+');
$contenu = fgets($fichier);
fclose($fichier);
$valeurs = explode('/', $contenu);
echo '<select name="mon_var">';
foreach($valeurs as $cle => $valeur)
{
echo '<option value="'.$valeur.'">'.$valeur.'</option>';
}
echo '</select>';
?>
Salut,
Voici un exemple pour sélectionner la bonne ligne avec ta variable de session :
<?php
$fichier = fopen('valeurs.txt', 'r+');
$contenu = fgets($fichier);
fclose($fichier);
$valeurs = explode('/', $contenu);
echo '<select name="mon_var">';
foreach($valeurs as $cle => $valeur)
{
if ($_SESSION['mon_var'] == $valeur) {
echo '<option value="'.$valeur.'" selected="selected">'.$valeur.'</option>';
} else {
echo '<option value="'.$valeur.'">'.$valeur.'</option>';
}
}
echo '</select>';
?>
Voici un exemple pour sélectionner la bonne ligne avec ta variable de session :
<?php
$fichier = fopen('valeurs.txt', 'r+');
$contenu = fgets($fichier);
fclose($fichier);
$valeurs = explode('/', $contenu);
echo '<select name="mon_var">';
foreach($valeurs as $cle => $valeur)
{
if ($_SESSION['mon_var'] == $valeur) {
echo '<option value="'.$valeur.'" selected="selected">'.$valeur.'</option>';
} else {
echo '<option value="'.$valeur.'">'.$valeur.'</option>';
}
}
echo '</select>';
?>
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
4 févr. 2013 à 16:08
4 févr. 2013 à 16:08
oui, j'aurais fait ça légèrement différemment histoire de factoriser un peu...
mais ça revient strictement au même que ce que t'as dit Pitet
$fichier = fopen('valeurs.txt', 'r+'); $contenu = fgets($fichier); fclose($fichier); $valeurs = explode('/', $contenu); echo '<select name="mon_var">'; foreach($valeurs as $cle => $valeur) { if ($_SESSION['mon_var'] === $valeur) { $selected = ' selected="selected"'; } else { $selected = ''; } echo '<option value="'.$valeur.'"'.$selected.'>'.$valeur.'</option>'; } echo '</select>';
mais ça revient strictement au même que ce que t'as dit Pitet
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
4 févr. 2013 à 16:37
4 févr. 2013 à 16:37
oui, l'intérêt c'est juste que le jour où on veut modifier l'input, on ne doivent pas le faire à plusieurs endroits, histoire d'éviter les erreurs possibles...
Bonjour, effectivement, ton code marche bien, merci beaucoup, par contre, le dernier echo </select> m'a fait buggué, donc je l'ai enlevé, je ferme mon select après ma balise php. c'était pas le cas sur le code que j'ai montré, c'était le code d'origine avant que je le retouche, pas l'actuel, m'enfin voila.
Merci beaucoup en tout cas !
Merci beaucoup en tout cas !
Bon, j'ai encore un problème en fin de compte...
J'ai essayé toute la matinée de faire la même chose avec des checkbox, c-a-d de les cocher en cas de retour a la première page si elles avaient été selectionnées par l'utilisateur au préalable.
Le problème, c'est que le fait qu'elle soit coché ou non est contenu dans un tableau qui s'appelle options[], j'ai 5 checkbox, je pourrais passer chacune avec variable pour faire plus simple, mais je trouve la solution idiote. j'ai essayé avec un code comme ceci :
if (isset($_SESSION['options'])) {if ($option[$i] == 'option1') { '<input type="checkbox" name="options[]" value="option1" checked = "checked"/> texte <br/>'; } }
else { echo '<input type="checkbox" name="options[]" value="option1"/> option1 <br/>'
Mais ça ne me retourne rien du tout...
J'ai essayé toute la matinée de faire la même chose avec des checkbox, c-a-d de les cocher en cas de retour a la première page si elles avaient été selectionnées par l'utilisateur au préalable.
Le problème, c'est que le fait qu'elle soit coché ou non est contenu dans un tableau qui s'appelle options[], j'ai 5 checkbox, je pourrais passer chacune avec variable pour faire plus simple, mais je trouve la solution idiote. j'ai essayé avec un code comme ceci :
if (isset($_SESSION['options'])) {if ($option[$i] == 'option1') { '<input type="checkbox" name="options[]" value="option1" checked = "checked"/> texte <br/>'; } }
else { echo '<input type="checkbox" name="options[]" value="option1"/> option1 <br/>'
Mais ça ne me retourne rien du tout...