OVH Cloud OVH Cloud

Vérification en javascript d'un tableau en PHP

1 réponse
Avatar
Superman
Bonjour,

Voici ma configuration, je possede deux pages :
la premiere qui contient uniquement un champ de texte pour inserer le
nombre de ligne que d=E9sire avoir l'utilisateur



[Code]

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html;
charset=3Diso-8859-1"> <title>Document sans titre</title></head><body>
<form name=3D"form1" method=3D"post" action=3D"test1.php">
Nombre de ligne<input type=3D"text" name=3D"nbr"><BR>
<input type=3D"submit" name=3D"Submit"value=3D"Envoyer"></form></body>

[/code]


Puis une seconde qui cr=E9e dynamique un tableau avec 2 colonne et n
lignes (selon la valeur que l'utlisateur a inser=E9 dans la page
pr=E9c=E9dente l'utilisateur)



[Code]

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html;
charset=3Diso-8859-1"><title>Document sans titre</title> </head> <body>
<form name=3D"form1" method=3D"post" action=3D"test2.php">
<?php
for ($i=3D0;$i<$nbr;$i++){
?>
<tr>
<td width=3D"84" height=3D"47"><div>
<?php
echo "<input name=3D'num".$i."' type=3D'text'>";
?>
</div>
</td>
<td width=3D"169">
<div>
<?php
echo "<input name=3D'nom".$i."' type=3D'text'>";
?>
</div></td>
<?php
}
?>
<p>
<input type=3D"button" name=3D"button" value=3D"Retour"
onclick=3D"history.go(-1)">
<input name=3D"Submit" type=3D"submit" value=3D"Envoyer" onSubmit=3D"return
validation();>
</p></form>
</body><
/html>
[/code]



En fait ce que j'aimerais faire maintenant c'est lors de l'appui sur le
bouton envoyer de v=E9rifier par javascript si l'ensemble des cases sont
remplies.

J'ai donc fait une petite fonction en javascript que j'appel lorsque je
clique sur envoyer


[code]
<script language=3D"javascript" type=3D"text/javascript">
function validation() {
var test =3D 0;
if(document.form1.???.value =3D=3D "" )
{
document.form1.???.style.background =3D "red";
document.form1.???.focus();
test ++;
}
else document.form1.???.style.background =3D "white";
if (test > 0) return false;
else return true;}</script>
[/code]


Le probleme avec le javascript est qu'il faut le nom de la case or dans
mon cas mes cases se nomme num0, num1...
Or pour verifier il faut ecrire document.form1.nom0.value =3D=3D ""

j'aimerais donc pouvoir remplacer nom0 par quelque chose comme nom.i
afin de rentr=E9 cela dans une boucle et faire une v=E9rification avec
une boucle uniquement comme ceci :

[code]
var test =3D 0;
for (i=3D0;i<nbr;i++){
if(document.form1.nom(i).value =3D=3D "" )
{
document.form1.nom(i).style.background =3D "red";
document.form1.nom(i).focus();
test ++;
}
else document.form1.nom(i).style.background =3D "white";

if (test > 0) return false;
else return true;
}

[/code]
Est ce possible ?
Ou avez vous une autre solution ?=20
=20
Merci de votre aide !=20
Johnson

1 réponse

Avatar
ASM
Bonjour,

Voici ma configuration, je possede deux pages :
la premiere qui contient uniquement un champ de texte pour inserer le
nombre de ligne que désire avoir l'utilisateur



[Code]

<html><head><meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1"> <title>Document sans titre</title></head><body>
<form name="form1" method="post" action="test1.php">
Nombre de ligne<input type="text" name="nbr"><BR>
<input type="submit" name="Submit"value="Envoyer"></form></body>

[/code]


Puis une seconde qui crée dynamique un tableau avec 2 colonne et n
lignes (selon la valeur que l'utlisateur a inseré dans la page
précédente l'utilisateur)


Si, pendant qu'il y était, le php pouvait *aussi* pondre les balises
'table' ? ainsi que les 'tr' ?

et même si on pouvait se passer de table ? ce serait-y pas mieux ?

Pourquoi mets-tu un div dans tes TDs ?

Encore une fois on profite des facilités offertes par php pour pondre à
la va-vite du code lourd ... :-(

Les inputs n'ont pas d'intitulés ?
on devinera quoi et où faut compléter ?

(snip)

En fait ce que j'aimerais faire maintenant c'est lors de l'appui sur le
bouton envoyer de vérifier par javascript si l'ensemble des cases sont
remplies.


oui, fastoche.

<form name="form1" onsubmit="return verif()" blabla>

J'ai donc fait une petite fonction en javascript que j'appel lorsque je
clique sur envoyer


ha ? un truc pour mettre en relief les champs non remplis ?

Le probleme avec le javascript est qu'il faut le nom de la case or dans
mon cas mes cases se nomme num0, num1...


jamais d'la vie, pourquoi aurait-il besoin de ça ?

Or pour verifier il faut ecrire document.form1.nom0.value == ""


meuh non !

j'aimerais donc pouvoir remplacer nom0 par quelque chose comme nom.i
afin de rentré cela dans une boucle et faire une vérification avec
une boucle uniquement comme ceci :


2 possibilités :

1) on vérifie tout et on net en évidence les inputs non remplis

function verif() {
var f = document.forms['form1'];
var ok = true;
for(var i=0; i<f.length; i++)
if(f[i].type='text')
{
ok = f[i].value!='';
f[i].backgroundColor = ok? '#fff' : 'red';
}
return ok;
}

2) on vérifie champ à champ et on s'arrête au champ vide :

function verif() {
var f = document.forms['form1'];
for(var i=0; i<f.length; i++)
if(f[i].type='text' && f[i].value=='')
{
f[i].focus();
alert('champ non rempli');
return false;
}
return true;
}


--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé
ASM = Aimable Stéphane Moriaux = Amateur Sasseur Merdouilles