Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
538 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Comment faire une gestion avancée d'erreurs de saisies

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment faire une gestion avancée d'erreurs de saisies

n°1345773
PedroBD
Posté le 13-04-2006 à 10:12:43  profilanswer
 

Bonjour,
 
J'ai un formulaire de saisie qui contient plusieurs champs et listes déroulantes. Quand je clique sur submit, j'appelle une seconde page qui insère les données dans la base. Normal jusque là.
 
Dans le cas d'une erreur de saisie (ex: si un des champs existe déjà dans la base ou est vide) je voudrais à la fois afficher un message d'erreur dans le formulaire de saisie et réafficher les champs et valeurs des listes déroulantes déjà saisis (ou selectionnés).
La solution qui me parait la plus évidente:
Dans la page d'insertion, créer un petit formulaire sans submit qui renvoie les valeurs entrées (ou sélectionnées) depuis la page d'insertion vers la page de saisie et qui transmette aussi un message d'erreur style "Au moins un des champs n'est pas rempli".  
 
Si tout ça vous parait pas trop clair, en gros j'aurais voulu faire une sorte de:
$erreur="Au moins un champ n'est pas rempli".$_POST['champ1'].$_POST['champ2']....
header("Location:Formulaire_saisie.php?message=".$erreur);
 
Cette solution ne me permet pas de récupérer séparemment les variable postées et d'ailleurs je sais même pas si elle marche. C'est pour ça que j'ai pensé à un formulaire sans submit, mais je sais pas faire là...
 
Une idée, quelqu'un?
 
Merci.

mood
Publicité
Posté le 13-04-2006 à 10:12:43  profilanswer
 

n°1345777
misterping​uin
Posté le 13-04-2006 à 10:21:51  profilanswer
 

si tu tiens à passer par deux pages séparées, tu as le choix entre revenir en arriere avec un header, ou un formulaire auto-envoyé via javascript
 
mais le plus simple pour ce que tu veux faire c'est de rester sur la meme page, et de n'en changer que lorsque tu formulaire est ok
 
un schéma du genre :
 
page1.php : formulaire
page1.php : traiter le formulaire, controle et enregistrement bdd si ok
page2.php : tu arrives dessus quand tout est ok

n°1345786
PedroBD
Posté le 13-04-2006 à 10:31:07  profilanswer
 

Merci de ta réponse.
 
Comment contrôler les valeurs que l'on est en train de saisir par javascript; c'est un truc que j'ai cherché sur les forums, mais j'ai pas trouvé grand chose.
 
Sinon, tu sais comment on fait des formulaires "autosubmit" ou qui se valident tout seuls au bout de quelques secondes?

n°1345788
hardrog
Play it fucking loud !!
Posté le 13-04-2006 à 10:33:35  profilanswer
 

Citation :

Comment contrôler les valeurs que l'on est en train de saisir par javascript


Quel genre de contrôle tu veux faire?

n°1345791
PedroBD
Posté le 13-04-2006 à 10:39:21  profilanswer
 

Ben si il y a des champs vides quand on valide la saisie un ptit javascript qui affiche une ptite fenêtre et dise "C'est pas bien, tel ou tel champ n'est pas rempli".

n°1345800
olivthill
Posté le 13-04-2006 à 10:50:28  profilanswer
 

Je suis d'accord avec misterpinguin. Il est préférable de rester dans la même page tant qu'elle n'est pas bonne ou abandonnée.
 
Mon algorithme :
 

 

if (isset($_POST['Bouton_OK']) {
 
   // Récupère toutes les données
   $val_champ1 = $_POST['champ1']);
   $val_champ2 = $_POST['champ2']);
   $val_champ3 = $_POST['champ3']);
   ...
 
   // Controle toutes les saisies
   $msg_erreur = "";
   controle_champ1($msg_erreur); // rempli $msg_erreur si pb
   if ($msg_erreur == "" )
      controle_champ2($msg_erreur);
   if ($msg_erreur == "" )
      controle_champ3($msg_erreur);
   ...
 
   // Tente de mettre à jour la base
   if ($msg_erreur == "" )
      maj_base($val_champ1, $val_champ2, ..., $msg_erreur);
 
   // Fin de la validation
   if ($msg_erreur != "" ) {
      // Erreur trouvée
      affiche_msg_erreur($msg_erreur);
      // Réaffiche la page avec toutes les données précédemment remplies
      affiche_page($val_champ1, $val_champ2, ...);
   }
   else {
      // Tout est OK, passe à la suite
     affiche_page_suivante();
}
else {
   // Premier affichage avec les valeur par défaut
   affiche_page("", "", ...);
}

 

