Page 1 sur 1

Enpecher de poster un formulaire lors de la reactualisation

Posté : 11 juin 2007, 13:05
par badibad
Bonjour à tous voilla j'ai un formulaire avec deux champ qui ce reactualise par la metode $_post
 if ( ($_POST["mensualite"] && $_POST["mensualite"] == $row["valeur_mens"])  
    || (!$_POST["mensualite"] && $i==0) ){ 
        $montants_array = array();  
        $montants = explode(";" , $row["montants"]); //récup des montants séparés par ;  
        //construction du tableau source de la liste déroulante  
        foreach ($montants as $un_montant){  
            $montants_array[] = array('id' => $un_montant, 'text' => $un_montant);   
        }  
mais le probleme c'est que lors de la reactualisation de la page les erreur des autre champ du type nom prenom etc.. aparaise vu qu'elle ne sont pas remplis donc je voudrais

Sois cacher les erreur comme cela
if ($_POST) $error = false; 
mais ca ne marche pas

Sois enpècher le script d'aller plus loin
if ( isset($_POST["x"]) ) { 
mais ca aussi ca ne marche pas

Merci d'avance de votre aide

Posté : 11 juin 2007, 14:02
par Sékiltoyai
if ($_POST) $error = false; 
Cette ligne sera toujours vraie. Le tableau _POST est automatiquement créé par PHP, qu'il soit vide ou non.

Posté : 11 juin 2007, 14:02
par sadeq
Le problème est mal posé. En fait, badibad a un formulaire dans lequel il y'a plusieurs champs de saisie comme: nom, prénom etc...
et parmis eux il y'a 2 listes déroulantes dont une première présente un ensemble de mensualités relatives à un crédit et la seconde liste des montants relatifs à la mensualité choisie dans la promière liste.
Et finalement un bouton "submit" de validation du formulaire.

Le problème qui se pose est le suivant:
Quand la liste déroulante des mensualités change, un envoi (submit) est déclenché par l'évenement "onChange" et le programme doit donc se contenter de remplir la deuxième liste des montants sans vérifier tous les champs du formulaire, ce qui est malheusement le cas actuellement.

Pour information, le bouton submit de validation du formulaire est une image et quand il est appuyé il envoi le formulaire par la méthode POST. Il envoi son nom dans le postage sous la forme $_POST["x"] et $_POST["y"].

Conclusion: On veut que si le client clique sur le bouton de validation tous les champs du formulaire soit traités par le programme mais si c'est la liste mensualité qui en changeant envoi le submit, le programme ne doit pas valider tous les champs mais se contente de charger la deuxième liste selon le choix dans la première.

merci

Posté : 11 juin 2007, 14:06
par badibad
:D merci c'est vrai qu'avec toi c'est netement plus clair :) :D :D

Posté : 12 juin 2007, 00:04
par sadeq
En fait j'ai trouvé ça au début de ton code (que tu as posté ici http://www.phpfrance.com/forums/voir_sujet-29896-75.php):
...
// needs to be included earlier to set the success message in the messageStack
require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CREATEPOACCOUNT);

$process = false;
if (isset($HTTP_POST_VARS['action']) && ($HTTP_POST_VARS['action'] == 'process')) {
$process = true;
....
J'en ai compris qu'en fait ton programme valide les champs du formulaire si ce dernier lui envoi un champ caché nommé "action" qui vaut la valeur "process"
Alors, si tu veux résoudre ton problème de postage c'est dans cette partie du code qu'il faut agir. Et il faut vider le contenu du champ "action" si ce n'est pas le bouton submit qui a été le déclencheur du postage.
On peut faire ça car on sait que $_POST["x"] et $_POST["y"] sont les noms du bouton submit.

Voici donc ma proposition de changement :
// needs to be included earlier to set the success message in the messageStack
require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CREATEPOACCOUNT);

$process = false;

  //annuler l'action de validation si le bouton/image submit n'a pas été cliqué
  if (!$_POST["x"] && !$_POST["y"]) $HTTP_POST_VARS['action'] = null;

  if (isset($HTTP_POST_VARS['action']) && ($HTTP_POST_VARS['action'] == 'process')) {
    $process = true;

Apporte ces changements et vérifie si ça marche.

Je te rappelle que tu dois réviser ton code et éliminer les changements qui ne marchent pas et que tu as fait auparavant.

yyyyyyyyyooooooooooooouuuuuuupppppppyyyyyyyyy

Posté : 12 juin 2007, 00:21
par badibad
:D :D :D :D :D :D
t'est un genie ca marche je sais pas comment te remercier et n'oublie pas si tu passe vers chez moi je te payerai le reo avec plaisir je te doi au moins ca


merci mille et mille et mille foid j'ai enfin fini :D :D

a plus

probleme formulaire

Posté : 12 juin 2007, 15:24
par badibad
bonjour à tous je suis desoler je croit que j'ai crier victoire trop vite


je vient de m'apercevoir quand rajoutant
if (!$_POST["x"] && !$_POST["y"]) $HTTP_POST_VARS['action'] = null; 
ca me marquer plus les erreur d accors mais malheureusement en plus il m'accepte n'inporte quoi meme si les champ ne son pas remplis il sont accepter .

merci

Posté : 12 juin 2007, 23:22
par sadeq
Même si tu valides par le bouton submit ?

yyyyyyyyyooooooooooooouuuuuuupppppppyyyyyyyyy

Posté : 14 juin 2007, 15:26
par badibad
oupps desoler c'est de ma faut je viens de m'apercevoir que j'ai oublier d'enlever un ancien code


desoler de t'avoir deranger

et n'oublie pas le repas

a plus :D