Récupérer les valeurs des checkboxs

Résolu/Fermé
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 - 4 oct. 2018 à 14:10
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 - 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>';



5 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
4 oct. 2018 à 14:18
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?
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
4 oct. 2018 à 14:31
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.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 4 oct. 2018 à 23:10

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....)
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
4 oct. 2018 à 20:58
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.
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
4 oct. 2018 à 21:10
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.
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
5 oct. 2018 à 22:56
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
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
6 oct. 2018 à 10:03
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";
}
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
6 oct. 2018 à 12:18

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... )

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
12 oct. 2018 à 17:18
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.
0