Page 1 sur 1

Update multiple via checkbox

Posté : 20 août 2018, 17:42
par Vento
Bonjour,

Je souhaiterai effectuer la mise a jour de ma table de donnée "user" et spécialement pour les grades des user. Jusque là j'arrive à update un à un le grade des user. Dès lors que je sélectionne plusieurs checkbox et affecte la valeur souhaitée via le select pour changer leur grade, seulement un seul user se voit affecter par la mise à jour. J'ai recherché depuis 2-3 jours sur Internet et exploité diverses pistes mais sans résultat :(. Auriez-vous des conseils à me donner ? Merci par avance!
Voici mon code.
<?php

require_once('include/layout.php');

$query = $pdo->prepare
		(
			'SELECT * FROM user ORDER BY Pseudo'
		);

		$query->execute();
		$users = $query->fetchAll(PDO::FETCH_ASSOC);

	if(!empty($_SESSION['pseudo']) && $_SESSION['grade'] == "Admin"){

		$grade = ['Péon','Membre','Officier','Admin'];
		
		} else {
			header('Location: index.php');
			exit();
		}


if (isset($_POST['check'])) {
	
	if(isset($_POST['validate'])){

			$check = intval($_POST['check']);
			$grade_user = htmlspecialchars($_POST['select-grade']);

			$update_grade = $pdo->prepare('UPDATE user SET Grade = ? WHERE Id = ?');
            $update_grade->execute(array($grade_user, $check));  
         
            header('Location: admin.php');
            exit();
	}
} 
?>	

<main>

<form action ='admin.php' method='POST'>



<fieldset>
	<legend>ADMINISTRATION MEMBRES DE GUILDE</legend>
<table class='table-admin'>
	
<tbody>
	<thead>
		<tr>
			<th>Pseudo</th>
			<th>Date création de compte</th>
			<th>Grade</th>
			<th></th>
		</tr>
	</thead>
		<?php foreach ($users as $user) {?>
		<tr>
			<td><?= $user['Pseudo'] ?></td>
			<td><?= $user['DateCreationCompte'] ?></td>
			<td><?= $user['Grade'] ?></td>	
			<td><input type='checkbox' name="check" value="<?= $user['Id'] ?>"></td>
		</tr>

	<?php } ?>

</tbody>
</fieldset>

	<select name="select-grade" class="select-admin">
		<?php for($i = 0; $i <= 3; $i++) { ?>  
			<option value="<?= $grade[$i] ?>"><?= $grade[$i] ?></option>
		<?php } ?>
	</select>
</table>
<input type="submit" name="validate">
</form>


</main>

Re: Update multiple via checkbox

Posté : 22 août 2018, 10:51
par Saian
Salut, si tu coches plusieurs cases à cocher, $_POST['check'] est supposément un tableau et il faudrait donc adapter le code qui fait l'update.

Tu peux utiliser les fonctions print_r ou var_dump pour voir ce que tu as dans $_POST['check'] selon les différents cas (1 case cochée, plusieurs, aucune) et adapter ton code en fonction.

Re: Update multiple via checkbox

Posté : 25 août 2018, 14:38
par Vento
Bonjour et merci pour ta réponse !
J'ai vu de nombreux tuto dont la multiple checkbox s'effectue pour un et un seul utilisateur. Cependant, , j'ai oublié de préciser que l'update des checkbox devrait s'effectuer pour des utilisateurs différents.
Est ce que le principe reste le même ?