Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/03/2007, 08h59   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 31
Points : 11
Points : 11
Par défaut Revenir sur une page à un endroit précis

Bonjour,

J'ai une page avec un formulaire (une dixaine de champs textes, menu déroulants, etc, etc).

Quand je soumets ce formulaire j'envoie tout sur une autre page (process.php) qui va dans un premier temps controler si ce qui a été saisie dans le formulaire précédent est correct.

En cas d'erreur, j'enregistre le message a afficher dans une variable ($mess_erreur) et je rappel ma page de formulaire en faisant un:

include("page_formulaire.php");
exit;

Mon problème n'est pas vraiment dans le fait d'afficher les messages d'erreur mais plutot de se placer à un endroit précis quand je rappel ma page formulaire en cas d'erreur.

Je m'explique. Sur la page des formulaire, il y a beaucoup de champs textes, menu déroulant, bouton radio, etc, etc.
En cas d'erreur, j'aimerai que lorsque je rappel la page des formulaire (via include), on se retrouve directement au niveau du champs qui pose problème et non pas en haut de la page.

Je prends un exemple avec par exemple le dernier champ texte (complètement en bas de la page). Si il y a une erreur sur ce champs, après avoir valider le formulaire, la page va donc être rechargé en indiquant qu'il y a une erreur. Par contre je vais me retrouver en haut de page alors que le champs en question est complètement en bas de page.

J'espère avoir été assez clair dans mes explications (pas simple à expliquer).
Merci d'avance
toffff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 09h28   #2
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 10 889
Points : 10 889
Il y a surement 2 solutions dont une trop dure a mettre en place :

- html avec des ancres (la solution assez difficile a gerer a travers les includes etc ...)

- Le focus en javascript (la plus simple a mon avis par contre je vais pas etre tres util dans ce domaine lol)
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 10h09   #3
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 33
Détails du profil
Informations personnelles :
Âge : 33
Localisation : Belgique

Informations forums :
Inscription : mars 2007
Messages : 33
Points : 36
Points : 36
Envoyer un message via MSN à sylvanillo Envoyer un message via Skype™ à sylvanillo
Aucun problème avec des balise A et des attributs NAME placés devant chaque champ de formulaire qui portent le même nom:
<a name='city'>
<select name='city'>
.
.
.

Lorsque tu construis l'erreur, ajoute l'ancre à la page page_formulaire.php:
page_formulaire.php#city
Le browser se charge lui-même de placer ce champ en haut du viewport de l'utilisateur.
sylvanillo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 10h13   #4
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 31
Points : 11
Points : 11
Je connais le principe mais je ne pensais pas qu'on pouvais ajouter l'ancre dans le cadre d'un include..

J'essais.

Merci
toffff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 10h17   #5
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
La solution du focus avec JS est bien plus ergonomique, le curseur de l'utilisateur se trouvant pile poil sur le champ à modifier.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 10h19   #6
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 31
Points : 11
Points : 11
C'est bien ce qu'il me semblait ca ne fonctionne pas.

Si je fais:
include("page_formulaire.php#city");

je recupère un message d'erreur:
Warning: main(page_formulaire.php#city): failed to open stream: No such file or directory in...........

J'avais déjà essayé.. Ca aurai fonctionné si j'avais fait un header:
header("location: page_formulaire.php#city");

Le problème c'est qu'en faisant un header, je ne récupère pas ce qui a été saisi dans les différents champs du formulaire précédement.

Citation:
La solution du focus avec JS est bien plus ergonomique, le curseur de l'utilisateur se trouvant pile poil sur le champ à modifier.
Ca fonctionne comment le focus en JS (je suis à la rue en JS ).
toffff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 10h34   #7
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Pareil je connais pas trop JS ça doit être un truc du style
Code :
document.getElementById('nom_du_champ').focus();
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 11h35   #8
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 31
Points : 11
Points : 11
J'essais.
Merci
toffff est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h16.


 
 
 
 
Partenaires

Hébergement Web