21-05-2008, 04:35 PM
(Modification du message : 21-05-2008, 04:36 PM par Sephi-Chan.)
Il semble que j'ai fais trop court sur les résultats des checkbox.
Sur la page de réception, voilà ce qu'on reçoit en affichant $_POST en admettant que j'ai coché les 2 dernières cases :
Code :
<form action="index.php?p=deleteMessages" method="post">
<table><caption>Boîte de réception</caption>
<tr>
<th>#</th>
<th>Titre</th>
<th>Envoyeur</th>
</tr>
<tr>
<td><input type="checkbox" name="messagesToDelete[2]" id="message_2" value="2" /></td>
<td><label for="message_2">Titre du message d'id 2 !</label></td>
<td>Bob</td>
</tr>
<tr>
<td><input type="checkbox" name="messagesToDelete[4]" id="message_4" value="4" /></td>
<td><label for="message_4">Titre du message d'id 4 !</label></td>
<td>Bob</td>
</tr>
<tr>
<td><input type="checkbox" name="messagesToDelete[15]" id="message_15" value="15" /></td>
<td><label for="message_15">Titre du message d'id 15 !</label></td>
<td>bogoss_du_91</td>
</tr>
</table>
<p><input type="submit" value="Valider" /></p>
</form>
Sur la page de réception, voilà ce qu'on reçoit en affichant $_POST en admettant que j'ai coché les 2 dernières cases :
Code PHP :
<?php
echo '<pre>'; print_r($_POST); echo '</pre>';
/* Renvoie :
Array
(
[messagesToDelete] => Array
(
[4] => 4
[15] => 15
)
)
*/
Toutefois, cela ne me dispense pas de créer ma chaîne qui ira dans le IN de ma requête, ce que je fais grâce au script qui suit.
Code PHP :
<?php
/*
* Je crée mon itérateur, mon compteur
* ainsi que ma chaîne vide.
*/
$i = 0;
$n = count($_POST['messagesToDelete']);
$messagesToDelete = '';
/*
* Je peux boucler au choix sur la clé ou la valeur puisque
* j'ai donné à l'attribut value du formulaire l'identifiant
* du message. Je choisis cependant de boucler sur les clés
* données dans name, ça allège l'écriture du foreach.
*/
foreach($_POST['messagesToDelete'] as $id){
$messagesToDelete .= $id;
$i++;
/*
* Je teste si on n'a pas atteint le dernier élément
* du tableau. Si c'est vrai, alors je mets une virgule
* car un autre élément va suivre.
*/
if($i != $n){
$messagesToDelete .= ',';
}
}
echo $messagesToDelete;
// Renvoie : 4,15