OVH Cloud OVH Cloud

comment faites vous... formulaires et validation...

2 réponses
Avatar
GrelEns
bonjour,

je suis confronte a la realisation d'un site comprenant bcp de formulaires,
et je suis a la recherche d'une solution elegante pour les prendre en
charge...

aussi je souhaiterai savoir comment vous vous y prenez pour creer des
formulaires en php, et valider les saisies avec les eventuels messages
d'erreurs adaptes (validation cote serveur, attention ici je ne suis pas
interesse par du javascript).

dans une certaine mesure je pensais creer des formulaires directement en
html et faire les includes dans des pages php, mais finalement meme pour les
valeurs par defaut et ou l'edition des precedentes saisies il faut rajouter
du code php qui recherche ces infos dans la base, au milieu du code html,
etc.
dans l'autre sens en utilisant une classe qui cree le formulaire avec ses
valeurs par defaut, c'est le code html qui se retrouve dans le code php et
la separation presentation / porgrammation ne me parait toujours pas
satisfaisante.

enfin voila je suis preneur de toutes vos idees, conseils, facons de voir
les choses...

merci.

2 réponses

Avatar
charly
Salut !

Je me suis posé la même question : voila en gros les grandes lignes de
ma solution :

je travaille avec des templates avec mes champs ainsi constitués:
<input type="text" name="NOM" maxlength="100" value="{NOM}">{err_NOM}

après je fais une boucle qui recherche tout ce qui se trouve entre les
{} et je remplace par le tableau de valeurs qui va bien (les cles du
tableau s'appellent comme les champs)

si je dois reafficher la page, je remplace les err_NOM par le msg qui va
bien et je remets les valuers dans les champs.

J'ai aussi développé un système de matrice pour vérifier les champs
genre 11 -> le bit 1 signifie champ obligatoire
bit 2 signifie email

=> je controle les 2 et en cas d'erreurs, je renvoie un tableau d'erreur
qui recherche les err_ et remplace par les msg ad-hoc

Tout se fait coté serveur, pas de javascript.

En espérant avoir répondu à ta question, je vais me coucher :)
Avatar
Nicklas
Le Fri, 13 Feb 2004 22:12:56 +0000, GrelEns a écrit :

bonjour,

je suis confronte a la realisation d'un site comprenant bcp de formulaires,
et je suis a la recherche d'une solution elegante pour les prendre en
charge...


J'utilise cette méthode sur mon site :
http://www.progweb.com
Les sources de mon site sont disponibles dans la section Projet.


Pour moi, le but est de contrôler par PHP les données, puis
de réafficher le formulaire pré-rempli avec les champs en
rouge et des messages d'erreurs.

Je sépare mon code PHP de mon code HTML.
Mais je n'utilise pas de système de template, je trouve que cela
ne sert à rien. PHP est lui-même un moteur de template...

<?php
// Je récupère les variables ; j'utlise la lib :
// http://www.progweb.com/modules/cours/consult.php?own=4&numR
$request->setMode(GET | POST);
$action = $request->List('action', array('add', 'sup', 'mod'));
$name = $request->Text('name');
$mail = $request->Mail('mail');
$birthday = $request->CheckDate('birthday', 'FR', '');
$url = $request->URL('url');

switch ($action) {
case 'add':
$flag = 0;

if (empty($name)) {
$error_name = true;
$flag = 1;
}

if (empty($mail)) {
$error_mail = true;
$flag = 1;
}

if (empty($birthday)) {
$error_birthday = true;
$flag = 1;
}

if ($flag == 1) {
$name = stripslashes($name);
$name = htmlentities($name);

$mail = stripslashes($mail);
$mail = htmlentities($mail);

$birthday = stripslashes($birthday);
$birthday = htmlentities($birthday);

$url = stripslashes($url);
$url = htmlentities($url);

$action = 'add';
}
else {
$birthday = $parse->date2en($birthday, '-');

$query = "INSERT INTO ....";
$result = mysql_query($query);

$action = 'addfin';
}

break;

default:
$url = 'http://';
}

include('page.html');
?>

Fichier page.html :

<? if ($action == 'addfin'): ?>
<p>Donnée ajoutée...
<? else: ?>
<? if (($action == 'add') && ($flag == 1)): >
<p>Veuillez corriger les champs en rouge...
<? endif; ?>

<form method='POST' action='page.php'>
<input type="hidden" name="action" value="add">
<p class="<?=getStyle($error_name)?>>Nom :
<input type="text" name="name" value="<?=$name?>">
<p class="<?=getStyle($error_mail)?>>Mail :
<input type="text" name="mail" value="<?=$mail?>">
<p class="<?=getStyle($error_birthday)?>>Naissance :
<input type="text" name="birthday" value="<?=$birthday?>">
<p class="<?=getStyle($error_url)?>>Page Web :
<input type="text" name="url" value="<?=$url?>"> <input type="submit"
name="Ajouter" value="Ajouter">
</form>
<? endif; ?>

--
Nicklas