Insérer les valeurs des checkbox

Résolu/Fermé
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 7 avril 2015 à 17:36
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 8 avril 2015 à 15:41
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;
	}
}
A voir également:

3 réponses

papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
8 avril 2015 à 07:41
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
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
8 avril 2015 à 12:15
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;
	}
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
8 avril 2015 à 15:41
J'ai résolu mon problème.
0