[RESOLU] réactualisé une page et retour historique

Eléphant du PHP | 100 Messages

31 déc. 2019, 12:21

Bonjour à Toutes et à Tous,

Je vous expose mon soucis:

Dans mon backoffice je suis sur une page index.php, je modifie une fiche modification.php je valide mon traitement modification02.php et en bas de cette page je veux revenir au même endroit sur ma page index.php
dans modification02.php:

Code : Tout sélectionner

echo'<meta http-equiv="refresh" content="0;url=index.php" />'; echo'<script type="text/javascript">history.go(-2);</script> ';
history.go(-2) me positionne exactement à l'endroit désiré sur la page index.php mais cette page n'est pas réactualisée

Comment dois-je m'y prendre ?

Merci d'avance et passez de bonnes fêtes de fin d'année

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

31 déc. 2019, 16:07

Il faut mettre une ancre HTML, c'est la solution la + propre et la + fiable pour faire un positionnement dans une page.

history.back() ou history.go() ne fonctionne que suivant le bon vouloir des navigateurs web et il n'est même pas sûr que le repositionnement du scroll fonctionne sur tous les navigateurs.
Bref => utilise des ancres HTML
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 100 Messages

31 déc. 2019, 16:53

Bonjour @rthur,
merci pour ta réponse rapide,

J'ai tester sur Firefox, Chrome, opéra, cela fonctionne bien comme ta solution donnée dans un précédent sujet :
<script type="text/javascript">history.back();</script>

concernant une ancre , j'avais testé mais cela me renvoyais en début de ma page sur la première ancre

voici mon code :

Code : Tout sélectionner

if (file_exists($filename)) { echo'<div class="liste"><li>'; echo'<p class="titrephoto">'.$ligne['titre'].'</p>'; echo'<img src="'.$repertoirephoto.$ligne['photo'].'" title='.$ligne['titre'].' /><p>'.$ligne['photo'].'</p>'; echo '</li> <li class="espacemini"></li> <li><a href="modification.php?dirmodif='.$ligne['id'].'" >Modification</a></li> <li class="espacemini"></li> <li><a href="suppression.php?dirsuppr='.$ligne['photo'].'" onclick="return(confirm(\'Etes-vous sûr de vouloir supprimer '.$ligne['photo'].' ?\'));">Suppression</a></li> </div>'; }
avant : echo'<div class="liste"> je peux créer une ancre du style <div id='monchoix'>

Je ne suis pas arrivé à mettre $ligne['id'] dans mon ancre, y a il une solution
encore merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

31 déc. 2019, 17:11

Qu'as-tu essayé exactement ? Quel code PHP as-tu mis et qui ne donne pas le résultat escompté (regarde la source HTML pour voir le résultat)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 100 Messages

31 déc. 2019, 17:36

voici mon code :

Code : Tout sélectionner

while ($ligne = $reponse->fetch()) { $id=$ligne['id']; $renvoi=$id; $repertoirephoto=$repertoirephotos.'/'.$ligne['dossier'].'/'; $_SESSION['dossier']=$ligne['dossier']; $_SESSION['id']=$ligne['id']; $filename = $repertoirephoto.$ligne['photo']; if (file_exists($filename)) { echo'<div id="monchoix"><div class="liste"><li>'; echo'<p class="titrephoto">'.$ligne['titre'].'</p>'; echo'<img src="'.$repertoirephoto.$ligne['photo'].'" title='.$ligne['titre'].' /><p>'.$ligne['photo'].'</p>'; echo '</li> <li class="espacemini"></li> <li><a href="modification.php?dirmodif='.$ligne['id'].'" >Modification</a></li> <li class="espacemini"></li> <li><a href="suppression.php?dirsuppr='.$ligne['photo'].'" onclick="return(confirm(\'Etes-vous sûr de vouloir supprimer '.$ligne['photo'].' ?\'));">Suppression</a></li> </div></div>'; } }
En mettant un div au début, j'ai toute mes fiches l'une en dessous des autres normal puisque pas de css

mon code en faisant 'code source de la page :
<div class="liste"><li><div id="monchoix"><p class="titrephoto">Extérieur</p><img src="../../img/photos/store//exterieur/onx1.jpg" title=Extérieur /><p>onx1.jpg</p></li>
<li class="espacemini"></li>
<li><a href="modification.php?dirmodif=8" >Modification</a></li>
<li class="espacemini"></div>

Merci

Mammouth du PHP | 2703 Messages