n°1345810
olivthill
Posté le 13-04-2006 à 10:59:11  profilanswer
 

Avant l'envoi du formulaire au serveur, on peut faire quelques controles élementaires (champs non vides, bonne taille, etc) :

<html>
<head>
<script language=javascript>
function ValidateForm(){
   var champ1=document.frmSample.champ1
 
   if ((champ1.value==null)||(champ1.value=="" )){
     alert("Champ1 obligatoire, saisir une valeur." )
     champ1.focus()
     return false
   }
   return true
}
</script>
</head>
<body>
<form name="frmSample" method="post" action="page.php" onSubmit="return ValidateForm()">
<p>champ1 :  
<input type="text" name="champ1">
<p>  
<input type="submit" name="Submit" value="Submit">
</form>
</body>
</html>


Message édité par olivthill le 13-04-2006 à 11:03:05
n°1345821
PedroBD
Posté le 13-04-2006 à 11:06:28  profilanswer
 

Merci de vos réponses.
 
Une dernière question quand même: Vous savez comment poster des valeurs à un autre formulaire sans submit?
 
Je vais en faire un nouveau sujet je pense parce que la question n'a plus rien à voir, mais si vous savez, c'est cool.
 
En fait je voudrais poster des valeurs d'un formulaire à un autre sans bouton, automatiquement.
 

n°1345823
cinocks
Posté le 13-04-2006 à 11:07:28  profilanswer
 

PedroBD a écrit :

Bonjour,
 
J'ai un formulaire de saisie qui contient plusieurs champs et listes déroulantes. Quand je clique sur submit, j'appelle une seconde page qui insère les données dans la base. Normal jusque là.
 
Dans le cas d'une erreur de saisie (ex: si un des champs existe déjà dans la base ou est vide) je voudrais à la fois afficher un message d'erreur dans le formulaire de saisie et réafficher les champs et valeurs des listes déroulantes déjà saisis (ou selectionnés).
La solution qui me parait la plus évidente:
Dans la page d'insertion, créer un petit formulaire sans submit qui renvoie les valeurs entrées (ou sélectionnées) depuis la page d'insertion vers la page de saisie et qui transmette aussi un message d'erreur style "Au moins un des champs n'est pas rempli".  
 
Si tout ça vous parait pas trop clair, en gros j'aurais voulu faire une sorte de:
$erreur="Au moins un champ n'est pas rempli".$_POST['champ1'].$_POST['champ2']....
header("Location:Formulaire_saisie.php?message=".$erreur);
 
Cette solution ne me permet pas de récupérer séparemment les variable postées et d'ailleurs je sais même pas si elle marche. C'est pour ça que j'ai pensé à un formulaire sans submit, mais je sais pas faire là...
 
Une idée, quelqu'un?
 
Merci.


 
 
Le formulaire et la validation sont dans la meme page.
Si les variables POST n'existent pas, tu affiches le formulaire.
Si les variables POST existent, tu les controles une à une, en conservant le contenu et les erreurs reperées.
S'il n'y a pas d'erreur, tu traites le formulaire.
S'il y a des erreurs, tu affiches les erreurs et le formulaire avec les champs preé-renseigné du contenu saisi precedement.


---------------
MZP est de retour
n°1345835
misterping​uin
Posté le 13-04-2006 à 11:17:55  profilanswer
 

PedroBD a écrit :

Merci de vos réponses.
 
Une dernière question quand même: Vous savez comment poster des valeurs à un autre formulaire sans submit?
 
