Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1355 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Conjuger un formulaire et une liste d'items

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Conjuger un formulaire et une liste d'items

n°1848999
manuzed
Posté le 09-02-2009 à 15:41:19  profilanswer
 

Hello eve riz beau di
J'ai une liste de mes courriers que je fais apparaitre de cette manière :
 
 

Code :
  1. while ($donnees = mysql_fetch_array($resultat) )
  2. {
  3.         echo '<fieldset>';
  4.         ...
  5.         echo '</fieldset>';
  6.         }


 
 
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 :
 

Code :
  1. "<a href=\"modif.php?id_mc=$id_mc\" title=\"Modifier le courrier numéro $id_mc\"><img src=\"images/modif.png\" /></a> ";


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 :
 
 
 
 

Code :
  1. while ($donnees = mysql_fetch_array($resultat) )
  2. {
  3.         echo '<fieldset>';
  4.         ...
  5.         $nom_envoye=$id_mc.'_envoye';
  6. $nom_radiation=$id_mc.'_radiation';
  7. $variable.="<p><input type=\"checkbox\" name=\"$nom_envoye\" /> Courrier Envoyé<br />";
  8. $variable.="<input type=\"checkbox\" name=\"$nom_radiation\" /> Courrier Radié</p>";
  9.         ...
  10.         echo '</fieldset>';
  11.         }


 
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 :

Code :
  1. <form method="post" action="liste_arrivee_maj.php">

 
 
 
 
ce que je ne visualise pas c'est la récupération des variables :
cela devrait donner un truc du genre :
 

Code :
  1. if($_POST['la_bonne_variable']=='on'){je mets à jour ma BD}


 
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?

mood
Publicité
Posté le 09-02-2009 à 15:41:19  profilanswer
 

n°1849019
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 09-02-2009 à 16:14:03  profilanswer
 

pourquoi tu fait pas  

Code :
  1. while ($donnees = mysql_fetch_array($resultat) )
  2. {
  3. .....
  4.         $nom_envoye=$id_mc.'_envoye';
  5. $nom_radiation=$id_mc.'_radiation';
  6.             if($_POST[$nom_envoye]){ maj BD} // tu recupere $nom_envoye de ta BD, comme tu as fait pour le formulaire
  7. }


Message édité par infoman64 le 09-02-2009 à 16:15:32
n°1849023
manuzed
Posté le 09-02-2009 à 16:18:40  profilanswer
 

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!


Message édité par manuzed le 09-02-2009 à 16:22:35
n°1849026
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 09-02-2009 à 16:21:38  profilanswer
 

mais je comprends pas, ta boucle while ou tu affiche les données de ta bd, tu peut refaire la meme apres la validation?

n°1849028
omega2
Posté le 09-02-2009 à 16:26:21  profilanswer
 

Salut,
Essaye avec un truc du genre '<INPUT type="checkbox" value="15" nom="supprimer[]">' et ensuite en bouclant sur le tableau $POST['supprimer'] .


Message édité par omega2 le 09-02-2009 à 16:26:33
n°1849030
manuzed
Posté le 09-02-2009 à 16:28:40  profilanswer
 

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?

n°1849031
manuzed
Posté le 09-02-2009 à 16:31:02  profilanswer
 

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?

n°1849055
omega2
Posté le 09-02-2009 à 17:07:22  profilanswer
 

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.

n°1849064
manuzed
Posté le 09-02-2009 à 17:16:44  profilanswer
 

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 ;-)?

n°1849068
omega2
Posté le 09-02-2009 à 17:20:18  profilanswer
 

[:roane]  
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.

mood
Publicité
Posté le 09-02-2009 à 17:20:18  profilanswer
 

n°1849289
manuzed
Posté le 10-02-2009 à 09:10:38  profilanswer
 

Oui effectivement je n'avais pas compris!
je vais essayer ca!

n°1849335
manuzed
Posté le 10-02-2009 à 10:30:54  profilanswer
 


 
 
 
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

n°1849348
omega2
Posté le 10-02-2009 à 10:57:42  profilanswer
 

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)

n°1849368
manuzed
Posté le 10-02-2009 à 11:36:56  profilanswer
 

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!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Conjuger un formulaire et une liste d'items

 

Sujets relatifs
Controle de formulaire html, controle javascript par fonctionplusieurs enregistrements pour un seul formulaire
Un truc vraiment byzare avec un formulaire HTMLEnvoyer des données d'un formulaire dans ma base MySQL
Ne pas formater le formulaire à l'échecFormulaire + pièce jointe!
Problème de mise en page suite à l insertion d'un formulaireFORMULAIRE : Listes sélections dynamiques
[JAVA/EE] Export de données MySQL5 vers formulaire WordCreer sur la meme page un formulaire de recherche fixe et les resul
Plus de sujets relatifs à : Conjuger un formulaire et une liste d'items


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR