[RESOLU] Problème redirection page de profil espace membres

Eléphanteau du PHP | 44 Messages

22 févr. 2020, 23:17

D'accord, merci!
Par contre par rapport à l'action d'un de mes formulaires j'ai un petit problème.
J'ai une page d'édition de profil assez grande, et mes messages d'erreurs s'affiche tout en bas. Du coup je pensais mettre un action="send" et une ancre name="#send" mais si le formulaire est bien rempli et qu'il n'y a pas de message d'erreur ça va du coup me renvoyer vers ma page de profil grâce à un header avec mes information modifié mais du coup l'url contiendra le #send à la fin, non ?

je sais aussi que je pourrais genre mettre l'affichage des messages d'erreurs tout en haut mais ça va casser la logique de mes autres formulaires... Et puis un message d'erreur en haut d'un formulaire c'est pas top... haha

Avatar du membre
Mammouth du PHP | 1609 Messages

22 févr. 2020, 23:39

C'est plutôt action="#send" et id="send".
Mais si tu veux pas avoir l'ancre dans la barre d'adresse après la redirection, il faudrait plutôt passer par du javascript pour gérer le scroll.
Une autre solution est de faire une redirection en html (tu envois bien une page au navigateur avec une balise meta et il redirige vers l'adresse définit dans la balise et là l'ancre est bien supprimée) :
echo '<meta http-equiv="refresh" content="1;URL=profil.php">';
// 1 = durée en seconde avant refresh, tu peux utiliser des valeurs décimales 0.1
exit();
Mais du coup ça fait une sorte de flash (une page blanche) juste avant la redirection. D'ailleurs tu pourrais faire un echo "Redirection vers l'espace membre..."; voir carrément faire un design pour la page Redirection... ^^

A toi de voir.
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 44 Messages

23 févr. 2020, 00:07

D'accord!
J'apprend énormément de choses grâce à toi ! :)

Pour ce qui concerne mon problème d'ancre je verrais pour mettre du javascript plus tard mais je vais laisser l'ancre en attendant.
Je passe le sujet en résolu du coup! Merci beaucoup! :)

Avatar du membre
Mammouth du PHP | 1609 Messages

23 févr. 2020, 00:33

Pour le js ça peut se faire simplement comme ça :
<script type="text/javascript">
window.onload = function() {
  document.getElementById('anchor-id').scrollIntoView(true);
};
</script>
Tu mets ça dans la page quand tu as une erreur et que tu veux que ça scroll, en remplaçant anchor-id par l'id de ton ancre (sans oublier de l'enlever de l'action du form). Comme ça pas d'ancre dans l'adresse.
Développeur web depuis + de 20 ans