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

  FORUM HardWare.fr
  Programmation
  PHP

  Transmettre données ligne tableau

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Transmettre données ligne tableau

n°2331459
Coconet
Posté le 05-04-2019 à 12:48:26  profilanswer
 

Bonjour,
 
Désolé pour mon titre qui n'est pas très clair.
Je suis en cours d'apprentissage donc désolé si je ne suis pas au point. Je travaille sur une structure MVC avec le moteur de template Smarty et un template admin fournie. Bref, cela n'a vas pas changer grand chose à l'histoire.
Ceci est une étape d'un projet que je dois mener seulement en PHP (pas de JS, ni d'Ajax).
 
J'ai déjà fait une partie liste et fiche (pour les produits et les clients) avec une modification possible directement dans la fiche d'un client ou d'un produit (sans tableau).
Ici, la modification doit se faire dans la page qui liste.
 
Via une requête SQL, je remplie un tableau où chaque ligne (divisé en TD pour chaque donnée) affiche un "numéro de ligne", "reference", "désignation", "quantité", "prix" et au bout de la ligne un bouton "modifier".  
Pour ça, pas de soucis. Je laisse "quantité" en input de type text pour pouvoir le modifier.
 
Mon problème : d'habitude, j'utilise un <form> qui récupère les données que j'envois en method=POST.
Ici, via des input de type hidden, je peux transmettre toutes les données dont j'ai besoin SAUF la quantité saisie.
En effet, elle ne se trouve pas dans le même TD.
 
Quelqu'un peut-il m'éclairer sur la méthode à utiliser ?
 
Merci d'avance de votre aide.

Message cité 1 fois
Message édité par Coconet le 05-04-2019 à 12:50:03
mood
Publicité
Posté le 05-04-2019 à 12:48:26  profilanswer
 

n°2331461
MaybeEijOr​Not
but someone at least
Posté le 05-04-2019 à 13:44:17  profilanswer
 

Coconet a écrit :

En effet, elle ne se trouve pas dans le même TD.


 
Bonjour,
 
Tu veux dire pas dans le même "form", sinon je ne vois pas le problème... Si c'est bien ça, pourquoi il ne peut pas être dans le même "form" ?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2331463
Coconet
Posté le 05-04-2019 à 14:04:32  profilanswer
 

Non, je veux bien dire dans le même TD. Un form ne peut pas englober plusieurs TD.
Quelque chose doit m'échapper !
 
En gros j'ai besoin de ça (exemple avec 2 lignes) :  

Code :
  1. <table>
  2.   <tr>
  3.        <form>
  4.              <td></td>
  5.              <td></td>
  6.        </form>
  7.   </tr>
  8.   <tr>
  9.        <form>
  10.              <td></td>
  11.              <td></td>
  12.        </form>
  13.   </tr>
  14. </table>


Mais ça, c'est impossible non ?


---------------
Mon FeedBack
n°2331470
mechkurt
Posté le 05-04-2019 à 15:10:52  profilanswer
 

Bien sur que c'est possible tu peut même mettre un form autour de chaque input si ça t'amuses...
Mais dans le cadre de ton exercice, il est possible que ton instructeur attendes de toi que tu sache nommer tes inputs, par exemple : <input type=text" name="qte[32]" value"7" /> et $_POST['qte']['32'] = 7;
Après y'a des limites faut pas non plus envoyer 10 000 valeur en POST quand une seul change ! ^^


---------------
D3
n°2331474
Coconet
Posté le 05-04-2019 à 15:41:02  profilanswer
 

Effectivement, je nomme mes inputs car je les récupère dans un tableau $_POST ensuite.
Je comprends bien ce que tu me dis, merci pour ton aide d'ailleurs, mais mon IDE ne veut pas de mon form comme je le positionne et effectivement, il ne remonte rien.
Voici une partie de mon code dans mon fichier tpl, c'est une partie du tbody et j'utilise du "langage" smarty :

Code :
  1. <tbody>
  2.                                 {foreach from=$listerCommandes item=commande}
  3.                                     <tr>
  4.                                 <form method="POST" action="index.php">
  5.                                     <input type="hidden" name="gestion" value="commande">
  6.                                     <input type="hidden" name="action" value="maj_quantite">
  7.                                     <input type="hidden" name="f_date_livraison" value="{$date_liv}">
  8.                                     <input type="hidden" name="f_num_ligne" value="{$commande.numero_cmd}">
  9.                                     <input type="hidden" name="f_numero" value="{$commande.reference}">
  10.                                     <td>{$commande.numero_cmd}</td>
  11.                                     <td>{$commande.reference}</td>
  12.                                     <td>{$commande.designation}</td>
  13.                                     <td>
  14.                                         {if $action != 'form_modifier'}
  15.                                             {$commande.quantite}
  16.                                         {elseif  $action == 'form_modifier'}
  17.                                             <input type="text" name="f_quantite" value="{$commande.quantite}" size="3">
  18.                                         {/if}
  19.                                     </td>
  20.                                     <td>{$commande.prix}</td>
  21.                                     {if $action == 'form_modifier'}
  22.                                         <td class="pos-actions"><input id="mImage" type="image" name="btn_modifier" src="template/images/icones/m16.png" value="maj_quantite"></td>
  23.                                     {/if}
  24.                                  </form>
  25.                                
  26.                                 </tr>
  27.                             {/foreach}
  28. .......


