Menu

Récupérer les valeurs des checkboxs [Résolu]

Messages postés
319
Date d'inscription
lundi 25 juillet 2016
Dernière intervention
10 décembre 2018
- - Dernière réponse : LaChaux78
Messages postés
319
Date d'inscription
lundi 25 juillet 2016
Dernière intervention
10 décembre 2018
- 12 oct. 2018 à 17:18
Bonjour,
Je souhaiterai pouvoir récupérer les checkboxs qui sont cochées. Mes cases à cocher correspondent aux membres issue de ma base de données. J'ai également une liste déroulante.
Toutes les valeurs cochées se trouvent dans le tableau $_POST['possession']. Par contre je récupére bien les items sélectionné de ma liste déroulante qui correspondent à chaque personne.
Pouvez-vous me dire ce qui ne va pas s'ils vous plait, je vous remercie.
$action 	= 'new';
$a 			= !empty($_GET['a']) ? $_GET['a'] : NULL;
$submit 	= !empty($_POST['submit']) ? $_POST['submit'] : NULL;
$haction 	= !empty($_POST['haction']) ? $_POST['haction'] : NULL;
$possession = !empty($_POST['possession']) ? $_POST['possession'] : NULL;

$idpers 	= !empty($_POST['idpers']) ? $_POST['idpers'] : '';
$idpup 		= !empty($_POST['idpup']) ? $_POST['idpup'] : '';
$grformat 	= !empty($_POST['grformat']) ? $_POST['grformat'] : '';
$ptformat 	= !empty($_POST['ptformat']) ? $_POST['ptformat'] : '';
$oldid 		= !empty($_POST['oldid']) ? $_POST['oldid'] : '';

switch($a) {
	case 'new': $action = 'new';  break; 
	case 'ls' : $action = 'list'; break;
	case 'mod': $action = 'mod';  break;		
	case 'sup': $action = 'sup';  break;
	default   : $action = 'new';  break; 
} 

if($action == 'list') {
	echo '<h1>'.$title.'</h1>';
	$sql = "SELECT *
			FROM cdc_classeurs 
				LEFT JOIN cdc_pupitres ON cdc_pupitres.idpup = cdc_classeurs.idpup
				LEFT JOIN cdc_personnes ON cdc_personnes.idpers = cdc_classeurs.idpers
			ORDER BY nom,prenom";
	$result = executeQuery($sql,$datas);

	echo '<ul>';
	while ($donnees = $result->fetch()) {
		$idpers 	= $donnees->idpers;
		$idpup 		= $donnees->idpup;
		$oldid		= "$idpers,$idpup";
		$lien   = $_SERVER["PHP_SELF"].'?a=mod&idpers='.$idpers.'&idpup='.$idpup.'&oldid='.$oldid;
		echo '<li> <a href="'.$lien.'">'.$donnees->pupitre.' => '.$donnees->nom.' '.$donnees->prenom.'</a>';
	}
	echo '</ul>';
	echo dmaj("sais_classeur.php");
	echo "</div></body></html>";
	exit;
}

$checked = $possession ? " checked " : "";

echo '<form method="post" name="cla" action="'.$_SERVER["PHP_SELF"].'" onsubmit="return verif()">';
	echo '<h1>'.$title.'</h1>';
	
	echo '<table style="float:right">';
	echo '<tr>';
	echo '<td class="libel">Sélectionner un Pupire pour le classeur:</td>';
	echo '<td class="data">'; echo $LDpup->write($idpup).'</td>';	
	echo '</tr>';
	echo '<tr>';
	echo '<td><input type="hidden" name="haction" value="'.$action.'" /></td>';
	echo '</tr>';
	echo '</table>';

