Php

jalalnet Messages postés 293 Date d'inscription   Statut Membre Dernière intervention   -  
jalalnet Messages postés 293 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai un formulaire avec des champs puis le fichier php qui traite les donné avant l enregistrement dans la BDD j'ai utlisé les regex (expression régulière) pour cela .
la je voudrait savoir comme afficher les msg d'erreur au dessus de chaque champs dans la form si les données saisie ne convient pas mes règles

A voir également:

2 réponses

Kopros Messages postés 595 Date d'inscription   Statut Membre Dernière intervention   89
 
Utilise une variable qui n'aura que deux valeurs (par exemple "0" si l'ensemble du formulaire est valide, "1" sinon). Tu l'initialises à 0. Pour chaque champ formulé, si ce n'est pas bon tu passes ta variable à 1.

A la fin, si la variable est à 1, tu renvoies sur la page formulaire. Si elle est restée à 0, fais les enregistrements dans la BDD avant de rediriger.

Sinon pour tout ce qui est message d'erreur et renvoi de données, perso j'aime bien utiliser un array dans une variable de session. Mais un bout de code vaut mieux qu'un long discours (et un c/c va m'éviter de dire des bêtises^^). Dans ta page php :

//fonction de redirection, + pratique que header
function redirige($url)
{
	die('<meta http-equiv="refresh" content="0;URL='.$url.'">');
}

// Récupération des données
// Validation :
// 0 -> la donnée est valide
// 1 -> la donnée n'est pas valide
$data_form = array(
'mNom' => '&nbsp;',
'mPrenom' => '&nbsp;',
'nom' => array(0,$_POST['nom']),
'prenom' => array(0,$_POST['prenom'])
);

// Validation de tout le formulaire
$form_valid=0;

// test regex
if ([le champ n'est pas valide]){
$form_valid=1;
$data_form['nom'][0]=1;
$data_form['mNom']='Le nom ne semble pas valide';
}

//meme chose pour les autres champs, je ne mets pas le code


// Redirection
if ($form_valid==1){
        //on envoit toutes les données dans une variable de session
	$_SESSION['data_form']=$data_form;
	redirige('tonFormulaire.html');
}



et dans ta page html tu fais un div que tu places bien avec le css, et dedans tu mets ton message :

<div class="erreur">
<?php if($_SESSION['data_form']['nom'][0]==1) echo $_SESSION['data_form']['mNom'];?>
</div>


sans oublier de remettre les données saisies dans les input, c'est mieux pour l'utilisateur :

<input type="text" name="nom" value="<?php echo $_SESSION['data_form']['nom'][1]; ?>" />



Voilà pour l'idée de base. Ca demande à être complété, par exemple avec un système d'affichage de coches et de croix pour les champs valides ou non.
0
jalalnet Messages postés 293 Date d'inscription   Statut Membre Dernière intervention   10
 
merci trop sympa de ta part
je vais essayé demain tout ça
bonne nuit
0