Transmettre données ligne tableau - PHP - Programmation
Marsh Posté le 05-04-2019 à 13:44:17
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" ?
Marsh Posté le 05-04-2019 à 14:04:32
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 :
|
Mais ça, c'est impossible non ?
Marsh Posté le 05-04-2019 à 15:10:52
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 ! ^^
Marsh Posté le 05-04-2019 à 15:41:02
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 :
|
Marsh Posté le 05-04-2019 à 15:45:00
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.
Marsh Posté le 05-04-2019 à 16:17:32
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. |
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."
Marsh Posté le 05-04-2019 à 16:22:33
Comme je te le disais tout a l'heure tu peux avoir un form global au dessus de ta table et
Code :
|
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
Marsh Posté le 05-04-2019 à 16:37:26
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 :
|
Marsh Posté le 05-04-2019 à 16:51:41
Coconet a écrit : |
Non, à aucun moment tu n'as besoin d'avoir plusieurs <form> dans ton tableau 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
Marsh Posté le 05-04-2019 à 12:48:26
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 édité par Coconet le 05-04-2019 à 12:50:03