echo '<p>NB: La saisie dans les zones à fond jaune pâle est obligatoire.</p>';

	$sql = "SELECT cdc_adherer.idpers,nom,prenom
			FROM cdc_adherer
				LEFT JOIN cdc_personnes ON cdc_personnes.idpers = cdc_adherer.idpers
			WHERE annee = :annee
			AND cdc_adherer.idclas = 4
			ORDER BY nom,prenom";
			$datas = array('annee' => $aadh);
			$result = executeQuery($sql,$datas);

	foreach ($result as $donnees) {
		echo '<input type="checkbox" name="possession[]" value="'.$donnees->idpers.'" '.$checked.' /> '.$donnees->nom.' '.$donnees->prenom.'<br/>';
	}
	echo '<br/>';

	echo '<td class="data"><input type="submit" name="submit" value="'.$btsub.'" /></td>';
echo '</form>';



Afficher la suite 

Votre réponse

5 réponses

Messages postés
23610
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 décembre 2018
0
Merci
Bonjour,

Je ne comprend pas ta question...
Si tu récupères biens les données qui sont dans : $possession
où est le souci ?

Et puis... de quelle autre liste parles tu ? Que veux tu en faire ?



Par contre, ton SWITCH ne sert à rien... surtout avec le IF que tu as mis ensuite...
Place donc le code de ton IF directement dans ton switch... ça serait plus logique.
comme ceci :
switch($a) {
	case 'new': $action = 'new';  break; 
	case 'ls' : 
    $action = 'list';     
    echo '<h1>'.$title.'</h1>';
    $sql = "SELECT *
        FROM cdc_classeurs 
          LEFT JOIN cdc_pupitres ON cdc_pupitres.idpup = cdc_classeurs.idpup
          LEFT JOIN cdc_personnes ON cdc_personnes.idpers = cdc_classeurs.idpers
        ORDER BY nom,prenom";
    $result = executeQuery($sql,$datas);

    echo '<ul>';
    while ($donnees = $result->fetch()) {
      $idpers 	= $donnees->idpers;
      $idpup 		= $donnees->idpup;
      $oldid		= "$idpers,$idpup";
      $lien   = $_SERVER["PHP_SELF"].'?a=mod&idpers='.$idpers.'&idpup='.$idpup.'&oldid='.$oldid;
      echo '<li> <a href="'.$lien.'">'.$donnees->pupitre.' => '.$donnees->nom.' '.$donnees->prenom.'</a>';
    }
    echo '</ul>';
    echo dmaj("sais_classeur.php");
    echo "</div></body></html>";
    exit;
    
    break;
  
	case 'mod': $action = 'mod';  break;		
	case 'sup': $action = 'sup';  break;
	default   : $action = 'new';  break; 
} 
 


Ensuite, dans ce bout de code
$sql = "SELECT cdc_adherer.idpers,nom,prenom
			FROM cdc_adherer
				LEFT JOIN cdc_personnes ON cdc_personnes.idpers = cdc_adherer.idpers
			WHERE annee = :annee
			AND cdc_adherer.idclas = 4
			ORDER BY nom,prenom";
			$datas = array('annee' => $aadh);
			$result = executeQuery($sql,$datas);

D'où vient la variable $aadh?
LaChaux78
Messages postés
319
Date d'inscription
lundi 25 juillet 2016
Dernière intervention
10 décembre 2018
-
Bonjour,
Effectivement je n'ai pas posté ma page complète avec les requète INSERT et UPDATE car je pense qu'elle sont inutile à mon problème ceux ci pour ne pas faire un post trop long.
Pardon je devrais récupérer les valeurs des checkboxs mais ce n'ai pas le cas en fait.
Lorsque je coche une case, je sélectionne également une valeur dans la liste déroulante et la variable $aadh corresponds à l'année d'adhésion de la personne que j'ai déclaré au sommet de la page.
jordane45
Messages postés
23610
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 décembre 2018
-

Pardon je devrais récupérer les valeurs des checkboxs mais ce n'ai pas le cas en fait.

Peux tu ajouter un
print_r($_POST);

