Bonjour,
Pour éviter l'enregistrement de données vides dans une base Mysql, je souhaite vérifier qu'un champ input n'est pas vide et dans ce cas afficher un message d'erreur. Mais j'ai du mal à gérer l'articulation de ce système avec un submit faisant appel à un code JavaScript fermant automatiquement une fenêtre popup (self.close() ).
Si j'enlève le onsubmit="self.close();", mon système de contrôle fonctionne : si le champ imput qui est soumis est vide, j'ai bien le message d'erreur qui s'affiche et l'insertion dans ma base ne se fait donc pas. En revanche si je conserve le "self.close();" (pour, après la soumission, fermer automatiquement le popup contenant le formulaire), mon système de contrôle est inopérant : le message d'erreur n'est pas visible (le popup se fermant) et l'insertion des données vides se fait dans la base.
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 <form action="" method="POST" onsubmit="self.close();" > <p> <?php echo '<input type="hidden" name="value4" id="value4" value="'.$value4.'" />'; ?> <br /> <input type="text" name="text4" id="text4" /> <br /> <input type="submit" name="ajouter" value="Ajouter" /> <?php if(isSet($_POST["ajouter"])) { $msg_erreur = "Champ obligatoire : "; $message = $msg_erreur; if (empty ($_POST['text5'])) $message .= "Le nouveau contributeur <br/>"; if (strlen($message) > strlen($msg_erreur)) { echo '<br/>'.$message; } else { // insertion dans la base de données $text5=trim(mysql_real_escape_string($_POST['text5'])); $text5 = explode(", ", $text5); $add5 = sprintf('INSERT INTO contributeurs (nom_contributeur,prenom_contributeur) VALUES ("'.ucfirst($text5[0]).'", "'.ucfirst($text5[1]).'")'); $result = mysql_query($add5, $db) or die(mysql_error()); } } ?> </p> </form>
Dans ces conditions, comment adapter mon code pour arriver à ce résultat :
- Non déclenchement du onsubmit="self.close();" si le champ input est vide : dans ce cas le message d'erreur s'affiche, l'insertion des données ne se fait pas et le popup contenant le formulaire reste ouvert.
- A l'inverse déclenchement du onsubmit="self.close();" si le champ input est rempli : dans ce cas pas de message d'erreur, l'insertion des données se fait et le popup contenant le formulaire se ferme.
Voyez-vous comment arriver au résultat escompté ? Merci d'avance.
Partager