Je vais en faire un nouveau sujet je pense parce que la question n'a plus rien à voir, mais si vous savez, c'est cool.
 
En fait je voudrais poster des valeurs d'un formulaire à un autre sans bouton, automatiquement.


 
tu ne peux pas envoyer un formulaire sans submit, qu'il soit déclenché par un bouton submit ou un en javascript
 
en php tu peux avec la fonction header() créer une requete post, mais c'est plus compliqué et sans intéret dans ton cas

mood
Publicité
Posté le 13-04-2006 à 11:17:55  profilanswer
 

n°1346199
PedroBD
Posté le 13-04-2006 à 16:08:12  profilanswer
 

Merci de ta réponse. La solution formulaire.submit() en javascript (qui m'a été données dans le sujet que j'ai posté après) marche très bien.
 
Le seul pb c'est qu'on est pas redirigé vers la page juste après le submit, le php s'execute d'abord sur toute la page. Donc ça peut poser des pb. Mais je pense qu'avec un exit; juste après le javascript ça doit être bon!

n°1346253
cinocks
Posté le 13-04-2006 à 16:43:05  profilanswer
 

Puis, il ne faut pas compter  sur le javascript pour faire des controles. Pense à la personne qui le desactive et c'est fini.


---------------
MZP est de retour
n°1346322
PedroBD
Posté le 13-04-2006 à 17:38:47  profilanswer
 

Ouais mais à ce moment là, y a plein de trucs qu'on peut plus faire. Rien que cliquer sur un bouton depuis IE pour être redirigé sur une autre page devient compliqué! A part en faisant un <FORM> bien sûr...

n°1346327
cinocks
Posté le 13-04-2006 à 17:40:42  profilanswer
 

Bah oui, mais tu cherches a faire un site utilisable par tout le monde, ou bidouiller? Pourquoi vouloir mettre des boutons si ce n'est que pour rediriger, un lien suffit :??:


---------------
MZP est de retour
n°1346343
PedroBD
Posté le 13-04-2006 à 17:58:08  profilanswer
 

C'est un site pour une entreprise, donc je pense qu'utiliser le javascript c'est quand même plus confortable.

n°1346378
Sve@r
Posté le 13-04-2006 à 18:54:27  profilanswer
 

PedroBD a écrit :

C'est un site pour une entreprise, donc je pense qu'utiliser le javascript c'est quand même plus confortable.


Oui mais on peut shunter tes contrôles javascript
Il suffit de :
1) afficher le source de ton formulaire et l'enregistrer chez-soi
2) modifier sa copie pour que les liens et/ou submit partent bien chez-toi mais en enlevant la partie "contrôle javascript"
 
Moi, mes formulaires sont toujours en php et pointent toujours vers $_SERVEUR["PHP_SELF"].
Mais quand la page est rappelée, les champs remplis au coup d'avant et qu'elle récupère lors de son rechargement passent par toute une série de vérification avant d'être validés ou refusés. Et comme la page finit par le formulaire, tant que c'est pas bon l'internaute revient toujours au formulaire ...

n°1346404
cinocks
Posté le 13-04-2006 à 19:31:38  profilanswer
 

PedroBD a écrit :

C'est un site pour une entreprise, donc je pense qu'utiliser le javascript c'est quand même plus confortable.


Et la methode que je t'ai donné ne te convient pas. Pourtant elle ne necessite pas de se faire chier avec des redirection tordue en javascript. Vu que c'est pour une entreprise, autant que ce soit propre.  [:payzan]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Comment faire une gestion avancée d'erreurs de saisies

 

Sujets relatifs
Excel gestion stock inventaireGestion caddie avec Access / Excel
debutant: gestion de la mémoireModule de gestion de news
Gestion de planning open sourceDialogué avec un gbf avec une interface rs 232 en gestion rts/cts
Gestion d'erreurs en VBSCRIPT[réseau / Delphi] analyser traffic HTTP || gestion des evenements
Gestion automatique d'un jour particulier du mois en perl 
Plus de sujets relatifs à : Comment faire une gestion avancée d'erreurs de saisies


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR