[Résolu] afficher erreurs formulaire sans remonter haut page

Petit nouveau ! | 2 Messages

26 janv. 2010, 14:06

Bonjour ô maîtres PHP,

J'ai un formulaire. Si les tests sur les champs de mon formulaire renvoient des erreurs, le-dit formulaire est réaffiché avec les données de l'utilisateur. Les champs présentant une erreur sont mis en valeur par un changement de CSS. Ça fonctionne (enfin !).

MAIS : ma page est longue (pas le choix...) donc au rechargement, il faut descendre pour faire apparaître le formulaire. L'utilisateur ne verra donc pas qu'il y a une erreur.

- J'ai essayé de rediriger vers une ancre avec un
header("location: ../mapage.php#ancre_formulaire");
placé à la fin du contrôle => l'ancre fonctionne, mais alors le message d'alerte ne s'affiche plus et le formulaire ne se remplit plus (comme si le php n'était pas lu après l'ancre).

- J'ai essayé avec : //echo'<meta http-equiv=\"refresh\" content=\"0; url=mapage.php#ancre_formulaire" />' => le navigateur renvoie une erreur 500. Mauvaise syntaxe ?

Ça vous inspire quelque chose ?

PS : Je ne peux pas utiliser Javascript (sinon ce serait peut-être plus simple ?)...
Modifié en dernier par oliv73 le 27 janv. 2010, 15:19, modifié 1 fois.

ViPHP
AB
ViPHP | 5818 Messages

26 janv. 2010, 15:00

Y'a pas de raison que parce que tu utilises une ancre cela modifie en quoi que se soit le reste du code.
Si tu peux donner un exemple basique de ton code (pas tout le code juste le formulaire avec la fonction qui vérifie le remplissage des champs et celle qui change le css) on pourrait en savoir plus.

Sinon tu peux faire le contrôle en javascript mais si les champs sont importants, javascript étant désactivable par le visiteur, il faudra refaire un contrôle de sécurité en php.
Les contrôles JS sont à considérer comme un confort pour le visiteur qui n'a pas besoin de soumettre le formulaire avant de voir et erreurs, et cela permet également d'économiser des requêtes inutiles du serveur si formulaire incomplet, mais c'est toujours à compléter par un contrôle php.

Sinon sur le principe, au cas où l'ancre ne fonctionnerait pas (ce qui peut arriver) en plus de colorer les champs je ferais afficher un message en haut de page pour indiquer que le fonctionnaire doit être compléter.

Eléphant du PHP | 168 Messages

27 janv. 2010, 12:39

Pour l'erreur 500 c'est une erreur de serveur, si tu travailles en local ton serveur est peut-être mal configurer.
Aussi un header location doit être appelé avant toute balise html à l'image de la fonction session-start()

Petit nouveau ! | 2 Messages

27 janv. 2010, 15:19

Bonjour AB et Jojo 1000,

Merci pour vos réponses. Tout à fait Javascript est désactivable, le contrôle côté serveur est donc nécessaire.

Grâce à un autre forumeur, mon problème est résolu : il suffisait de mettre directement l'ancre dans l'action du formulaire :
<form action='metamis.php#ancre_formulaire'... :lol:

Aussi bête que ça ! Un peu vexant même pour le débutant que je suis :oops: J'ai tellement cherché que je ne suis pas près d'oublier cette solution !

Merci encore pour vos contributions et j'espère humblement que ce post pourra servir à d'autres !
Oliv73