Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/02/2011, 21h14   #1
Membre du Club
 
Inscription : janvier 2010
Messages : 206
Détails du profil
Informations personnelles :
Âge : 37

Informations forums :
Inscription : janvier 2010
Messages : 206
Points : 52
Points : 52
Par défaut Vérifier si un champ input est vide

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() ).

Code :
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>
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.

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.
almoha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 21h34   #2
Membre régulier
 
Inscription : novembre 2010
Messages : 102
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 102
Points : 86
Points : 86
Salut,

Code :
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
<script type="text/javascript">
if ( document.getElementById("value4").value=="")
{
alert("Remplissez tous les champs svp.");
}
else
{
self.close();
envoyer.submit();
}
</script>
 
<form action="" name="envoyer" method="POST" >
 
<p>
<?php
echo '<input type="hidden" name="value4" id="value4" value="'.$value4.'"  />';
?>
<br />
<input type="text" name="text4" id="text4" />
<br />
 
<input type="button" name="ajouter" onclik="valider" 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>
En magouillant un peu ça devrais marcher.
Soull est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2011, 10h13   #3
Membre du Club
 
Inscription : janvier 2010
Messages : 206
Détails du profil
Informations personnelles :
Âge : 37

Informations forums :
Inscription : janvier 2010
Messages : 206
Points : 52
Points : 52
Merci pour ton code. Mais je suis arrivé au résultat escompté simplement en insérant un code javascript self.close() dans mon else au lieu de mettre un onsubmit au niveau du form.
almoha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h33.


 
 
 
 
Partenaires

Hébergement Web