Insérer les valeurs des checkbox [Résolu/Fermé]

Signaler
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
-
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
-
Bonjour,
Je ne sais pas faire pour insérer les valeurs de mes cases à cocher dans ma BDD, pouvez-vous s'ils vous plait me guider un peu.
Actuellement j'ai ma liste de membres avec une case à cocher associé à chaque membre.
Je sélectionne plusieurs membres, il y a uniquement la première sélection qui est inséré.
Voici mon formulaire qui comprends
  • la liste des membres
  • les checkbox associé à chaque membre
  • l'input pour rentrer une date.

Merci si vous pouvez prendre un peu de votre temps pour moi.
<?php
if(isset($_POST['action'])) {
	
	$id_repetition			= isset($_REQUEST['id_repetition']) ? $_REQUEST['id_repetition'] : '';
    $nom_repetition		= isset($_POST['nom_repetition']) ? Security::clean($_POST['nom_repetition']) : '';
    $date_repetition		= isset($_POST['alt_date_repetition']) ? $_POST['alt_date_repetition'] : '';
	$present_repetition	= isset($_POST['present_repetition']) ? $_POST['present_repetition'] : '';

	$PresenceRepetition = new Repetition_class($id_repetition, $nom_repetition, $date_repetition, $present_repetition);
	$VerifRepetition = $PresenceRepetition->VerifRepetition();
	
	if($VerifRepetition == 'success') {
		
		if($PresenceRepetition->AjoutRepetition()) {
			echo '<span class="success-info">L\'enregistrement c\'est bien effectué.</span><br/><br/>';
		} else {
			$erreur[] = "Une erreur est survenue";
		}
		
	} else {
		$erreur[] = $VerifRepetition;
	}	
}

if (isset($erreur)) {
	echo output_errors($erreur);
}
?>

<div id="ListeParticipant">
	<form id="formulaire" action="" method="post">
		<span style="float: right";>Date de la Répétition
			<input name="date_repetition" id="date_repetition" class="ajout_repetition" size="30" type="text" value="">
			<input type="hidden" id="alt_date_repetition" name='alt_date_repetition'>
		</span>
			<table cellpadding="0" cellspacing="1">
				<tr>
					<th width="36%">Présent</th>
				</tr>
<?php
	$sql = "SELECT *
			FROM tb_participant
			LEFT JOIN tb_adherent
				ON tb_adherent.id_adherent = tb_participant.rid_adherent
			WHERE actif = 1
			AND repetition = 1
			ORDER BY nom, prenom ASC";
	$requete = $bdd->prepare($sql);
	$requete->execute();
		
	while($donnees = $requete->fetch()) {
?>
				<tr>
					<td width="30%"><input type='checkbox' name='present_repetition' class='styled' value="<?php echo $donnees['id_adherent'];?>" /><label for="id"><?php echo $donnees['nom'] . ' ' . $donnees['prenom'];?></label></td>
				</tr>
<?php
	}
?>
			</table>
				<input name="action" value="ajouter" type="hidden" />
				<a href="javascript:void(0)"><input type="submit" class="submit" value="Enregistrer"/></a>
			
	</form>					
</div>

Voici ma classe
<?php
class Repetition_class {
	
	private $id_repetition;
	private $nom_repetition;
	private $date_repetition;
    private $present_repetition;
	
	private $bdd;
	
	public function __construct($id_repetition, $nom_repetition, $date_repetition, $present_repetition) {
		
		$this->id_repetition			= $id_repetition;
		$this->nom_repetition		= $nom_repetition;
		$this->date_repetition		= $date_repetition;
		$this->present_repetition 	= $present_repetition;
		
		$this->bdd 					= bdd();
	}
	public function ChampsVide() {
		return(empty($this->date_repetition)) ? true : false;		
	}
	
	public function VerifRepetition() {
		if($this->ChampsVide()) {
			$erreur = 'Veuillez remplir la date de la Répétition';
		} else {
			$erreur = 'success';
		}
		return $erreur;
	}
	
	public function AjoutRepetition() {
		$sql = "INSERT INTO tb_repetition(nom_repetition, date_repetition, present_repetition)
				VALUES(:nom_repetition, :date_repetition, :present_repetition)";
		$requete = $this->bdd->prepare($sql);
		$success = $requete->execute(array(
									'nom_repetition' 		=> $this->nom_repetition,
									'date_repetition' 		=> $this->date_repetition,
									'present_repetition' 	=> $this->present_repetition,
									));
		return $success;
	}
}

3 réponses

Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
3
Bonjour
Pour la récupération des checkbox sélectionnée, je ne récupére que la dernière.
J'avais déjà oublié les accolades étant donné que plusieurs valeurs peuvent être envoyée.
name="present_repetition[]"

J'ai bouclé ma requète INSERT avec foreach() mais rien n'y fait toujours 1 case de récupérer même si j'en sélectionne plusieurs.
Pouvez-vous m'aider s'ils vous plait.
Merci
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
3
Bonjour
J'ai fait ma requète INSERT avec un implode, ce qui donne..
Mon echo me retourne bien toutes les cases que j'ai coché mais dans ma BDD ça me retourne rien.
Avez-vous une idée s'ils vous plait.
Merci

	public function AjoutRepetition() {

			$id_adherent = "'" . implode("','", $_POST['present_repetition']) . "'";
			
			 echo "La checkbox $id_adherent a été cochée<br><br/>";
			 
			$sql = "INSERT INTO tb_repetition(nom_repetition, date_repetition, present_repetition)
					VALUES(:nom_repetition, :date_repetition, :present_repetition)";
			$requete = $this->bdd->prepare($sql);
			$success = $requete->execute(array(
										'nom_repetition' 		=> $this->nom_repetition,
										'date_repetition' 		=> $this->date_repetition,
										'present_repetition' 	=> $id_adherent,
										));
			return $success;
	}
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
3
J'ai résolu mon problème.