Bonjours à tous et à toutes,
Je suis bloqué depuis quelque temps sur ce script que je n'arrive aps à continuer.
Mon but est de pouvoir géré automatiquement un formulaire sans devoir retaper tout le code systématiquement, c'est pour ca que j'ai opté pour une class Form (je ne sias pas si c'est une bonne idée lol).
Enfin Voici tout d'abord le code que j'utilise pour ems bouton:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 /* ----------------------------------------------------------------------------- ******************************* CHAMP DE TEXTE ******************************* ------------------------------------------------------------------------------ */ function textfield($name, $value = FALSE, $size = '', $maxlength = '') { if ($value) { array_key_exists($name, $value); } $value = $value[$name]; return '<input type="text" name="'.htmlentities($name).'" size="'.$size.'" maxlength="'.$maxlength.'" value="'.$value.'">'; } /* ----------------------------------------------------------------------------- ******************************* CHAMP DE PASSWORD ******************************* ------------------------------------------------------------------------------ */ function pswdfield($name, $value = FALSE, $size = '', $maxlength = '') { if ($value) { array_key_exists($name, $value); } $value = $value[$name]; return '<input type="password" name="'.htmlentities($name).'" size="'.$size.'" maxlength="'.$maxlength.'" value="'.$value.'">'; } /* ----------------------------------------------------------------------------- ******************************** BOUTON SUBMIT ******************************* ------------------------------------------------------------------------------ */ function button($name, $label) { return '<input type="submit" name="'.htmlentities($name).'" value="'.htmlentities($label).'">'; }
Ensuite voici le code que j'ai fait pour la class :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 class Form { var $table; // Affiche le formulaire function view() { // Si aucune donnée n'a été soumises au server, // on affiche le formulaire dans un tableau if (!$_POST) echo '<form enctype="multipart/form-data" action="'.$_SERVER['PHP_SELF'].'" method="post"><table>'; foreach ($this->table as $name => $value) { foreach ($value as $id => $btn) { echo "<tr><td>".ucfirst($name)."</td><td>".$btn."</td></tr>"; } } echo "<tr><td> </td><td>".button('submit', 'Envoyer')."</td></tr>"; echo '</table></form>'; } // Vérifie si les données soumises sont correctes function check() { // Si des données sont soumisent, on réaffiche le formulaire // s'il y'a des erreurs if ($_POST) { foreach ($this->table as $name => $value) { foreach ($value as $id => $btn) { // On récupère les variables du style $pseudo = xxx, ... $$id = $_POST[$id]; $defauts = array(); $defauts[$id] = $_POST[$id]; } } $error = array(); // On vérifie les champs du formulaire if (isset($password) && empty($password)) { $error['password'] = "Vieillez saisir un mot de passe"; } if (count($error)) { echo "Vieillez corriger les erreurs suivantes."; echo '<form enctype="multipart/form-data" action="'.$_SERVER['PHP_SELF'].'" method="post"><table>'; foreach ($this->table as $name => $value) { foreach ($value as $id => $btn) { if (!empty($error[$id])) { $error[$id] = $error[$id]; } else { $error[$id] = ''; } echo "<tr><td>".ucfirst($name)."</td><td>".$btn.'</td><td>'.$error[$id].'</td></tr>'; } } echo "<tr><td> </td><td>".button('submit', 'Envoyer')."</td></tr>"; echo '</table></form>'; } } else { $this->view(); } } }
Et voici comment je cree un formulaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $form = array ('Identifiant' => array('pseudo' => textfield('pseudo', $defauts)), 'Mot de passe' => array('password' => pswdfield('password', $defauts)), 'Email' => array('email' => textfield('email', $defauts)), ); $f = new Form; $f->table=$form; $f->check();
Voila le bug se trouve dans la fonction check(), je ne sais absolument pas du tout comment il faut que je m'y prenne pour afficher les donnée saisies par l'utilisateur lors de la vérifications des données. La vérification se fait normalement mais les données ne se réaffiche pas dans les champs de texte si ya une erreurs.
Je suis conscient que je demande beacoup. Mais si on poouvais me donner des idées pour que je puisse avancer un peu.
Partager