Page 1 sur 2

Case à cocher.

Posté : 29 août 2011, 15:29
par Dom!
Bonjour,

Pourriez vous m'expliquer comment gérer des cases à cocher dans un tableau dynamique ? Si les cases sont cochées pas de problémes je peux traiter l'info dans ma base de données, en revanche si la case n'est pas cocher... comment traiter le fait qu'elle ne soit pas cocher ?

Merci pour votre aide !!!

Re: Case à cocher.

Posté : 29 août 2011, 15:44
par Mazarini
On peut utiliser isset($_POST['macaseacocher']) pour savoir si la case est cochée (ou avec $_GET).

Re: Case à cocher.

Posté : 29 août 2011, 16:07
par Vakarm
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.

Posté : 29 août 2011, 16:10
par sirakawa
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.

Posté : 29 août 2011, 16:25
par Dom!
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.

Posté : 29 août 2011, 16:43
par Vakarm
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.

Posté : 30 août 2011, 14:15
par Dom!
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.

Posté : 30 août 2011, 17:34
par AB
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.

Posté : 30 août 2011, 18:15
par stealth35
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.

Posté : 30 août 2011, 18:18
par AB
Oui oui effectivement c'est une étourderie de ma part :)

Re: Case à cocher.

Posté : 31 août 2011, 10:02
par Dom!
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.

Posté : 31 août 2011, 10:53
par Mazarini
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.

Posté : 01 sept. 2011, 02:06
par AB
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.

Posté : 01 sept. 2011, 11:38
par Dom!
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.

Posté : 01 sept. 2011, 18:17
par AB
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 !