et nous montrer ce que ça t'affiche lorsque tu cliques sur le bouton de ton formulaire ?
(après avoir coché des cases bien entendu....)
Commenter la réponse de jordane45
Messages postés
319
Date d'inscription
lundi 25 juillet 2016
Dernière intervention
10 décembre 2018
0
Merci
Bonjour,
Toujours besoin de votre aide. Souhaitez-vous que je vous post ma page complète pour pouvoir m'aider?
Pour faire simple j'ai mes cases à cocher, lors de l'INSERT tout ce passe bien et lors de l'UPDATE mes checkboxs sont décoché donc résultat je ne peux pas faire les modifications si besoin.
Merci.
yg_be
Messages postés
7037
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 décembre 2018
-
su tu souhaites de l'aide, je suggère que tu décrives concrètement ce que tu veux réaliser et ce qui ne fonctionne pas.

au lieu de "je", comme dans " j'ai mes cases à cocher", "je ne peux pas faire", "je coche une case", essaye d'utiliser des mots comme "le formulaire", "le code php", "l'utilisateur du navigateur", et de donner les noms des éléments: comment s’appellent les cases à cocher, où se trouve l'INSERT, ...

rien n'est clair.
Commenter la réponse de LaChaux78
Messages postés
319
Date d'inscription
lundi 25 juillet 2016
Dernière intervention
10 décembre 2018
0
Merci
Bonjour,
print_r($_POST);
Array ( [idpup] => 1 [haction] => new [possession] => Array ( [0] => 2 ) [submit] => Enregistrer ) 

Dans ma base de donnée l'enregistrement => idpup 1 et idpers 2
a bien été effectué.
Merci
yg_be
Messages postés
7037
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 décembre 2018
-
Il me semble que, dans le code que tu as partagé, tu ne fais rien pour utiliser les valeurs cochées. Et tu ne nous expliques pas ce que tu souhaites en faire.
Si tu veux récupérer toutes les valeurs cochées, tu peux faire, par exemple:
foreach ($possession as $valeurcochee) {
    echo $valeurcochee . " est cochée.\n";
}
Commenter la réponse de LaChaux78
Messages postés
23610
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 décembre 2018
0
Merci

j'ai mes cases à cocher, lors de l'INSERT tout ce passe bien et lors de l'UPDATE mes checkboxs sont décoché donc résultat je ne peux pas faire les modifications si besoin

Puréeeeee.... je viens de comprendre (enfin je crois....)

Ton souci c'est de cocher les cases LORSQUE TU LES AFFICHES suite à ta requête SELECT ??

Donc le seul bout de code qui nous est utile c'est
$sql = "SELECT cdc_adherer.idpers,nom,prenom
			FROM cdc_adherer
				LEFT JOIN cdc_personnes ON cdc_personnes.idpers = cdc_adherer.idpers
			WHERE annee = :annee
			AND cdc_adherer.idclas = 4
			ORDER BY nom,prenom";
			$datas = array('annee' => $aadh);
			$result = executeQuery($sql,$datas);

	foreach ($result as $donnees) {
    
		echo '<input type="checkbox" name="possession[]" value="'.$donnees->idpers.'" '.$checked.' /> '.$donnees->nom.' '.$donnees->prenom.'<br/>';
	}


Et en effet... il va falloir bosser sur la variable
$checked

Mais pour ça... il va falloir que tu ajoutes, dans ta requête select, le champ qui correspond à la valeur 'cochée ou non'.
Sans connaitre la structure de tes tables... IMPOSSIBLE de t'aider !

NB: C'est vraiment de plus en plus difficile de comprendre tes questions.... depuis le temps que je te le répète il serait bien que tu te mettes à faire des efforts ( des GROS EFFORTS) dans la rédaction de tes questions !
Il faut, lorsque tu rédiges tes questions, expliquer le plus CLAIREMENT possible ton souci et donner le code qui correspond.
Là, vu comment était rédigée ta question.. on pensait que ton souci était au niveau de l'insert (lors de la récupération des valeurs des cases à cocher... mais non... aucun rapport... )

Commenter la réponse de jordane45
Messages postés
319
Date d'inscription
lundi 25 juillet 2016
Dernière intervention
10 décembre 2018
0
Merci
Bonjour,
En fait je dois revoir ma table dans un premier temps, et l'organisation d'autres tables en rapport avec ce que je souhaitais faire. De ce fait je vais clore le sujet.
Je vous remercie.
Cordialement.
Commenter la réponse de LaChaux78