Formulaire avec un for

Eléphant du PHP | 124 Messages

14 févr. 2008, 01:02

Bonjour,

Je voudrais faire un formulaire avec une boucle :
<?
$j=0;
$req_07_sql = "SELECT * FROM messagerie WHERE destinateur=$id ORDER BY datetime DESC";
	$req_07 = mysql_query($req_07_sql);
	while ($row = mysql_fetch_assoc($req_07)) {
	$id_message = $row["id"];
	$expediteur_message = $row["expediteur"];
	$j++;
?>
<form id="form1" name="form1" method="post" action="">
<input name="<? echo "case_$j"; ?>" type="checkbox" id="<? echo "case_$j"; ?>" value="<? echo "$id_message"; ?>" />
</form>
<?
	}
	mysql_free_result($req_07);
	//---------------------------
// Partie qui ne fonctionne pas
for ($i=1; $i<=$j; $i++)
{
${'recept_'.$i}=(isset($_POST['case_$i'])) ? $_POST['case_$i'] : null;
echo ${'recept_'.$i};
}
?>
La boucle for ne veut pas fonctionner, quand je le fait sans for avec des valeurs entrées manuellement ça fonctionne.

Merci
Modifié en dernier par neo765 le 29 mai 2008, 15:13, modifié 1 fois.

Eléphant du PHP | 451 Messages

14 févr. 2008, 07:15

Bonjour,

Je ne comprends pas cet algo :
Il y a une première boucle while (sur les enregistrements) où l'on affecte des valeurs, incrémente un compteur et affiche un formulaire (pour chaque enregistrement) sans submit ni méthode action.
Puis une boucle for (de 1 au compteur d'enregistrements) qui récupère des variables post passées par un formulaire.

Si la boucle for doit récupèrer les variables du formulaire, il faudrait les lui envoyer non ?
Tout ça est dans le même fichier ou bien as-tu des fichier différents ?
Si tout est dans le même fichier, il faut peut être une condition pour savoir si la page a été accédée directement ou bien en soumettant le formulaire.

Que veux-tu faire précisement ?
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Eléphant du PHP | 124 Messages

14 févr. 2008, 11:43

Bah en faite, c'est pour supprimer des messages via une checkbox

Principe :

Pour chaque enregistrement je crée une checkbox portant un nom différent (l'incrémentassion de $j)

En récupère la valeur du checkbox pour chaque message avec :

Une boucle for :
isset($_POST['case_'])) ? $_POST['case_'] : null;
Ça fonctionne très bien quand il n'y a pas de boucle

Merci
Modifié en dernier par neo765 le 29 mai 2008, 15:14, modifié 1 fois.

ViPHP
ViPHP | 4039 Messages

14 févr. 2008, 12:11

et avec $i=0 plutôt que 1 ? et un echo de $j juste avant la boucle, pour savoir ce qu'il en est..
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
AB
ViPHP | 5818 Messages

14 févr. 2008, 12:19

//---------------------------
// Partie qui ne fonctionne pas
for ($i=1; $i<=$j; $i++)
{
${'recept_'.$i}=(isset($_POST['case_$i'])) ? $_POST['case_$i'] : null;
echo ${'recept_'.$i};
}
?>[/php]
Il faut écrire $_POST["case_$i"] donc avec des doubles quotes pour que $i soit interprété

Sinon je trouve un peu compliqué tes variables $recept
ça serait pas plus simple de faire un tableau
$recept = array();
for ($i=1; $i<=$j; $i++)
{
$recept[$i]=(isset($_POST["case_$i"])) ? $_POST["case_$i"] : null;
echo $recept[$i];
}

Eléphant du PHP | 124 Messages

14 févr. 2008, 14:29

Il faut écrire $_POST["case_$i"] donc avec des doubles quotes pour que $i soit interprété
Merci c'est good :wink: