PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 26-01-2010 11:10:22

oliv73
Membre
Inscription : 26-01-2010
Messages : 4

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

[Résolu]
(pas réussi à changer le titre du post)

Bonjour chers PHP-ticien(ne)s,

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 (non sans peine !).

MAIS : ma page est longue (pas le choix...) donc au rechargement, il faut descendre pour faire apparaître le fomulaire. 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"); => l'ancre fonctionne, mais 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é la même chose, mais en décalant la ligne ci-dessus SOUS mon formulaire (= je réouvre php pour terminer le if avec ce header...); mais le header se retrouve après du HTML : pas bon.
- J'ai essayé avec : //echo'<meta http-equiv=\"refresh\" content=\"0; url=mapage.php#ancre_formulaire" />' => le navigateur renvoie une erreur 500. Mauvaise syntaxe ?

ET je ne peux pas compter sur l'utilisation de Javascript chez l'utilisateur...

D'avance, grand merci !
Oliv73

Dernière modification par oliv73 (27-01-2010 11:20:08)

Hors ligne

#2 26-01-2010 15:56:38

Maskime
Membre
Lieu : Paris 15ème
Inscription : 11-05-2009
Messages : 134
Site Web

Re : [Résolu] afficher erreurs formulaire sans remonter en haut de page

Hello,

Mon humble avis est que tu devrais faire les vérifications de ton formulaire avec de l'AJAX.
A savoir que lorsque ton utilisateur clique sur le bouton "Envoyer", ça va appeler un fonction JS qui va envoyer le contenu des champs de ton formulaire à script PHP qui va valider que toutes les informations sont présentes/cohérentes.
Après lors de la soumission du formulaire en elle même ton PHP refera les tests (tu n'es pas à l'abris que l'utilisateur ai désactivé le JS de son navigateur) et si y a une erreur tu le renvoie sur le formulaire en haut de page avec un texte : "Veuillez vérifier les champs indiqués en Erreur" et là l'utilisateur prendra le temps de scroller pour trouver le champs en erreur.

Parce que les ancres c'est bien pour quand tu fais un Dictionnaire ou une liste de mots, parce que du coup le mot est vraiment sous la barre d'adresse du navigateur, ce qui aide vraiment à la lecture. Dans le cas d'un formulaire tu vas le perturber, il comprendra pas forcément qu'il a été renvoyé sur le même formulaire...

Si tu as des question sur comment réaliser le mécanisme indiqué plus haut, pose les smile


La programmation est composée de 80% de réflexion pour 20% de syntaxe -> réfléchissez à votre problème par étapes

Recommande l'utilisation du pattern Singleton
Si jamais je poste un morceau de code pour vous aider, prenez bien compte que je n'ai pas forcément testé le code que je poste et qu'il est possible qu'il contienne des erreurs wink

Hors ligne

#3 26-01-2010 16:52:56

oliv73
Membre
Inscription : 26-01-2010
Messages : 4

Re : [Résolu] afficher erreurs formulaire sans remonter en haut de page

Bonjour Maskime,

Merci pour cette réponse rapide, précise et soignée.

Il y a un "petit" obstacle à utiliser AJAX : j'en connais tout juste le nom ! Alors ce ne sont pas des questions que je te poserais, mais un cours qu'il me faudrait wink.
Quant à Javascript, c'était exactement le fait que l'utilisateur puisse le désactiver, qui m'a obligé à effectuer un contrôle (+ une sécurisation grâce à htmlentities et strip_tags) côté serveur. Du coup la vérification côté client était redondante.
Perturber mon visiteur en le redirigeant sur le formulaire ? Peut-être... si tu veux te faire une opinion c'est par ici : http://XXX

Par contre pourquoi ne pas afficher un message en tête de page, effectivement Maskime : ça je sais faire. C'est une solution pour l'ergonomie, qui respecte la sécurité.

Appel au bon peuple  : ça doit quand même être possible d'envoyer sur une ancre avec PHP, en laissant s'exécuter les balises PHP en aval de cette ancre ?
"header(location " ferait-il perdre les variables ? Une autre commande existerait-elle ? (C'est pas faute d'avoir cherché...)

Merci encore !

Dernière modification par oliv73 (27-01-2010 08:33:19)

Hors ligne

#4 26-01-2010 17:27:50

Maskime
Membre
Lieu : Paris 15ème
Inscription : 11-05-2009
Messages : 134
Site Web

Re : [Résolu] afficher erreurs formulaire sans remonter en haut de page

Hello,

Bon je vois mieux pourquoi est ce que tu veux utiliser ton ancre, maintenant que j'ai vu la page smile

La raison pour laquelle tu perds le remplissage de tes champs :
J'imagine que dans le value de tes champs tu fais un truc du genre <?php echo @$_POST['nom_du_champs']; ?>
Or lorsque tu fais un header('Location:...'); Ton navigateur va recharger la page sans re-soumettre les posts de ton formulaire => du coup les posts sont vides => du coup plus de valeur de champs

Essaye de mettre directement l'ancre dans l'action du formulaire :
<form action='metamis.php#ancre_formulaire'...

Comme ça si y a une erreur tu es déjà sur la page de formulaire et tu seras bien renvoyé à ton ancre.
SI pas d'erreur j'imagine que tu dois renvoyer vers une page genre "Merci....".

Dis moi ce que ça donne wink


La programmation est composée de 80% de réflexion pour 20% de syntaxe -> réfléchissez à votre problème par étapes

Recommande l'utilisation du pattern Singleton
Si jamais je poste un morceau de code pour vous aider, prenez bien compte que je n'ai pas forcément testé le code que je poste et qu'il est possible qu'il contienne des erreurs wink

Hors ligne

#5 27-01-2010 08:37:35

oliv73
Membre
Inscription : 26-01-2010
Messages : 4

Re : [Résolu] afficher erreurs formulaire sans remonter en haut de page

Grand bonjour, Maskime !

Génial, tu es génial ! wink
Ta solution de mettre directement l'ancre dans l'action du formulaire est exactement ce que je cherchais ! Ça marche nickel. big_smile
Dire que j'ai cherché deux jours...
Merci, grand merci !

Très bonne journée à toi.

(Je vais essayer de marquer ce post comme résolu)

Dernière modification par oliv73 (27-01-2010 10:12:09)

Hors ligne

#6 27-01-2010 10:08:53

Maskime
Membre
Lieu : Paris 15ème
Inscription : 11-05-2009
Messages : 134
Site Web

Re : [Résolu] afficher erreurs formulaire sans remonter en haut de page

Je vais dire à ma nana que tu penses comme elle,

Elle sera rassurée de pas être la seule big_smile

Bonne journée.


La programmation est composée de 80% de réflexion pour 20% de syntaxe -> réfléchissez à votre problème par étapes

Recommande l'utilisation du pattern Singleton
Si jamais je poste un morceau de code pour vous aider, prenez bien compte que je n'ai pas forcément testé le code que je poste et qu'il est possible qu'il contienne des erreurs wink

Hors ligne

#7 27-01-2010 10:15:39

oliv73
Membre
Inscription : 26-01-2010
Messages : 4

Re : [Résolu] afficher erreurs formulaire sans remonter en haut de page

Avant que tu n'attrappes la grosse tête lol
comment faire pour marquer ce post comme résolu, STP ?

Hors ligne

#8 27-01-2010 10:17:34

Maskime
Membre
Lieu : Paris 15ème
Inscription : 11-05-2009
Messages : 134
Site Web

Re : [Résolu] afficher erreurs formulaire sans remonter en haut de page

Tu modifies ton premier post et il me semble que tu peux changer le titre du post et rajouter un [Résolu] au début.
Sinon tu laisse tel quel on a l'habitude smile


La programmation est composée de 80% de réflexion pour 20% de syntaxe -> réfléchissez à votre problème par étapes

Recommande l'utilisation du pattern Singleton
Si jamais je poste un morceau de code pour vous aider, prenez bien compte que je n'ai pas forcément testé le code que je poste et qu'il est possible qu'il contienne des erreurs wink

Hors ligne

Pied de page des forums