Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour à tous,
j'ai un souci avec l'update de ma table avec checkbox, j'ai une erreur que je n'arrive pas à résoudre :
Warning: Invalid argument supplied for foreach()....../admin_membres_valide.php on line 26
Je vous joins les deux codes correspondants .
Merci de votre aide...
voici celui du formulaire :
?>
<form method='POST' action='admin_membres_valide.php'>
<?php
$_SESSION['pseudo'] = $donnees['pseudo'];
$_SESSION['email'] = $donnees['email'];
?>
<table width="100%" border="1">
<tr>
<td width='18%'><div align="center">Date d'inscription </div></td>
<td width='20%'><div align="center">pseudo</div></td>
<td width='18%'><div align="center">email</div></td>
<td width='10%'>Valider / <a href="admin_modifier_profil.php?id=<?php echo $donnees['id']; ?>">Modifier</a> </td>
<tr><td><?php echo date('d/m/Y', $donnees['date_inscription']); ?></td>
<td><a href="profil.php?id=<?php echo $donnees['id']; ?>"><?php echo $donnees['pseudo']; ?></a></td>
<td><?php echo $donnees['email']; ?></td>
<td><input type='checkbox' name='update[]' value="<?php echo $donnees['id'] ; ?>" /></tr>
</table>
<div align="right"><input accesskey="S" name="valider" value="valider" type="submit"></div><br />
</form>
<?php
}
else
{
echo '<h8>Il n\'y a plus de membre à valider</h8><p>';
}
?>
Et celui de la validation :
$update = isset($_POST['update']) ? $_POST['update'] : array();
$id = isset($_POST['id']) ? $_POST['id'] : array();
print_r($_POST);
if (sizeof($update)==0){
echo '<div class="alert alert-error">Vous n\'avez pas selectionné de membre à valider !</div>';
echo'<p>';
echo'<a href="admin_validation_membres.php">Retour à la validation des membres</a>';
exit;
}
else
{
foreach ($_POST['update'] as $id){
$sql='UPDATE membres SET valide="1" WHERE membres.id='.$id;
}
?>
Hors ligne
Saluton,
Deux choses
si tu transfères les valeurs de $_POST['update'] dans $update pourquoi ne pas utiliser plutôt $update dans ton foreach ?
Pourquoi ne pas construire une seule requête UPDATE avec une clause WHERE membres.id IN (liste des id construite avec un implode de $update) ?
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
J'ai modifié $_POST['update'] en $update (évidement cela ne change rien).
Je suis débutant en PHP, je n'ai jamais utilisé les "implode" et l'erreur est avant l'update SET non ?
Hors ligne
Saluton,
Ne jamais avoir utilisé implode est un défaut dont on ne peut se corriger qu'en l'utilisant.
En l'occurrence, faire une seule requête UPDATE en passant tous les arguments du filtre WHERE à un tableau IN(), me semble plus performant que de soumettre autant de requêtes UPDATE que de checkbox cochés.
Tu ne semblais d'ailleurs pas t'orienter vers cela puisque ta boucle foreach se contentait d'écraser la valeur de chaque $id par la suivante dans $sql qui n'est jamais soumise à MySQL
Les "id" étant mis dans des checkbox "update[]" je me demande d'ailleurs ce que tu testes avec
Pour moi, $_POST['id'] n'existe pas en sortie de ton formulaire.
Il n'en demeure pas moins vrai que le message d'erreur sur le foreach me laisse à penser que ton array $update n'a peut-être pas la structure que tu supposes.
Et pour pouvoir l'utiliser dans un implode, il te faut préalablement clarifier cela par un print_r($update), par exemple.
Amike.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Pages :: 1