Conjuger un formulaire et une liste d'items - PHP - Programmation
Marsh Posté le 09-02-2009 à 16:14:03
pourquoi tu fait pas
Code :
|
Marsh Posté le 09-02-2009 à 16:18:40
Et bien je crois que je ne peux pas faire ca :
:
quand je liste mes objets avec
1. while ($donnees = mysql_fetch_array($resultat) )
2. {
3. .....
4 }
tous est décoché par exemple
et c'est ensuite que l'utilisateur peut cocher
alors soit je trouve un moyen de le faire en AJAX (mais c'est chaud quand on ne connait pas)
soit par exemple il existe un moyen de lister tout ce qui est passé en POST sans forcement en connaitre le nom et ensuite je boucle dessus pour mes maj de BD.
car le probleme est bien la: j'ai une liste de $_POST['...'] qui arrive bien mais comme les noms sont générés, je ne sais pas comment les appeler!
Marsh Posté le 09-02-2009 à 16:21:38
mais je comprends pas, ta boucle while ou tu affiche les données de ta bd, tu peut refaire la meme apres la validation?
Marsh Posté le 09-02-2009 à 16:26:21
Salut,
Essaye avec un truc du genre '<INPUT type="checkbox" value="15" nom="supprimer[]">' et ensuite en bouclant sur le tableau $POST['supprimer'] .
Marsh Posté le 09-02-2009 à 16:28:40
tu peux refaire la meme apres la validation?
Et oui difficile d'expliquer sans montrer ;-)
imagine une base vierge
je rentre 3 courriers
mes cases à cocher sont vierges : les 3 courriers sont ni envoyés ni radiés
je liste mes courriers avec
1. while ($donnees = mysql_fetch_array($resultat) )
2. {
3. .....
4 }
dans les 3 courriers affichés je propose la possibilité de cocher "radié" et "envoyé"
imagine que je coche tout
dans ma page qui reçoit les modifs,
il y a donc 6 $_POST['...'] qui arrivent
qui se nomment :
1_radiation
2_radiation
3_radiation
mais aussi
1_envoye
2_envoye
3_envoye
et si je fais :
if (isset($_POST['1_radiation']))
{
echo 'test';
}
cela fonctionne niquel
mais comment récupérer tous les POST dans une feuille?
Tu comprends?
Marsh Posté le 09-02-2009 à 16:31:02
omega2, tu touches du doigt mon probleme :
ma liste affiche 50 courriers par page
si je fais
<INPUT type="checkbox" value="15" nom="supprimer[]">' et ensuite en bouclant sur le tableau $POST['supprimer']
comment savoir quelle courrier affecter?
il faut bien que je mette un identificateur unique sur chaque checkbox
et donc comment récupérer cet identifiant?
Marsh Posté le 09-02-2009 à 17:07:22
Le value contient l'identifiant.
Quand tu reçois les données, t'auras un tableau qui correspondra en gros à ça :
$POST = array(
'supprimer' => array(
8,
15,
43
),
'poster' => array(
22,
31
);
);
En bouclant sur $_POST['supprimer'], tu récupèreras successivement les valeurs 8, 15 et 43 et il te suffit de supprimer les éléments qui correspondent vu que le formulaire t'as indiqué clairement lesquels sont à supprimer.
Marsh Posté le 09-02-2009 à 17:16:44
Oula, tres intéressant comme idée ça :
en fait il faut plutôt que je nomme mes checkbox
comme ca
$nom_envoye='envoye_'.$id_mc;
$nom_radiation='radiation_'.$id_mc;
au lieu de
$nom_envoye=$id_mc.'_envoye';
$nom_radiation=$id_mc.'_radiation';
pour pouvoir suivre cette methode...
Par contre comment boucler sur
$_POST['envoye'] et $_POST['radiation'] sachant que dans le script je ne peux pas mettre des ID en dur bien sur ;-)?
Marsh Posté le 09-02-2009 à 17:20:18
Relis mieux mon exemple.
L'id n'a aucune raison d'être dans le "name" du composant.
L'id doit être dans le "value" du composant.
Marsh Posté le 10-02-2009 à 09:10:38
Oui effectivement je n'avais pas compris!
je vais essayer ca!
Marsh Posté le 10-02-2009 à 10:30:54
OK alors je recapitule :
$variable.="<p><input type=\"checkbox\" value=\"$id_mc\" name=\"envoyer[]\" /> Courrier Envoyé<br />";
$variable.="<input type=\"checkbox\" value=\"$id_mc\" name=\"radier[]\" /> Courrier Radié</p>";
et sur ma page de traitement,
si je liste les éléments du tableau
$test=$_POST['radier'];
print_r($test);
je vois bien les différents courriers que j'ai coché
voici un copier coller : Array ( [0] => 6407 [1] => 6408 [2] => 6409 [3] => 6410 ) ou on voit bien les trois courrier que j'ai coché
par contre je suis un bille en variable tableau... et je n'arrive pas à trouver un truc pour récupérer les différents numéros pour leur appliquer une mise à jour dans ma BD
Marsh Posté le 10-02-2009 à 10:57:42
http://fr3.php.net/manual/fr/book.array.php
et plus précisément http://fr3.php.net/manual/fr/contr [...] oreach.php (disons que c'est plus simple dans ce genre de cas)
Marsh Posté le 10-02-2009 à 11:36:56
ok niquel :j'ai fait ça :
$tableau_envoie=$_POST['envoyer'];
foreach($tableau_envoie as $courrier_a_envoyer)
{
echo $courrier_a_envoyer.'<br />';
}
$tableau_radiation=$_POST['radier'];
foreach($tableau_radiation as $courrier_a_radier)
{
echo $courrier_a_radier.'<br />';
}
je n'ai plus qu'a faire une opération par numéro de courrier!
Marsh Posté le 09-02-2009 à 15:41:19
Hello eve riz beau di
J'ai une liste de mes courriers que je fais apparaitre de cette manière :
Chaque courrier étant dans un fieldset
je passe sur le code en détail bien sur
Ce que je fais d'habitude pour modifier un courrier (ou un item quelconque)
c'est ce genre de truc :
qui amène vers une page différente.
Mais ce que je cherche à faire cette fois c'est pour chaque courrier mettre une case à cocher ce qui donne ceci :
Une simple case à cocher pour mettre le courrier "à envoyer" et ou "radié"
le fait de mettre des cases à cocher me permettrai de cocher X courriers à la fois sans avoir à modifier les X courriers séparément dans une page de traitement différente pour chaque courrier.
le tout etant englobé dans un formulaire :
ce que je ne visualise pas c'est la récupération des variables :
cela devrait donner un truc du genre :
mais comme je génère le nom de la case à cocher avec l'id du courrier + une partie fixe (pour différencier envoyé et radié)
je ne vois pas trop comment récupérer mes données
quelqu'un a déja fait ce genre de truc?