Tu peux faire ce que tu veux si tu respecte la méthode suivante:
1. il faut nommer le checkbox en tant que tableau et lui affecter des valeurs correctes (valeurs à transmettre en cas de choix)
Exemple :
Soit le formulaire HTML suivant:
Code : Tout sélectionner
<form id="form1" name="form1" method="post">
<input type="checkbox" name="t[]" value="valeur 1">
<input type="checkbox" name="t[]" value="valeur 2">
<input type="checkbox" name="t[]" value="valeur 3">
<input type="submit" name="envoyer" value="Envoyer">
</form>
2. quand ce formulaire est envoyé par le bouton submit, le code PHP peut recevoir donc les données envoyées dans le checkbox "t" en le traitant comme un tableau :
<?
//Reception des valeurs du checkbox t
$t = $_POST["t"];
//Affichage des valeurs cochées de t (pour tester)
if ($t)
foreach ($t as $valeur){
echo "<p>$valeur";
}
?>
Remarque:
Un checkbox sous forme d'un tableau ne renvoi que les valeurs cochées.
Alors dans ton cas, voici une proposition de correction de ton code :
...
<form id="form1" name="form1" method="post" >
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><em><strong>N°</strong></em></td>
<td><em><strong>Nom</strong></em></td>
<td><em><strong>Prénom</strong></em></td>
<td> </td>
</tr>
<?php
//Vaut mieu utiliser un While et non un Do :
//pour accèder à la première ligne du Recordset1
while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)) {
?>
<tr>
<td><?php echo $row_Recordset1['numero']; ?></td>
<td><?php echo $row_Recordset1['nom']; ?></td>
<td><?php echo $row_Recordset1['prenom']; ?></td>
<td><input type="checkbox" name="numeros[]" value="<?php echo $row_Recordset1['numero']; ?>"
<?php
//Pour cocher le checkbox s'il l'était déjà au dernier affichage/postage
if ($_POST['numeros'] && in_array( $row_Recordset1['numero'] , $_POST['numeros'])) echo " CHECKED ";
?>
/></td>
</tr>
<?php
}
?>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="Afficher" /></td>
</tr>
</table>
</form>
...
<?php
//Récupèrer le postage
$numeros = $_POST["numeros"];
//Affichage des numéros cochés (pour tester)
if ($numeros)
foreach ($numeros as $valeur){
echo "<p>$valeur";
}
?>
Remarque :
Le code supplémentaire :
<?php
//Pour cocher le checkbox s'il l'était déjà au dernier affichage/postage
if ($_POST['numeros'] && in_array( $row_Recordset1['numero'] , $_POST['numeros'])) echo " CHECKED ";
?>
Permet simplement de cocher un checkbox si ce dernier a été sélectionné lors du dernier submit effectué. C'est un rappel de valeur.
La fonction
in_array(valeur, tableau) retourne vrai si la valeur se trouve dans le tableau