Case à cocher.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Case à cocher.

Re: Case à cocher.

par Dom! » 02 sept. 2011, 12:55

Alors voici le code qui affiche mon tableau :
          <table width="51%" height="30" border="0" align="center" cellpadding="0" cellspacing="0" class="cadre-equipe" style="cursor:pointer;">
            <tr>
              <td width="17%" align="center" valign="middle" bgcolor="#0066FF" cellspacing="3"><span class="blanc">Nom</span></td>
              <td width="20%" height="26" align="center" valign="middle" bgcolor="#0066FF" cellspacing="3"><span class="blanc">Pr&egrave;nom</span></td>
              <td width="19%" align="center" valign="middle" bgcolor="#0066FF" class="blanc"  cellspacing="3">Brul&eacute;</td>
            </tr>
            <?php  
 	$tableau1 = explode(",", $selectequ["liste_id_joueur"]);								 
			
	for ($cpt=0; $cpt < count($tableau1); $cpt++) {
					$sqlent = 'select *	from tb_membres where numlicence = "'.$tableau[$cpt].'" ORDER BY nom ASC';
					 
	if ($resselectent = mysql_query($sqlent)) {
    while ($selectent = mysql_fetch_array($resselectent))
 {
	$div = $div + 1;
			if (($div % 2 ) == 0)
				$color = 'bgcolor="#CEECFF"';
			else
				$color = 'bgcolor="#82CDFF"';
			
 	echo '<tr '.$color.'> 
    <td valign="middle" height="30"><div align = "center" valign="middle" >'.$selectent["nom"].'</div></td>
    <td valign="middle"><div align = "center">'.$selectent["prenom"].'</div></td>
	<td valign="middle"><div align = "center"><input name="brule[]" type="checkbox" id="brule" value="brule" if (($selectent["brule"]) == 1) checked="checked" /><input name="id_membre[]" type="hidden" value="'.$selectent["id_membre"].'"></div></td>
	</tr>';
	}
 	}
	}
	
	?>
Merci pour votre aide....

Re: Case à cocher.

par AB » 01 sept. 2011, 18:17

Tu les crée automatiquement comment ces checkbox ? Sans savoir on ne peut pas t'aider parce que les méthode pour résoudre de ton problème dépendent du problème en question. Montres nous le code de création de tes checkbox !

Re: Case à cocher.

par Dom! » 01 sept. 2011, 11:38

Je te remercie !
Ton code m'aide beaucoup mais j'avoue être completement dépassé....

En faite ce qui me bloque c'est d'arriver dans un tableau dynamique à récuperer la valeur des checkbox associés à un id.

Il y a une logique que je n'arrive pas à saisir. Dans ton exemple tu pars d'un array "manuel" alors que moi mes checkbox sont "automatique" et créé à la volée, du coup je n'arrive pas à attribuer la valeur 1 à mes checkbox...
Comment enregistrer toutes les valeurs en boucle de mes checkbox dans ma bdd en tenant compte de l'id ? Je suis désolé mais je débute et la je bloque complétement...

Merci pour votre aide.

Re: Case à cocher.

par AB » 01 sept. 2011, 02:06

Alors ça avance ? On peux faire un truc comme ça :
<?php
//tableau des checkbox 
$checkbox = array();
$checkbox['id1'] = 1;
$checkbox['id2'] = 1;
$checkbox['id3'] = 1;


if (isset($_POST['my_check']) && is_array($_POST['my_check']))
{
	function Checked (&$value, $key, $tab) 
	{
		$no_check = 0;
		$value = array_key_exists($key,$tab)? $value : $no_check;
	}
	
	$result_check = $checkbox;
	array_walk($result_check, 'Checked', $_POST['my_check']);
	
	
	foreach ($result_check as $key => $value)
	{
	 	echo $key. '=' .$value. '<br />';
	}
}
?>
<!--html-->
<form method="post" action="#">
<?php
foreach ($checkbox as $key => $value) echo '<input name="my_check['.$key.']" type="checkbox" value="'.$value.'" />';
?>
<input type="submit" value="ok" />
</form>
Ici toutes les checkbox ont la valeur 1 mais tu pourrais choisir autre chose. De même pour la variable "$no_check" de la fonction "Checked" qui défini la valeur pour les cases non cochées.

Pour faire le tableau de résultat j'ai utilisé "array_walk" associé à une fonction "Checked" mais tu pourrais aussi bien utiliser un classique foreach pour faire l'équivalent :
if (isset($_POST['my_check']) && is_array($_POST['my_check']))
{
	$no_check = 0;
	$result_check = array();

	foreach ($checkbox as $key => $value) 
	{
		$result_check[$key] = array_key_exists($key,$_POST['my_check'])? $value : $no_check;
	}
	
	foreach ($result_check as $key => $value)
	{
	 	echo $key. '=' .$value. '<br />';
	}
}

Re: Case à cocher.

par Mazarini » 31 août 2011, 10:53

Bonjour,

Il faut faire attention aux cases qui ne sont pas retournée et qui doivent être remise à 0. Le risque est que tu ne traites que les cases cochée à mettre à 1.

Le plus simple est de faire un tableau avec toutes les cases à cocher avec la valeur 0 et d'alimenter à 1 les cases cochée dans ce tableau. Tu peux alors mettre à jour toute les cases.