31 déc. 2019, 18:16

c'est le 3ème sujet sur la même question.
pas de # dans le code source généré, donc cela ne peut pas fonctionner.

Eléphant du PHP | 100 Messages

01 janv. 2020, 12:11

Bonjour à Toutes et à Tous, permettez-moi de vous présenter mes meilleurs voeux pour cette nouvelle année

Merci Mammouth,

la réponse d' @rthur que je remercie vivement me conseillant d'utiliser les ancres remontent effectivement au premier sujet

Ma question était actualiser la page index.php après modification et traitement en JavaScript

concernant les ancres je vous joint mon bout de code:

Code : Tout sélectionner

while ($ligne = $reponse->fetch()) { $id=$ligne['id']; $renvoi=$id; $repertoirephoto=$repertoirephotos.'/'.$ligne['dossier'].'/'; $_SESSION['dossier']=$ligne['dossier']; $_SESSION['id']=$ligne['id']; $filename = $repertoirephoto.$ligne['photo']; if (file_exists($filename)) { echo'<div id="monchoix" class="liste"><li>'; echo'<p class="titrephoto">'.$ligne['titre'].'</p>'; echo'<img src="'.$repertoirephoto.$ligne['photo'].'" title='.$ligne['titre'].' /><p>'.$ligne['photo'].'</p>'; echo '</li> <li class="espacemini"></li>'; //<li><a href="modification.php?dirmodif='.$ligne['id'].'#monchoix" >Modification</a></li> echo'<li><a href="modification.php?dirmodif='.$ligne['id'].'#monchoix'.$ligne['id'].'" >Modification</a></li> <li class="espacemini"></li> <li><a href="suppression.php?dirsuppr='.$ligne['photo'].'" onclick="return(confirm(\'Etes-vous sûr de vouloir supprimer '.$ligne['photo'].' ?\'));">Suppression</a></li> </div>'; } }
voici ce que me retourne le code source de ma page :

Code : Tout sélectionner

<div id="monchoix" class="liste"><li><p class="titrephoto">Extérieur</p><img src="../../img/photos/store//exterieur/exterieur.jpg" title=Extérieur /><p>exterieur.jpg</p></li> <li class="espacemini"></li><li><a href="modification.php?dirmodif=9#monchoix9" >Modification</a></li> <li class="espacemini"></li> <li><a href="suppression.php?dirsuppr=exterieur.jpg" onclick="return(confirm('Etes-vous sûr de vouloir supprimer exterieur.jpg ?'));">Suppression</a></li> </div>
effectivement je suis bien sur l'id : 9
ma page index.php après traitement se trouve en haut de page et non pas à l'endroit désiré

Qu'ai-je fais(ou pas) pour que cela ne fonctionne pas

Merci beaucoup
Bonne journée

Mammouth du PHP | 2703 Messages

01 janv. 2020, 15:04

dans le bout de code montré, il n'y a pas d'élément avec un id "monchoix9".
si le choix 9 est supprimé, qu'il n'apparait plus dans la page rafraichie, alors il faut pointer vers l'item précédent et non le 9.

Eléphant du PHP | 100 Messages

01 janv. 2020, 16:14

Merci

je vois pourtant bien dans modification :

Code : Tout sélectionner

<li class="espacemini"></li><li><a href="modification.php?dirmodif=9[color=#BF00FF]#monchoix9[/color]" >Modification</a></li>

Mammouth du PHP | 2703 Messages

01 janv. 2020, 16:15

<div id="monchoix"

Eléphant du PHP | 100 Messages

01 janv. 2020, 17:00

Merci Mammouth,

J'ai poursuivi mon idée en Javascript

Voici le code utilisé :
Dans ma page de traitement modification02.php

$_SESSION['rechercheposition'] =0;

if(isset($_POST['envoyer'])) {

$_SESSION['rechercheposition'] =1;

et en bas de page :

Code : Tout sélectionner

echo'<script type="text/javascript">history.go(-2);</script> ';



Dans ma page index.php dans le While :

Code : Tout sélectionner

if (file_exists($filename)) { if(isset($_SESSION['rechercheposition'])){ if ($_SESSION['rechercheposition'] ==1){ echo'<meta http-equiv="refresh" content="0;url=index.php" />'; $_SESSION['rechercheposition']=0; } }
Fonctionne sous Firefox
Est-ce que le code est bon ?

Merci encore

Eléphant du PHP | 100 Messages

02 janv. 2020, 10:33

Bonjour à Tous,

Je suis intéressé par les ancres proposés par @rthur et Mammouth

Voici mes modifications :

Dans ma page de traitement modification02.php en fin de page :

Code : Tout sélectionner

echo '<script language="JavaScript">alert("La modification a bien été enregistrée.")</script>'; echo'<script>location.href="index.php"</script>';

Page index.php

Code : Tout sélectionner

$monchoix = "monchoix".$ligne["id"]; echo'<div id="'.$monchoix.'" class="liste"><li>'; echo'<p class="titrephoto">'.$ligne['titre'].'</p>'; echo'<img src="'.$repertoirephoto.$ligne['photo'].'" title='.$ligne['titre'].' /><p>'.$ligne['photo'].'</p>'; echo '</li> <li class="espacemini"></li> <li><a href="modification.php?dirmodif='.$ligne['id'].'" >Modification</a></li>'; echo'<li class="espacemini"></li> <li><a href="suppression.php?dirsuppr='.$ligne['photo'].'" onclick="return(confirm(\'Etes-vous sûr de vouloir supprimer '.$ligne['photo'].' ?\'));">Suppression</a></li> </div>';
et voici le code source après traitement de la page index.php

Code : Tout sélectionner

<div id="monchoix9" class="liste"><li><p class="titrephoto">Extérieur</p><img src="../../img/photos/store//exterieur/exterieur.jpg" title=Extérieur /><p>exterieur.jpg</p></li> <li class="espacemini"></li> <li><a href="modification.php?dirmodif=9" >Modification</a></li><li class="espacemini"></li> <li><a href="suppression.php?dirsuppr=exterieur.jpg" onclick="return(confirm('Etes-vous sûr de vouloir supprimer exterieur.jpg ?'));">Suppression</a></li> </div>
Je me retrouve en haut de page et pas à l'endroit désiré

Une idée
Merci beaucoup

Eléphant du PHP | 100 Messages

02 janv. 2020, 11:10

j'ai modifié ma div : en ajoutant un #

Code : Tout sélectionner

echo'<div id="#'.$monchoix.'" class="liste"><li>';
L'ancre ne fonctionne pas
voici le code source de la page :

Code : Tout sélectionner

<div id="#monchoix9" class="liste"><li><p class="titrephoto">Extérieur</p><img src="../../img/photos/store//exterieur/exterieur.jpg" title=Extérieur /><p>exterieur.jpg</p></li> <li class="espacemini"></li> <li><a href="modification.php?dirmodif=9monchoix9" >Modification</a></li><li class="espacemini"></li> <li><a href="suppression.php?dirsuppr=exterieur.jpg" onclick="return(confirm('Etes-vous sûr de vouloir supprimer exterieur.jpg ?'));">Suppression</a></li> </div>
Le numéro 9 et l'id de la table dans ma bdd
Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

02 janv. 2020, 19:26

Le # c'est uniquement dans l'url pas dans la balise HTML.

Arrête tout et fait UNIQUEMENT une page en pure HTML juste poiur que tu comprennes ce que tu fais parce que là tu mélange tout en bidouillant.
Fait fonctionner des ancres dans une page HTML bidon et ensuite adapte ça à ton code PHP
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 100 Messages

03 janv. 2020, 11:56

bonjour @rthur,

ma classe class="liste" me permet d'afficher cote à cote 5 enregistrements, pour l'instant il y a 30 (fiches) enregistrements

Effectivement, je patauge
j'ai déjà modifié le # je pense qu'il est à sa bonne place
voici mon code :
$monchoix = pour le div id
et $monchoix02 pour le href

Code : Tout sélectionner

$monchoix = "#monchoix".$ligne["id"]; $monchoix02 = "monchoix".$ligne["id"]; echo'<div id="'.$monchoix02.'" class="liste"><li>'; echo'<p class="titrephoto">'.$ligne['titre'].'</p>'; echo'<img src="'.$repertoirephoto.$ligne['photo'].'" title='.$ligne['titre'].' /><p>'.$ligne['photo'].'</p>'; echo '</li> <li class="espacemini"></li> <li><a href="modification.php?dirmodif='.$ligne['id'].$monchoix.'#monchoix9" >Modification</a></li>'; echo'<li class="espacemini"></li> <li><a href="suppression.php?dirsuppr='.$ligne['photo'].'" onclick="return(confirm(\'Etes-vous sûr de vouloir supprimer '.$ligne['photo'].' ?\'));">Suppression</a></li> </div>';
merci beaucoup