Controler si un champ TEXT est vide ou pas
slt;
j'ai effectué la fonction suivante:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
<SCRIPT language="JavaScript">
<!--
function controle()
{
var contenu=document.form.coefficient.value;
if(contenu=='')
{
alert('Le champ ne peut pas rester vide !! Veuillez introduire votre formule de calcul');
document.form.coefficient.focus();
}
else
{
document.form.method = "get";
document.form.action = "res1.php";
document.form.submit();
}
}
//-->
</script> |
mais en appliquant je vois que le else fonctionne mais le if non :( c'est à dire méme si la champ est vide la rediretion se fait !! :(
controler si un champ TEXT est vide
oui mon formulaire c'est: form et le champ TEXT c'est: coefficientn mais toujour ça ne fonctionne pas méme avec
Code:
1 2 3 4 5 6
|
if(document.form.coefficient.value =="")
{
alert('Le champ ne peut pas rester vide !! Veuillez introduire votre formule de calcul');
document.form.coefficient.focus();
} |
:(
controler si un champ TEXT est vide
oui ça fonctionne mais dans les 2 cas, que ce soit vide ou rempli la fonction affiche 'rempli' car vous avez mis si le champ="" alors afficher champ vide sinon afficher remplir !!! il ya une erreur dans le else !
moi je veux s'il est vide afficher veuillez remplir si ça est rempli passer à la page res1.
controler si un champ TEXT est vide
:(:(:(:(:(
Mais je ne sais pas pourquoi toujours c'est le else qui s'exécute dans toute les cas que se soit champ vide ou rempli :(
controler si un champ TEXT est vide
ah peut être ça ne s'exécute pas puisque j'ai plusieurs champs text avec le même nom coefficient ?!!!
car la balise:
Code:
<input type=text name=coefficient>
est mise dans une boucle while !!
controler si un champ TEXT est vide
ceque je suis en train de faire c'est de citer les nom des cours qui existent dans ma base de données et devant cahque nom créer un champ TEXT pour que l'utilisateur saisie le coefficient.
Donc ma fonction JS c'est(mise au <head>):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
<SCRIPT language="JavaScript">
<!--
function controle(){
var t = document.form.coefficient.value;
if(t == "") {
alert('Le champ ne peut pas rester vide !! Veuillez introduire votre formule de calcul');
document.form.coefficient.focus();
}
else {
document.form.method = "get";
document.form.action = "res1.php";
document.form.submit();
}
}
//-->
</script> |
puis dans le <body j'ai fait une requette qui permet d'extraire les noms des cours:
Code:
1 2 3
|
SELECT fullname
FROM mdl_211course |
fullname: c'est le nom du cours.
puis pour afficher les noms avec des champs text correspondant à chaque nom j'ai fais:
Code:
1 2 3 4 5 6 7 8
|
<form name="form" action="res1.php" method="post">
<?php
while($ligne=mysql_fetch_assoc($resultat)){
echo '<b><h3><font color=#6495ED>'.$ligne["shortname"].'</h3>
<input type="text" name="coefficient" size=15><br>';
}
?> |
c'est ça, je veux s'assurer que l'utilisateur a saisi des coefficients pour tout les cours !!:(
controler si un champ TEXT est vide
Bon pour mon cas j'ai 2 cours!! je pense pas que sa va atteindre 200 cours c'est trop!!
controler si un champ TEXT est vide
beeeen non :( malheureusement mais ça va etre au maximum une vingtaine de cours dans ma base jusqu'à mnt j'ai 2 mais ça peut augmenter?
y a pas d'autre Soluce autre qu'avec des if ??:(
controler si un champ TEXT est vide
ya pas de méthode permettant de donner au champ TEXT le nom du cours?? c'est à dire à chaque cours affichés le champ TEXT correspond prend comme name le nom du cours ?? si le cours est pgmc (programmtion C) le name=pgmc??
1 pièce(s) jointe(s)
controler si un champ TEXT est vide
Si, il existe dans ma table mdl_211course une colonne fullname (par exemple programmation) et une colonne shortname (par exemple pgmc)
Donc la requete
Code:
1 2 3
|
SELECT fullname,shortname
FROM mdl_211course; |
donne le résultat suivant:
Pièce jointe 92751
est ce qu'on peut faire le controle avec ces données ??:(
controler si un champ TEXT est vide
oui biensur je teste mais ça bloque, car il y a un risque que le shortname du cours contient des espaces :( ce qui va générer des erreurs. Don j'ai fait autre chose, j'ai donné au champ TEXT l'id du courrs correspondant comme 'name' c'est ça:
Code:
1 2 3 4 5 6 7 8 9
|
while($ligne=mysql_fetch_assoc($resultat)){
echo '<b><h3><font color=#6495ED>';
echo $ligne['shortname'].'</h3>';
echo '<input type="text" name="coef[';
echo $ligne['courseid'];
echo ']" size="3" value="1">';
} |
Donc ça évite les espaces, les répétition des même shartname et évite de donner à tous les champs le même nom.
Mais je me trouve de nouveau au début :( comment faire mnt ? qu'est que vous proposez?
Donc maintenant, pour contrôler si les champs sont remplies ou pas on doit
3 pièce(s) jointe(s)
controler si un champ TEXT est vide
Je vais vous postez mon code, il est un peu long :( j’espère que vous pouvez m'aider à corriger la faute :( ben vous connaissez normalement tout à propos ce code car c'est avec votre help que je developpe ;)
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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
<html>
<head>
<title>
Moyenne Cours
</title>
<SCRIPT language="Javascript">
<!--
function Chargement() {
alert('Veuillez remplir les champs en saisissant les coefficients correpondants à chaque cours!!');
}
//-->
</SCRIPT>
<SCRIPT language="JavaScript">
<!--
function controle() {
var i, coef, erreur, i_erreur, msg_type, msg;
erreur = false;
msg = '';
msg_type = "ERREUR";
coef = document.getElementsByName("coef[]");
//alert("coef : " + coef);
if (coef) {
for (i = 0; i < coef.length; i++) {
//alert("coef : " + coef[i].value);
if (coef[i].value == "") {
i_erreur = i + 1;
msg += "[coef " + i_erreur + "] " + msg_type + "\n";
erreur = true;
}
}
}
if (erreur) {
alert(msg);
document.getElementById("coef_" + i_erreur).focus();
return false;
}
return true;
}
//-->
</script>
</head>
<body link="#FF6600" vlink="#FF9900" onload="Chargement();">
<form name="form" onsubmit="return controle();" action="res1.php" method="post">
<fieldset>
<fieldset>
<legend><h3><b>Les Coefficients</b></h3></legend>
<?php
//connect to the server
$connect=mysql_connect("localhost","root","");
//connect to the db
mysql_select_db("moodle211");
//controle du champ de la formule
//query the db
$requete='SELECT DISTINCT(fullname),shortname,courseid
FROM mdl_211course,mdl_211course_categories,mdl_211grade_items
WHERE mdl_211course_categories.name="'.mysql_real_escape_string($_GET["nom"]).'"
AND mdl_211course_categories.id = mdl_211course.category
AND mdl_211course.id=mdl_211grade_items.courseid';
$resultat=mysql_query($requete) or die ('<h4><b>Erreur SQL!</h4></b><br>'.$requete.'<br>'.mysql_error());
//fetch the result
$cpt =1;
while($ligne=mysql_fetch_assoc($resultat)){
echo '<b><h3><font color=#6495ED>';
?>
<p>
<label><?php echo $ligne['shortname'].'</h3>'; ?></label>
<input type="text" id="coef_<?php echo $cpt; ?>" name="coef[<?php echo $ligne['courseid']; ?>]" value="1" size="3" />
</p>
<?php
$cpt++;
}
?>
<br><br><center><input type='submit' name='appliquer' value='Appliquer' >
<a href=choixmoycat.php>
<input type=reset name=annuler value=Annuler></a>
</center>
</fieldset></fieldset></form>
</body>
</html> |
c'est l'affichage de la première page:
Pièce jointe 92778
lorsque je clique sur 'appliquer' je passe à la deuxième page:
Pièce jointe 92780
Mais mémé si je ne saisie pas de coefficient (champ TEXT non rempli) la redirection se fait:
Pièce jointe 92781
où est l'erreur?? :(:(