Pour la mise à jour, tu peux faire un seul update au lieu d'un par case.

Re: Case à cocher.

par Dom! » 31 août 2011, 10:02

Je ne comprend pas.
Avec ta méthode je récupére l'id suivit du N° 0,1 2,3 ....

Mais comment lier l'id à la valeur de ma checkbox ?

id 1 -> Coché
id 2 -> Pas coché

etc....

Re: Case à cocher.

par AB » 30 août 2011, 18:18

Oui oui effectivement c'est une étourderie de ma part :)

Re: Case à cocher.

par stealth35 » 30 août 2011, 18:15

Essaies d'utiliser les tableaux, par exemple :
<?php
if (isset($_POST['my_check']))
{
foreach ($_POST['my_check'] as $key => $value) echo $key. ' = ' .$value.'<br />';
}
?>
<form method="post" action="#">
<input name="my_check['id1']" type="checkbox" value="1">
<input name="my_check['id2']" type="checkbox" value="2">
<input name="my_check['id3']" type="checkbox" value="3">
<input type="submit" value="ok">
</form>

y'a pas besoin de mettre les ' dans my_check['id1'], sinon ils apparaissent dans le POST ( ["'id1'"] ) :wink:

Re: Case à cocher.

par AB » 30 août 2011, 17:34

Essaies d'utiliser les tableaux, par exemple :
<?php
if (isset($_POST['my_check']))
{
foreach ($_POST['my_check'] as $key => $value) echo $key. ' = ' .$value.'<br />';
}
?>
<form method="post" action="#">
<input name="my_check['id1']" type="checkbox" value="1">
<input name="my_check['id2']" type="checkbox" value="2">
<input name="my_check['id3']" type="checkbox" value="3">
<input type="submit" value="ok">
</form>

Re: Case à cocher.

par Dom! » 30 août 2011, 14:15

Bon la récupération de mes cases à cocher fonctionne... parfait merci pour votre aide....

En revanche peut on traiter l'enregistrement des données en faisant une boucle ? Parce que avec mon script il ne m'en enregistre qu'un.... Si oui quelle procédure je dois appliquer ?

Merci !

Re: Case à cocher.

par Vakarm » 29 août 2011, 16:43

Hmmmm en faite, quand la case est cochée elle me renvoi sa valeur mais quand elle ne l'est pas il n'y a pas de valeur...
Donc
if ($_POST['caseAcocher'] == "valeurLorsqueCochée"){
        $variable = 1;
} else {
        $variable = 0;
}

Re: Case à cocher.

par Dom! » 29 août 2011, 16:25

Hmmmm en faite, quand la case est cochée elle me renvoi sa valeur mais quand elle ne l'est pas il n'y a pas de valeur....

Je n'arrive pas à traiter ces cases à cocher....

Est ce que ce code peut fonctionner ?
<?php require_once('../../Connections/cagnes.php'); 

$brule = $_GET["brule"];
$id = $_GET["id_membre"];

$db = mysql_connect('localhost', '****', '****')
or die('<font color=red>Désolé mais vous ne pouvez voir les infos de la data-base</font>');
mysql_select_db('uscagnes_cagnesbasket',$db);
foreach ($id as $valeur){
if (isset($_GET['brule']))
	$brule == 1;
if (!isset($_GET['brule']))
	$brule == 0;
$sql= "UPDATE tb_membres set brule = ".$brule." where id_membre = ".$valeur; 
$req= mysql_query($sql);
header('Location:ajouter_brule.php?action=good');
mysql_close();
exit;
}

?>

Re: Case à cocher.

par sirakawa » 29 août 2011, 16:10

L'autre solution serait d'ajouter une case avec aucun choix:
<input type= 'checkbox' selected = 'selected'  value ='Aucun choix'>
autre idée:
<html>
	<body>
		<form method = 'post' action =' lulu.php'>
			<label  for 'case1'>Cinéma</label>
				<input type = 'radio' name = 'case1' required =' required' value ='O' />O
                                <input type = 'radio' name = 'case1' required =' required' value ='N' />N
			<label  for 'case2'>Théâtre</label>
				<input type = 'radio' name = 'case2' required =' required' value ='O' />O
                               <input type = 'radio' name = 'case2' required =' required' value ='N' />N
			<label  for 'case3'>Bronzage</label>
				<input type = 'radio' name = 'case3' required =' required' value ='O' />O
                               <input type = 'radio' name = 'case3' required =' required' value ='N' />N
			<button type = 'submit'>OK</button>
		</form>
	</body>
</html>

Re: Case à cocher.

par Vakarm » 29 août 2011, 16:07

En fait dans ton formulaire tu dois spécifier la valeur de ta checkbox.
<input name="ads" type="checkbox" value="valeur" checked>
La checkbox n'aura cette valeur que si elle a été cochée à la base.
donc pour savoir si elle est cochée, suffit que tu vérifie si
le $_POST ou $_GET est égal à la valeur spécifiée... ou tout bonnement s'il contient quelque chose, comme mentionné par Mazarini.

Re: Case à cocher.

par Mazarini » 29 août 2011, 15:44

On peut utiliser isset($_POST['macaseacocher']) pour savoir si la case est cochée (ou avec $_GET).