Page 1 sur 1

génération de variable php et problème pour les réutiliser

Posté : 13 avr. 2005, 11:51
par chris
Bonjour,

Voici mon probleme : je génère dans un formulaire autant de checkbox qu'il y a d'entrée dans ma table sql, c'est à dire :
echo '<td><input type="checkbox" name="check'.$id.'" value="checkbox"></td>
Je valide le formulaire et j'arrive sur une autre page php qui doit afficher uniquement les elements "checkés"

pour cela il me faut verifier toutes les variables que le formulaire a envoyé

Mais comment nommer ces variables? J'aimerais creer un tableau, mais je vois pas comment avant l'envoi des informations, et une fois sur la deuxieme page, je ne sais pas comment les appeler.

voici ce que j'aimerais faire :
for ($i=0; $i <= $idmax; $i++)
{
print $check[$i];
};
J'envoie aussi la valeur maxi par le formulaire :
<input type="hidden" name="idmax" value="<? echo $idmax; ?>">

Posté : 13 avr. 2005, 11:54
par flitox
for ($i=0; $i <= $_POST['idmax']; $i++)
    {
        print $check[$i];
    };
Passe voir ceci : http://www.phpfrance.com/forums/voir_sujet-48.php

Posté : 13 avr. 2005, 11:54
par demipoulp
Par exemple :
echo '<td><input type="checkbox" name="check~'.$id.'" value="checkbox"></td> 
et
<?php
foreach($_POST as $nom => $valeur)
{
$pos = strrpos($nom,'~');
if ($pos ==true){
list( $reste, $id) = split('~',$nom);
//traitement
}
}
?>

Posté : 13 avr. 2005, 12:13
par sadeq
Pour quoi faire compliqué quand on peut faire simple...

Il faut savoir que HTML traite les champs homonymes comme un tableau.
si plusieurs champs ayant le même nom se trouvent dans le même formulaire, le submit envoi un tableau portant les valeurs de tous ces champs.
La seule condition est que le nom des champs doit finir par [] pour désigner un format tableau.

Exemple :
<form>
<input name=champ[]>
<input name=champ[]>
<input name=champ[]>
<input type=submit>
</form>
Désigne à HTML qu'il s'agit d'un tableau nommé champ de 3 cases

PHP peut reçevoir ce tableau dans une variable à l'aide de $_POST ou $_GET et le traiter exactement comme un tableau PHP.

Exemple :
echo "<form method=post>";
for ($i=0; $i<5; $i++)
 echo "<p><input type='checkbox' name='check[]' value='$i'> Check $i";

echo "<p><input type=submit value=Ok></form>";

echo "<p>Reçus :";
$check = isset($_POST["check"])?$_POST["check"]:null;
if ($check != null)
	foreach ($check as $item)
	      echo "<p>Item $item";

Posté : 13 avr. 2005, 14:24
par Invité
merci pour vos messages, ça marche parfaitement. C'est le plus beau jour de ma vie depuis celui ou j'ai fait dire des gros mots a ma sound blaster

Posté : 13 avr. 2005, 14:34
par flitox
Ta vie ne doit pas être très longue alors ;)