IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Vérification de champs, dont le nom est dynamique, en Javascript


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Vérification de champs, dont le nom est dynamique, en Javascript
    Bonjour à tous

    J'ai un petit soucis... de débutant.

    voilà un bout de code en PHP. il s'agît d'un formulaire que je qualifierais d'évolutif. En effet il est constitué d'un nombre de champ correspondant au nombre de mois depuis le premier janvier. Jusqu'ici tout va bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    echo '<form method="post" name="form_ion" OnSubmit = "return VerifFormulaire()"> ';
     
    echo '<input type="text" name ="produit" >
    for (num_mois = 1; $num_mois < $mois_en_cours; num_mois ++)
    {
    	$champ = "Nbr".$num_mois;    
    	echo 'Nombre de formation pour le mois ".$num_mois. " : "
    	echo '<input type="text" name =$champ size="30" maxlenght="30"> ';
    	echo '<input type="button" value="validez vos donné" >';
    	echo '</form>';
    }
    ?>
    En java je souhaite vérifier que chaque champ est bien rempli et là, ca se brouille. En effet pour le champ < produit> pas de soucis, mais ceux qui ont un nom < $champ> comment faire ?

    Qu'écrire à la place de mes ???? ci dessous pour balayer l'ensemble de mes champs input ?

    Code JS : 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
    function VerifFormulaire()
    {
     
    	df = document.form_ion	//form_ion:  nom du formulaire analysé
    	msg = ''
     
    	if (df.produit.value=='')  { msg+='..le produit\n' }if
     
    	if (df.?????????????.value=='')   :(:(:(
    	{ msg +='...une valeur pour un des mois\n' }
     
     	if (msg != '') 
     
    	{
     
    		alert ('Donnée(s) manquante(s) ou erronée(s): \n' +msg)
    		return false
    	}
    	else
    		return true
    }

    D'avance merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Attention les variables ne sont pas interpretés dans les guillemets simples :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<input type="text" name="' . $champ . '" size="30" maxlenght="30">';
    Sinon pour ton probleme tu crée la meme boucle qu'en php dans ton javascript (java != javascript) pour valider chaque champ.

  3. #3
    Membre confirmé Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Points : 547
    Points
    547
    Par défaut
    Salut

    D'abord tu n'as pas besoin de Java mais de Javascript, ce qui n'a rien à voir!
    Ensuite dans ton élément <input> définit l'attribut id avec la valeur de name.

    Dans ton javascript, tu reproduis ta boucle, et tu utilises le document.getElementById("idDuChamp") pour vérifier la valeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for (var num_mois = 1; num_mois < mois_en_cours; num_mois ++){
       if (document.getElementById("nbr"+num_mois).value == ''){
           alert ("Ce champ ne peut être vide");
       }
    }
    Commence par là

    ++

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonsoir et merci de vos réponses. Désolé pour le retard mais le temps me manque beaucoup en ce moment.

    En effet ce n'est pas du java mais du javascript, désolé mais je pensais que c'était la même chose (ah les débutants....)

    Donc si j'ai bien compris, et pour résumer toute variable déclarée entre les balises <form> ont leur pendant dans une fonction javascript ???? Si dans la partie en php, la variable $nom_mois est créee, la variable nom_mois (même nom sans le $) est identique dans ma fonction javascript ???

    Si c'est ça, c'est une grande avancée pour mon cerveau de 50 balais sinon.. on recommence !

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    toute variable déclarée entre les balises <form> ont leur pendant dans une fonction javascript
    Non
    Javascript peut par contre lire le contenu des champs du formulaire.
    C'est le document.getElementById("id_du_champ").value

    Si dans la partie en php, la variable $nom_mois est créee, la variable nom_mois (même nom sans le $) est identique dans ma fonction javascript
    Non plus
    PHP est executé par le serveur.
    Javascript est executé par le navigateur.
    Les deux travaillent donc à des moments différents.
    Cependant c'est PHP le papa.
    exemple d'une valeur passant de PHP à Javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    $i = "Message important";
    echo '<script langage="javascript">
    alert("' . $i . '")
    <script>';
    ?>

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Aie, merci sabotage

    je vois que je n'ai pas tout compris , allez retour à la case départ avec tous les excellents tutos disponibles.....

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    bonjour à tous

    J'essaye d'avancer dans la compréhension du couple PHP/Javascript...

    Bon voici un extrait de mon programme. Tout s'affiche bien à l'écran. Par ligne j'ai 5 champ de type <input> et je souhaite que seul des chiffrres soit entré dans ces champs.

    Le nombre de ligne est variable d'où la construction avec la variable $pos.

    echo '<form method="POST" name="FormFiche" action ="Biblio3.php" onSubmit ="return VerifFicheNavette()" />';
    ....
    $pos = 1;
    while ($rang = mysql_fetch_array ($ret))
    {
    echo '<tr>';
    echo '<td>'.$rang['intitule'].'</td>';
    echo '<td>'.$rang['reference'].'</td>';
    echo "<td style = 'text-align: center; ' ><input type='text' name = 'ed_mois".$pos."' maxlength='2' size='2' /></td>";
    echo "<td style = 'text-align: center; ' ><input type='text' name = 'ed_an".$pos."' maxlength='2' size='2' /></td>";
    echo "<td style = 'text-align: center; ' ><input type='text' name = 'num_rectif".$pos."' maxlength='2' size='2' /></td>";
    echo "<td style = 'text-align: center; ' ><input type='text' name = 'rect_mois".$pos."' maxlength='2' size='2' /></td>";
    echo "<td style = 'text-align: center; ' ><input type='text' name = 'rect_an".$pos."' maxlength='2' size='2' /></td>";
    echo '</tr>';
    pos ++;
    }

    Passons au javascript (). J'ai d'abord tenté d'écrire ceci :

    function VerifFicheNavette()
    {

    alert ("'.$pos.'"); (j'ai bêtement recopié ce qu'avait écrit sabotage pour tester)

    return false;
    }
    Histoire de voir si je pouvais avoir la valeur de $pos dans ma fonction en javascript = ECHEC "$pos" s'affiche et non la valeur

    Après j'ai tenté ceci :

    general
    function VerifFicheNavette()
    {
    var analyse = document.forms["FormFiche"];
    var num = 0;
    while ( ! typof (analyse.elements[num] == "undefined")
    {
    num ++;
    }
    alert ("Nombre de champs a analyser : " + num);

    }
    Bon et bien avec ça rien ne s'affiche.....

    Y-a vraimment quelque chose que je ne saisie pas..... Alors si l'un d'entre vous peut m'aiguillonner afin que je comprenne mes erreurs, merci beaucoup.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    EUREKA

    le code en javascript ci dessous fonctionne parfaitement ....

    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
    function VerifFicheNavette(NomForm)
    {
     
    	var nbelements = NomForm.elements.length;
    	var drap = true;
     
    	for (var i = 0; i < nbelements - 1; i++)
    	{
    		var NomElement = NomForm.elements[i].name;
    		var champ = NomForm.elements[i];
     
    		if ( NomElement.indexOf ("mois") != -1 )
    		{
    			if ( champ.value != "")
    			{
    				 if (( champ.value < 1 ) || ( champ.value > 12 ))
    				{
    					alert ("Le mois ne peut être qu'un chiffre compris entre 1 et 12 ! ");
    					champ.focus();
    					drap = false ;
    					break;
    				}
    			}
    		}
     
    		if ( NomElement.indexOf ("an") != -1 )
    		{
    			if ( champ.value != "")
    			{
    				 if ( isNaN ( champ.value )) 
    				{
    					alert ("L'année ne peut être qu'un chiffre !");
    					champ.focus();
    					drap = false ;
    					break;
    				}
    			}
    		}
     
    		if ( NomElement.indexOf ("num") != -1 )
    		{
    			if ( champ.value != "")
    			{
    				 if ( isNaN ( champ.value ) )
    				{
    					alert ("Le numéro de rectif. ne peut être qu'un chiffre !");
    					champ.focus();
    					drap = false ;
    					break;
    				}
    			}
    		}
    	}
    	return drap ;
    }
    Je vais, maintenant tenter de le rendre moins lourd... mais en bon débutant que je suis je vais y aller tout doucement....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/09/2011, 15h47
  2. Réponses: 7
    Dernier message: 12/04/2008, 14h24
  3. Réponses: 2
    Dernier message: 14/09/2007, 08h55
  4. Select d'une table dont le nom est dynamique
    Par newfsch dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/07/2007, 12h09
  5. Réponses: 2
    Dernier message: 21/09/2005, 13h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo