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érifier que au moins une checkboxe est cochée sinon pas d'envoi de formulaire


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    stagiaire en informatique
    Inscrit en
    Août 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : stagiaire en informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 28
    Points : 18
    Points
    18
    Par défaut Vérifier que au moins une checkboxe est cochée sinon pas d'envoi de formulaire
    Bonjour,
    Je suis débutant en développement web, c'est la raison pour laquelle je poste ici.
    En effet, je suis en train de monter un site internet. Et je coince sur un formulaire qui permet l'insertion d'une image sur le site. Pour cela, il faut rentrer des informations dans la base de donnée: ce sont les critères de l'image qui permettent par la suite à un administrateur de trier les différentes images.
    En l’occurrence, l'image a un titre (libelle), un lien et il existe 3 classements définis par des checkboxs (leur nom : name='nIdClassement_PM[]'... Voila le début de mes soucis, pour la première fois je les ai fait passer dans un array!
    J'arrive sans problème à vérifier si il y a bien un lien et un libelle mais je coince pour les checkboxs.
    Auriez vous une piste à me donner ?
    A force d'y réfléchir je pensais récupérer tous les éléments de types checkbox puis vérifier si l'id contient nId et ensuite verifier si il y en avait une de check. Enfin les mots c'est bien joli, pour le traduire en php, enfin même ici en JS c'est autre chose!!

    Merci d'avance pour votre aide
    Alex

    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
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
     
    include_once("commun/include/html.inc.php");
     
    /***************************************************************************/
    /* CONNEXION BASE DE DONNEES                                               */
    /***************************************************************************/
    vInitData();
    $szMode = 'EC_IMAGE_M';
    $nIdElement=intval($_REQUEST['nIdElement_PM']);
    if(!bConnexionBDD())
    	vErreurBDDHTML();
     
    $szIdZone='EC_IMAGE';
    vAuth($szIdZone, isset($aNiveauAcces));
    if(isset($_REQUEST['bAjout_PM']))
    	$bDroit = $aNiveauAcces[2];
    else
    	$bDroit = $aNiveauAcces[4];
    if(!$bDroit)
    {
    	echo "Vous n'avez pas accès à cette fonctionnalité";
    	exit;
    }
     
    vInitParamGeneral();
     
    vHeadHTML();
     
    echo"
    <script type=\"text/javascript\">
    <!--
     
    function FicheRetour()
    {
    	Form = document.Formulaire;
    	if($('bAjout').value == 1)
    		Form.action = '".$GLOBALS['szBaseURL']."scripts/element_supp.php?nIdElement_PM='+$('nIdElement').value;
    	else
    		Form.action = '".$GLOBALS['szBaseURL']."ec_image.php';
    	Form.submit();
    }
     
    var foundCount = 0
    for(i=0;i<document.getElementsByTagName('input').length;i++)
    {
    if(document.getElementsByTagName('input')[i].type == 'checkbox')
    {
    //alert(document.getElementsByTagName('input')[i].checked)
    if(document.getElementsByTagName('input')[i].checked == true)
    {
    foundCount++
    }
    }
    }
    if(foundCount > 1){
    alert('Emergency Will Robinson')
    }
     
    function FicheVerif(Form)
    {
    	var szMessage='Vous avez oublié \\n';
    	var szMessage2='';
    	if($('szLibelle').value =='')
    		szMessage2 +='- le libellé\\n \\r';
    	if(szMessage2 == '')
    	{
    		Form.action = '".$GLOBALS['szBaseURL']."scripts/ec_image_modif.php?nIdElement_PM=".intval($nIdElement)."&szMode_PM=".$szMode."';
    		Form.submit();
    	}
    	else
    	{
    		alert(szMessage+szMessage2);
    	}
    }
    function vChangeApercu(szCheminFichier)
    {
    	if(szCheminFichier !='')
    	{
    		$('szFichierTransfert').value=szCheminFichier;
    		$('imgApercu').src='".$GLOBALS['szBaseURLSite']."commun/ec_image.php?szFichier_PM='+'../tmp/'+szCheminFichier;
    	}
    }
     
    //-->
    </script>
    ";
    /* Récupération des caractéristiques de l'image */
    $szQuery="SELECT img_libelle, img_id, img_lien FROM ec_image WHERE img_id='".intval($nIdElement)."'";
     
    $rResult = mysql_query($szQuery, $GLOBALS['rDataBaseLinkRP']);
    if ($rResult && mysql_num_rows($rResult))
    {
    	$aRow = mysql_fetch_array($rResult);
    	$szLibelle=addslashes($aRow['img_libelle']);
    	$szLien=addslashes($aRow['img_lien']);
    	mysql_free_result($rResult);
     
    }
     
    vDebutHTML($szMode);
     
    $szLien_picto = "<img src='".$GLOBALS['szBaseURL'].$GLOBALS['szRepImg']."picto_Lien.png' alt='Lien' title='Lien' />";
     
    echo"
    <tr>
    	<td align='center ' class='cadre'>
    		<input type='hidden' name='nIdElement_PM' id='nIdElement' value='".$nIdElement."'/>
    		<input type='hidden' name='bAjout_PM' id='bAjout' value='".$_REQUEST['bAjout_PM']."'/>
    		<table cellpadding='0' cellspacing='0' border='0' align='center' >
    			<tr>
    				<td align='center' valign='top'>
    		<table cellpadding='0' cellspacing='0' border='0'>
    			<tr>
    				<td width='450'>
    					<fieldset style='width:410px;'>
    						<legend>Caract&eacute;ristique du mod&egrave;le d'écriture</legend>
    						<table cellpadding='0' cellspacing='0' border='0' >
    							<tr>
    								<td class='txtr' width='80'>Libell&eacute;<span class='c2'> *</span></td>
    								<td>
    									<input type='text' name='szLibelle_PM' id='szLibelle' maxlength='30' style='width:300px;' value='".$szLibelle."'/>
    								</td>
    							</tr>
    							<tr>
    								<td colspan='2' height='10'></td>
    							</tr>
    							<tr>
    								<td class='txtr' width='80'>Lien</td>
    								<td>
    									<input type='text' name='szLien_PM' id='szLien' maxlength='100' style='width:300px;' value='".$szLien."'/>
    								</td>
    								<td align='center' width='50'>
    								<a href='".$szLien."' target='blank' align='right'><span >".$szLien_picto."</span></a>
     
    								</td>
    							</tr>
    						</table>
    					</fieldset>
    					<fieldset style='width:410px;'><legend>Photo</legend>
    						<iframe frameborder='0' src='".$GLOBALS['szBaseURL']."commun/iframe/piece_jointe.php' width='80%' height='70' style='margin:0px;padding-left:83px;'>
    							<input type='file' id='nIdFichier' name='nIdFichier_PM' class='saisie'/>
     
    						</iframe>
    					</fieldset>
    				</td>
    			</tr>
    			<tr>
    			</tr>
    		</table>
    		</td>
    		<td valign='top'  align='right' width='410px'>
    					<fieldset style='width:410px;height:220px;margin-bottom:10px;'>
    						<legend>Image affich&eacute;e dans le site</legend>
    						<img id='img_illustration' src='".$GLOBALS['szBaseURL'].$GLOBALS['szRepImg']."transparent1px.gif' width='300' height='200'/>
    					</fieldset>
    					</td>
    					</tr>
    						<tr>
    				<td align='right' colspan='3' height='200' valign='top' style='padding-top: 20px;'>
    					<fieldset style='width:410px;'>
    						<legend>Classement</legend>
    						<table cellpadding='0' cellspacing='0' border='0' align='left'>";
     
     
    	/* Récupération des classements */
    $szQuery = " SELECT typ_libelle as szClasse, typ_id"
    					." FROM ec_type";
     
    $rResult = mysql_query($szQuery, $GLOBALS['rDataBaseLinkRP']);
    if ($rResult && mysql_num_rows($rResult))
    {
    	$nInd = 0;
    	$szIdElement='';	
    	while($aRow = mysql_fetch_array($rResult))
    	{
    		$szClassement= $aRow['szClasse'];
    		$szId_classement= $aRow['typ_id'];
     
       echo"
       <tr height='30'>
       <td width='40'></td>
       <td>
       <input type='checkbox' name='nIdClassement_PM[]' id='".htmlentities($aRow['szClasse'],ENT_QUOTES)."' value='".$szId_classement."' checked='checked'/>
       <label for='".htmlentities($aRow['szClasse'],ENT_QUOTES)."'>".htmlentities($aRow['szClasse'],ENT_QUOTES)."</label>
       </td>
       </tr>
       ";
     
    		$szIdElement .=$aRow['typ_id'].',';
    		$nInd++;
     
    	}
    	mysql_free_result($rResult);
     
    }
     
    						echo "
    						</table>
    					</fieldset>
    				</td>
    			</tr>
    		</table>
    	</td>
    </tr>
    			<tr>
    			<td align='center' class='cadre_bottom'>Notez que les champs précédés d'une <span class='c2'>*</span> doivent obligatoirement être remplis. 
    			</td>
    			</tr>
    ";
     
     
    vPiedPageHTML();
     
     
    ?>

  2. #2
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    CheckCheckBoxForm(IdForm,NameCheckBox) renvoi true si au moins l'un des checkbox name='NameCheckBox' dans le formulaire IdForm est coché sinon renvois false;
    (avec un exemple de formulaire)
    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
    <form action='form_target.php' id='form1' method='post' target='test_iframe'>
    	<input type='checkbox' name='nIdClassement_PM[]' value='test1'><br/>
    	<input type='checkbox' name='nIdClassement_PM[]' value='test2'><br/>
    	<input type='checkbox' name='nIdClassement_PM[]' value='test3'><br/>.
    	<input type='button' onclick='alert(CheckCheckBoxForm("form1","nIdClassement_PM[]"));'>
    </form>
     
     
    <script>
    function CheckCheckBoxForm(IdForm,NameCheckBox)
    {
    	var nbrCheck = 0;
    	var Form = document.getElementById(IdForm);
    	var nbrElem=Form.length;
    	for(x=0;x<nbrElem-1;x++)
    	{
    		MyElem=Form.elements[x];
    		if( (MyElem.name==NameCheckBox) && (MyElem.type=='checkbox') && (MyElem.checked))
    		{
    			nbrCheck++;
    		}
    	}
    	if(nbrCheck!=0)
    	{
    		return true;
    	}
    	return false;
    }
    </script>

  3. #3
    Membre à l'essai
    Homme Profil pro
    stagiaire en informatique
    Inscrit en
    Août 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : stagiaire en informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Mon problème c'est que dans mon code je n'ai pas de balise form a proprement parler , j'ai bien un formulaire mais qui est dans mon JS (je suis vraiment nul en JS ...)
    Donc je ne sais pas comment atteindre les données de ce formulaire dans ce cas précis. (quand tu précises IdForm)

  4. #4
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    la même chose mais uniquement en cherchant dans le document les checkbox
    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
    	<input type='checkbox' name='nIdClassement_PM[]' value='test1'><br/>
    	<input type='checkbox' name='nIdClassement_PM[]' value='test2'><br/>
    	<input type='checkbox' name='nIdClassement_PM[]' value='test3'><br/>
    	<input type='button' onclick='alert(CheckCheckBox("nIdClassement_PM[]"));'>
     
     
    <script>
    function CheckCheckBox(NameCheckBox)
    {
    	var nbrCheck = 0;
    	var nbrElem=document.body.children.length;
    	for(x=0;x<nbrElem-1;x++)
    	{
    		MyElem=document.body.children[x];
    		if( (MyElem.name==NameCheckBox) && (MyElem.type=='checkbox') && (MyElem.checked))
    		{
    			nbrCheck++;
    		}
    	}
    	if(nbrCheck!=0)
    	{
    		return true;
    	}
    	return false;
    }
    </script>

  5. #5
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    mais sans décortiquer le code je dirait que ton formulaire a au moins le nom de "Formulaire"

    Form = document.Formulaire;
    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
    <form name='Formulaire'>
    	<input type='checkbox' name='nIdClassement_PM[]' value='test1'><br/>
    	<input type='checkbox' name='nIdClassement_PM[]' value='test2'><br/>
    	<input type='checkbox' name='nIdClassement_PM[]' value='test3'><br/>
    	<input type='button' onclick='alert(CheckCheckBoxFormName("Formulaire","nIdClassement_PM[]"));'>
    </form> 
     
    <script>
    function CheckCheckBoxFormName(NameForm,NameCheckBox)
    {
    	var nbrCheck = 0;
    	var Form = document.getElementsByName(NameForm)[0];
    	var nbrElem=Form.length;
    	for(x=0;x<nbrElem-1;x++)
    	{
    		MyElem=Form.elements[x];
    		if( (MyElem.name==NameCheckBox) && (MyElem.type=='checkbox') && (MyElem.checked))
    		{
    			nbrCheck++;
    		}
    	}
    	if(nbrCheck!=0)
    	{
    		return true;
    	}
    	return false;
    }
    </script>

  6. #6
    Membre à l'essai
    Homme Profil pro
    stagiaire en informatique
    Inscrit en
    Août 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : stagiaire en informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    J'ai modifiée le script pour qu'il s'adapte au précédent. Voila ou j'en suis, ca ne marche pas.
    Je pense que le problème vient de mon name. Ne m’étant jamais servi d'un array je ne sais pas comment appeler mes checkboxes. Je galère dans le HTML pour y arriver alors en JS ...

    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
    56
    57
    58
    59
     
    <script type=\"text/javascript\">
    <!--
     
    function FicheRetour()
    {
    	Form = document.Formulaire;
    	if($('bAjout').value == 1)
    		Form.action = '".$GLOBALS['szBaseURL']."scripts/element_supp.php?nIdElement_PM='+$('nIdElement').value;
    	else
    		Form.action = '".$GLOBALS['szBaseURL']."ec_image.php';
    	Form.submit();
    }
     
    function CheckCheckBoxForm(rElement)
    {
     
    }
     
    function FicheVerif(Form)
    {
     
    	var szMessage='Vous avez oublié \\n';
    	var szMessage2='';
    	if($('szLibelle').value =='')
    		szMessage2 +='- le libellé\\n \\r';
    	var aCheckbox = 0;
    	var szElem=document.body.children.length;
    	for(x=0;x<szElem-1;x++)
    	{
    		szElementCheck=document.body.children[x];
    		if( (szElementCheck.name=='nIdClassement_PM[]') && (szElementCheck.type=='checkbox') && (szElementCheck.checked))
    		{
    			aCheckbox++;
    		}
    	}
      if(aCheckbox=0)
      szMessage2 +='- la box\\n \\r';
    	if(szMessage2 == '')
    	{
    		Form.action = '".$GLOBALS['szBaseURL']."scripts/ec_image_modif.php?nIdElement_PM=".intval($nIdElement)."&szMode_PM=".$szMode."';
    		Form.submit();
    	}
    	else
    	{
    		alert(szMessage+szMessage2);
    	}
    }
    function vChangeApercu(szCheminFichier)
    {
    	if(szCheminFichier !='')
    	{
    		$('szFichierTransfert').value=szCheminFichier;
    		$('imgApercu').src='".$GLOBALS['szBaseURLSite']."commun/ec_image.php?szFichier_PM='+'../tmp/'+szCheminFichier;
    	}
    }
     
    //-->
    </script>

  7. #7
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    ajoute alert(szElementCheck.name); pour afficher les noms des elements de ton document et voir si tu a 'nIdClassement_PM[]' (dans ce cas les checkbox sont directement dans le document
    et si tu a 'Formulaire' (les checkbox sont surement dans le form nommé formulaire)
    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
    <script type=\"text/javascript\">
    <!--
    ...
    function FicheVerif(Form)
    {
      
    	var szMessage='Vous avez oublié \\n';
    	var szMessage2='';
    	if($('szLibelle').value =='')
    		szMessage2 +='- le libellé\\n \\r';
    	var aCheckbox = 0;
    	var szElem=document.body.children.length;
    	for(x=0;x<szElem-1;x++)
    	{
               alert(szElementCheck.name);
    		szElementCheck=document.body.children[x];
    		if( (szElementCheck.name=='nIdClassement_PM[]') && (szElementCheck.type=='checkbox') && (szElementCheck.checked))
    		{
    			aCheckbox++;
    		}
    	}
     ...
    </script>

  8. #8
    Membre à l'essai
    Homme Profil pro
    stagiaire en informatique
    Inscrit en
    Août 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : stagiaire en informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Salut,
    Je pense que je ne passe même pas dans la boucle du for puisque l'alert que tu me dis d'ajouter ne s'affiche même pas ...

    Merci encore pour ton aide qui est plus qu'appréciée

  9. #9
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    ajoute ceci et dis moi si cela passe au moins pas ta fonction et combien vaut szElem
    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
    <script type=\"text/javascript\">
    <!--
    ...
    function FicheVerif(Form)
    {
       alert('FicheVerif');
    	var szMessage='Vous avez oublié \\n';
    	var szMessage2='';
    	if($('szLibelle').value =='')
    		szMessage2 +='- le libellé\\n \\r';
    	var aCheckbox = 0;
    	var szElem=document.body.children.length;
       alert(szElem);
    	for(x=0;x<szElem-1;x++)
    	{
               alert(szElementCheck.name);
    		szElementCheck=document.body.children[x];
    		if( (szElementCheck.name=='nIdClassement_PM[]') && (szElementCheck.type=='checkbox') && (szElementCheck.checked))
    		{
    			aCheckbox++;
    		}
    	}
     ...
    </script>

  10. #10
    Membre à l'essai
    Homme Profil pro
    stagiaire en informatique
    Inscrit en
    Août 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : stagiaire en informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Yep l'alerte passe ce coup ci, j'ai une première alerte qui me renseigne :
    "FicheVerif"
    et une deuxième qui me renseigne:
    "1"

    Plus mon alerte habituelle derrière.

  11. #11
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    si szElem=1 c'est probalement que ton body ne comporte qu'un seul form
    ajoute ceci pour voir combien de form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //alert(szElem);
    alert(document.forms.length);
    si il repond 1 ou plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //alert(szElem);
    //alert(document.forms.length);
    alert(document.forms[0].name);
    alert(document.forms[0].id);
    

  12. #12
    Membre à l'essai
    Homme Profil pro
    stagiaire en informatique
    Inscrit en
    Août 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : stagiaire en informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Alors d'apres la première alerte il n'ya bien que un seul forumlaire.
    Puis alert(document.forms[0].name); renvoie : "Formulaire"
    et alert(document.forms[0].id); renvoie une alerte vide

  13. #13
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    donc tu a un formulaire qu'il a le nom de 'Formulaire' (c'est original lol)
    donc tu utilise la version de la fonction CheckCheckBoxFormName
    voir précédent post et cela devrais le faire

  14. #14
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Ici, c'est un forum php. Or, tu veux que le formulaire ne soit pas soumis si au moins 1 checkbox n'est pas cochée ; cela relève donc de javascript.

    Cela dit, un exemple à adapter :
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title></title>
        <script type="text/javascript">
          //--- variable globale ------------------------------------------------
          var nbCoche = 0;
     
          function compterChk(obj)
          {
            var checked = (obj.checked) ? nbCoche += 1 :  nbCoche -= 1;
     
            alert('Vous avez ' + nbCoche + ' chekbox cochées')
          }
     
          function ctrlForm()
          {
            if(nbCoche == 0)
            {
              alert('Vous devez cocher au moins 1 chekbox' + '\n' + 'Le formulaire ne sera pas soumis.');
              return false;
            }
            else
            {
              alert('Vous avez ' + nbCoche + ' chekbox cochées' + '\n' + 'Le formulaire sera soumis.')
              return true;
            }
          }
        </script>
      </head>
      <body>
        <form id="formulaire" method="post" action="" onsubmit="return ctrlForm()">
          <table border="0" width="50%" align="center">
            <tr>
              <td>ligne 1</td>
              <td>
                <input type="checkbox" name="chk[]" value="1" onclick="compterChk(this)" />
              </td>
            </tr>
            <tr>
              <td>ligne 2</td>
              <td>
                <input type="checkbox" name="chk[]" value="2" onclick="compterChk(this)" />
              </td>
            </tr>
            <tr>
              <td>ligne 3</td>
              <td>
                <input type="checkbox" name="chk[]" value="3" onclick="compterChk(this)" />
              </td>
            </tr>
            <tr>
              <td>ligne 4</td>
              <td>
                <input type="checkbox" name="chk[]" value="4" onclick="compterChk(this)" />
              </td>
            </tr>
            <tr>
              <td>ligne 5</td>
              <td>
                <input type="checkbox" name="chk[]" value="5" onclick="compterChk(this)" />
              </td>
            </tr>
            <tr>
              <td colspan="2">
                <input type="submit" name="btn" value="Envoyer" />
              </td>
            </tr>
          </table>
        </form>
      </body>
    </html>

  15. #15
    Membre à l'essai
    Homme Profil pro
    stagiaire en informatique
    Inscrit en
    Août 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : stagiaire en informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Merci jeca, j'ai adapté ton code qui convient parfaitement à ce que je voulais!

  16. #16
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    le sujet est bien présenté , mais la erreur ÉNORME

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo"
    <script type=\"text/javascript\">
    <!--
     
    function FicheRetour()
    {
    il faut pas faire ca comme, tu a le droit de passer quelques variables de cette facon, mais , JAMAIS, des fonctions..... ca me fait peur de voir de tels codes...

  17. #17
    Membre à l'essai
    Homme Profil pro
    stagiaire en informatique
    Inscrit en
    Août 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : stagiaire en informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Hum... Peux tu être plus explicite dans tes propos ? J'ai du mal a comprendre ce qui te gène.

  18. #18
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Citation Envoyé par ascito Voir le message
    le sujet est bien présenté , mais la erreur ÉNORME

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo"
    <script type=\"text/javascript\">
    <!--
     
    function FicheRetour()
    {
    il faut pas faire ca comme, tu a le droit de passer quelques variables de cette facon, mais , JAMAIS, des fonctions..... ca me fait peur de voir de tels codes...
    Outre le fait que cela ne présente strictement aucun intérêt, je ne vois pas ce qui pourrait m'empêcher d'écrire :
    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
    <?php
      echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
            <html>
                <head>
                    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                    <title>Test</title>
                    <script type="text/javascript">
                      var valeurDate = '';
    
                      function recupDate(valeurDate)
                      {
                        var laDate = new Date();
                        alert(laDate);
                        var jour = laDate.getDate();
                        var mois = laDate.getMonth() + 1;
                        var annee = laDate.getFullYear();
    
                        return(laDate.toLocaleString());
                      }
    
                      alert(recupDate(valeurDate));
                    </script>
                </head>
                <body>
                </body>
            </html>';
    ?>

  19. #19
    Membre à l'essai
    Homme Profil pro
    stagiaire en informatique
    Inscrit en
    Août 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : stagiaire en informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Tiens je viens de penser à une chose. Serait-il possible de calculer la valeur initiale de la variable nbCoche qui correspond dans mon script au nombre de checkbox cochée (c'est à dire toutes au chargement de la page) avec une fonction javascript ?

    Car je viens de m'apercevoir que en initialisant moi-même cette variable si on rajoute un classement dans la base ca me plante tout mon truc !

    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
     
     var nbCocheTest = 0;
     
    function ncalcul() {
     
    var nb;
    nb = document.Formulaire.getElementsByName('nIdClassement_PM[]').length;
     
    for( i = 0 ; i < nb ; i++ ) {
     
    nbCocheTest = document.Formulaire.getElementsByName('nIdClassement_PM[]')[i];
     
    }	
     
     
     
    // Affiche le total de toutes les cases cochees
    document.devis.prix_total.value = total;
    }
     
    var nbCoche = nbCocheTest;
     
    function compterChk(obj)
    {
      var checked = (obj.checked) ? nbCoche += 1 :  nbCoche -= 1;
     
    //  alert('Vous avez ' + nbCoche + ' chekbox cochées')
     
    }
     
    function ctrlForm()
    {
      if(nbCoche == 0)
      {
        alert('Vous devez cocher au moins 1 chekbox');
        return false;
      }
      else
      {
        return true;
      }
    }
    Un truc dans ce genre mais comme d'habitude je dois me planter quelque part sur ma syntaxe

  20. #20
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
          function initNbCoche()
          {
            var mesInput = document.getElementsByTagName('input');
            var nbElement = mesInput.length;
            for(var i = 0; i < nbElement; i ++)
            {
              if ((mesInput[i].type == 'checkbox') && (mesInput[i].checked))
              {
                nbCoche ++;
              }
            }
            alert(nbCoche);
          }
    Tu appelles cette fonction dans l'élément "body" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      <body onload="initNbCoche()">

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Verifier si au moins une checkbox est cochée
    Par AyManoVic dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/01/2011, 08h41
  2. Vérifier si au moins une case est cochée dans checkbox
    Par pasc06 dans le forum Général JavaScript
    Réponses: 34
    Dernier message: 18/11/2008, 15h14
  3. bouton valider actif que si une checkbox est cochée
    Par chrisclauzel dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 20/02/2008, 23h14
  4. Vérifier qu'au moins une case est cochée
    Par zizou86 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/02/2008, 13h53
  5. Vérifier si au moins une case est cochée
    Par ozzmax dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 05/07/2007, 15h34

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