Message édité par Coconet le 05-04-2019 à 15:41:27
n°2331475
rufo
Pas me confondre avec Lycos!
Posté le 05-04-2019 à 15:45:00  profilanswer
 

Ton <form> doit contenir tout le tableau. Donc, les inputs de type text contenant les quantités seront envoyés au serveur. Ca n'a rien à voir avec les td.
<form>
<table>
contenu du tableau avec tous les champs
</table>
Le bouton input type submit pour poster ton formulaire
</form>  
 
Edit : je ne vois vraiment pas l'intérêt dasn le cas présent de faire plusieurs <form> :??: Une seul suffit.

Message cité 1 fois
Message édité par rufo le 05-04-2019 à 15:46:26

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2331487
Coconet
Posté le 05-04-2019 à 16:17:32  profilanswer
 

rufo a écrit :

Ton <form> doit contenir tout le tableau. Donc, les inputs de type text contenant les quantités seront envoyés au serveur. Ca n'a rien à voir avec les td.
<form>
<table>
contenu du tableau avec tous les champs
</table>
Le bouton input type submit pour poster ton formulaire
</form>  
 
Edit : je ne vois vraiment pas l'intérêt dasn le cas présent de faire plusieurs <form> :??: Une seul suffit.


Effectivement, je n'ai qu'un seul form, je ne comprends pas pourquoi tu me dis ça.
Le problème c'est que mon form est dans le tableau, et pas l'inverse. Mon tableau comporte pleins de ligne et j'ai besoin d'un form par ligne.
 
Bon, je sais pourquoi ça ne fonctionne pas : "A form is not allowed to be a child element of a table, tbody or tr."


---------------
Mon FeedBack
n°2331490
mechkurt
Posté le 05-04-2019 à 16:22:33  profilanswer
 

Comme je te le disais tout a l'heure tu peux  avoir un form global au dessus de ta table et  

Code :
  1. <input type="text" name="f_quantite[{$commande.numero_cmd}]" value="{$commande.quantite}" size="3">


De cette facon tu aura un tableau f_quantite avec en clef ton num_cmd et en valeur ta quantité.
Le soucis c'est que tu soumets tout le tableau à chaque changement d'une seule valeur...
 
Du coups si tu n'as pas le droit à l'ajax, je me demandes si la solution ce n'est pas de mettre un form par td  :o


---------------
D3
n°2331497
MaybeEijOr​Not
but someone at least
Posté le 05-04-2019 à 16:37:26  profilanswer
 

D'après ta demande, et le code que tu fournies, tu as juste à mettre le form ainsi que les input cachés dans le td avec la quantité :

Code :
  1. {elseif  $action == 'form_modifier'}
  2.    <input type="text" name="f_quantite" value="{$commande.quantite}" size="3">
  3. {/if}


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2331499
rufo
Pas me confondre avec Lycos!
Posté le 05-04-2019 à 16:51:41  profilanswer
 

Coconet a écrit :


Effectivement, je n'ai qu'un seul form, je ne comprends pas pourquoi tu me dis ça.
Le problème c'est que mon form est dans le tableau, et pas l'inverse. Mon tableau comporte pleins de ligne et j'ai besoin d'un form par ligne.
 
Bon, je sais pourquoi ça ne fonctionne pas : "A form is not allowed to be a child element of a table, tbody or tr."


Non, à aucun moment tu n'as besoin d'avoir plusieurs <form> dans ton tableau :o Un seul suffit. A toi de nommer les inputs avec des id afin de repérer ceux qui correspondent à un produit en particulier. Ainsi, dans ton $_POST, tu vas récupérer pleins de inputs avec des valeurs. En analysant le contenu des "name", tu sauras à quel produit associer tel ou tel valeur de input ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta

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

  Transmettre données ligne tableau

 

Sujets relatifs
bash- recherche lignes dans bloc et affichage dans tableauConvertir un tableau Wordpress en format mobile AMP
Recupérer données d'un site webRecherche script PHP pour créer des bases de données
Copier tableau Excel sous Word page définiecopier coller de données selon conditions
suppression de ligne jusqu'à ligne videLigne blanche indésirable (RESOLU)
[PYTHON] Stocker du code dans une base de donnéesInversement chaine de caractères dans un tableau
Plus de sujets relatifs à : Transmettre données ligne tableau


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