Checkbox récupérer plusieurs valeurs

Résolu/Fermé
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 - 16 janv. 2017 à 23:35
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 - 17 janv. 2017 à 00:07
Bonjour,

J'ai un problème de traitement, quand je coche plusieurs checkbox, je n'est d'un seule choix qui apparait dans la base de données.

<?php
session_start();
if(isset($_SESSION['statut']) AND $_SESSION['statut'] != 3)
{
	header('Location: /site/index.php');
}
	
$bdd = new PDO('mysql:host=127.0.0.1;dbname=site;charset=utf8', 'root', '');

if(isset($_POST['envoyer']))
{
	if(!empty($_POST['titre']) AND !empty($_POST['urlphoto']) AND !empty($_POST['genre']) AND !empty($_POST['synopsis']) AND !empty($_POST['datedesortie']))
	{
		$titre = htmlspecialchars($_POST['titre']);
		$urlphoto = htmlspecialchars($_POST['urlphoto']);
		foreach($_POST['genre'] as $genres);
		$synopsis = htmlspecialchars($_POST['synopsis']);
		$datedesortie = htmlspecialchars($_POST['datedesortie']);
		
		$reqtitrefilm = $bdd->prepare("SELECT * FROM article WHERE titre = ?");
		$reqtitrefilm->execute(array($titre));
		$filmexist = $reqtitrefilm->rowCount();
		if($filmexist == 0)
		{
				$inserarticle = $bdd->prepare("INSERT INTO article(titre, photo, genres, synopsis, date, enlignedate) VALUES (?, ?, ?, ?, ?, NOW())");
				$inserarticle->execute(array($titre, $urlphoto, $genres, $synopsis, $datedesortie));
		}
		else
		{
			$info = 'Ce film est deja present';
		}
	}
	else
	{
		$info = 'Tous les champs doivent être rempli adminitrateur ';
	}
}

?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="style.css" />
<title>Administration</title>
</head>

<body>
<h1>Espace Administration membres</h1>
<br/>
<ul id="menu_horizontal">
	<li class="bouton_gauche"><a href="/site/index.php" rel="nofollow noopener noreferrer" target="_blank">Retour vers le site</a></li>
	<li class="bouton_gauche"><a href="index.php" rel="nofollow noopener noreferrer" target="_blank">Administration membres</a></li>
	<li class="bouton_gauche"><a href="articles.php" rel="nofollow noopener noreferrer" target="_blank">Administration articles</a></li>
	<li class="bouton_gauche"><a href="ajouterarticle.php" rel="nofollow noopener noreferrer" target="_blank">Ajouter un article</a></li>
	<li class="bouton_droite"><a href="deco.php" rel="nofollow noopener noreferrer" target="_blank">Se déconnecter</a></li>
	</ul>
	<br/>


<br/>
<?php if(isset($info)) { echo $info;  }  ?>
<div align="center">
<h2>Article a ajouter :</h2>
<form method="POST">
	
	<label for="titre">Titre du film : </label><input type="text" id="titre" name="titre" value="<?php if(isset($titre)) { echo $titre; }?>"/><br/><br/>
	<label for="urlphoto">Nom de la photo avec l'extention : </label><input type="text" id="urlphoto" name="urlphoto" value="<?php echo 'images/'; if(isset($urlphoto)) { echo $urlphoto; }?>"/><br/><br/>
	<label>Genres du film :</label><br/><br/>
	<input type="checkbox" id="Action" name="genre[]" value="Action"><label for="Action">Action</label>
	<input type="checkbox" id="Annimation" name="genre[]" value="Annimation"><label for="Annimation">Annimation</label>
	<input type="checkbox" id="Aventure" name="genre[]" value="Aventure"><label for="Aventure">Aventure</label>
	<input type="checkbox" id="Comedie" name="genre[]" value="Comedie"><label for="Comedie">Comedie</label>
	<input type="checkbox" id="Fantastique" name="genre[]" value="Fantastique"><label for="Fantastique">Fantastique</label>
	<input type="checkbox" id="Guerre" name="genre[]" value="Guerre"><label for="Guerre">Guerre</label>
	<input type="checkbox" id="Horreur" name="genre[]" value="Horreur"><label for="Horreur">Horreur</label>
	<input type="checkbox" id="Romantique" name="genre[]" value="Romantique"><label for="Romantique">Romantique</label>
	<input type="checkbox" id="Thriller" name="genre[]" value="Thriller"><label for="Thriller">Thriller</label>
	<br/>
	<br/>
	<label for="synopsis">Ecrire le synopsis :</label><br/>
	<textarea id="synopsis" name="synopsis" rows="10" cols="100"></textarea><br/><br/>
	<label for="datedesortie">Date de sortie du film au cinéma : </label><input type="text" id="datedesortie" name="datedesortie" value="<?php if(isset($datedesortie)) { echo $datedesortie; }?>"/><br/><br/>
	
	
    <input type="submit" name="envoyer" value="Envoyer"/>
     
</form>







</body>
</html> 








Merci d'avance de votre réponse.

1 réponse

Utilisateur anonyme
16 janv. 2017 à 23:53
Tu fais une mauvaise utilisation de la boucle foreach:

foreach($_POST['genre'] as $genres);


Foreach prend un tableau, il va stocker une à une la valeur de chaque clé dans la variable $genre, et exécuté un code, ici il n’exécute rien, et donc la valeur $genre que tu récupères seras toujours la dernière coché.

Remplace cette ligne par ça:

$genres = implode(';', $_POST['genre']);


Ça va collé chaque valeur du tableau avec des ";" entre chaque valeur, et donc tu passeras d'un array à un string pouvant être utilisé dans ta requête.
3
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
17 janv. 2017 à 00:07
Bonsoir, tous simplement super cette roquette :)

Merci bonne soirée !
0