tableau dans formulaire

Petit nouveau ! | 2 Messages

24 sept. 2010, 11:29

Bonjour a tous,

Voila, en bref je voudrais submitter un tableau dans un formulaire. c'est a dire que l'utilisateur rempli le tableau lui-même et les infos sont gérées et enregistrées en DB lors de l'envoi du formulaire.

Y-a-t'il un autre moyen que de mettre un input text dans chaque case du tableau?

Merci d'avance

Bogizo

Mammouth du PHP | 19672 Messages

24 sept. 2010, 12:09

...je voudrais submitter un tableau...
:shock: Tu peux nous la refaire en français s'il te plait ??
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

24 sept. 2010, 13:08

...je voudrais submitter un tableau...
:shock: Tu peux nous la refaire en français s'il te plait ??
c'est a dire que l'utilisateur rempli le tableau lui-même et les infos sont gérées et enregistrées en DB lors de l'envoi du formulaire.

Mammouth du PHP | 19672 Messages

24 sept. 2010, 13:21

bogizo, je le fais avant que ce ne soit un modérateur qui intervienne et que tu te fasse un peu sonner les cloches :

Tu es sur un forum, tu disposes normalement d'un clavier de 102 touches ou plus si tu as un coté geek maniaque des super-clavier-de-la-mort-qui-tue-à-1000-touches et tu sembles (presque) t'exprimer normalement en français. Si on est bon jusque là, voudrais-tu s'il te plait expliquer la nature de ton soucis clairement en ne négligeant pas le fait que nous ne voyons ni ton code, ni même ton ordinateur ni comment ni avec quel outil tu codes.

Une question bien posée, ça signifie déjà que tu as compris le problème et ça représente en général les 3/4 de la réponse.

Merci de ton aimable attention :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
xTG
ViPHP | 7331 Messages

24 sept. 2010, 13:44

Vous êtes un peu rustres sur les bords. Pour ma part je la vois clairement la question et le problème posé : "Y-a-t'il un autre moyen que de mettre un input text dans chaque case du tableau?"

Avant de répondre à la question je souhaiterai savoir une chose. A qui est destiné ce formulaire ?
A n'importe quelle membre (auquel cas il faudra une structure simple) ou bien un administrateur(auquel cas il pourrai être possible de faire plus compliqué en n'utilisant qu'un champ textarea) ?

Eléphant du PHP | 314 Messages

24 sept. 2010, 13:44

Salut,

une solution serait de créer un input pour chaque case de ton tableau, avec une convention de nommage qui t'aide à te retrouver
<table>
   <tr>
     <td><input name="cell_1-1" /></td>
     <td><input name="cell_1-2" /></td>
     <td><input name="cell_1-3" /></td>
   </tr>
   <tr>
     <td><input name="cell_2-1" /></td>
     <td><input name="cell_2-2" /></td>
     <td><input name="cell_2-3" /></td>
   </tr>
   <tr>
     <td><input name="cell_3-1" /></td>
     <td><input name="cell_3-2" /></td>
     <td><input name="cell_3-3" /></td>
   </tr>
</table>
ici, on a cell_NUMLIGNE-NUMCOLONNE .
Cordialement,
Julien - http://laravel.fr/

Invité
Invité n'ayant pas de compte PHPfrance

24 sept. 2010, 13:57

Hello,

Merci déjà pour les réponses,

Cyrano, je ne savais pas que le verbe, certe franglisé à outrance, "submitter" pouvait être un problème sur un forum php... surtout que, comme la fait remarquer xTG, l'explication est présente (de par le "c'est-à-dire") ainsi que la question.
Mais soit, pour répondre à votre question xTG, ce tableau sera plutot ciblé "utilisateur lambda". Mais p-e auriez-vous un peu de temps pour argumenter la solution avec textarea? :o :)

Merci AoSIX, mais c'est justement ce que je voudrais éviter. J'ai déjà implémenté cette solution sur un autre projet mais je trouve cela un peu lourd niveau développement.

Personnellement, je suis étonné que rien n'ai jamais été créé pour pallier à ce "problème", dont, je suppose, je ne suis pas le seul à être confronté!

Bref, encore un grand merci pour vos réponses passées et futures..

Bien à vous

Bogizo

Eléphant du PHP | 314 Messages

24 sept. 2010, 14:04

Avec un peu de JS c'est assez simple....tu compte dynamiquement le nombre de ligne et de colonne dans ton tableau au moment du submit, tu transmet cette information avec les autres ( tu rempli un champs hidden par exemple ), après tu n'as plus qu'a faire des boucles while pour les lignes et les colonnes...tu peux pas faire plus simple, et ça reste...
...très facile si tu dois juste ajouter des lignes
...relativement simple si tu dois ajouter des colonnes.

Pour la solution du textarea, tu prends des principes des CSV...

ainsi l'utilisateur entre :

Code : Tout sélectionner

donnée1,donnée2,donnée3,donnée4 donnée5,donnée6,donnée7,donée8 ....
Chaque valeur entre les virgules représente la valeur d'une cellule, on parcours donc les colonnes, puis un retour à la ligne ( caractère "\n" ) représente une nouvelle ligne du tableau.
Cordialement,
Julien - http://laravel.fr/

Mammouth du PHP | 19672 Messages

24 sept. 2010, 15:02

Vous êtes un peu rustres sur les bords.
Ben oui, je suis désolé, dans ma jeunesse, je suis allé à l'école et je n'ai pas appris à écrire avec un téléphone portable :mrgreen:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 2291 Messages

24 sept. 2010, 15:29

Ben oui, je suis désolé, dans ma jeunesse, je suis allé à l'école et je n'ai pas appris à écrire avec un téléphone portable :mrgreen:
Non effectivement
Image

Je suis déjà dehors :langue:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Mammouth du PHP | 19672 Messages

24 sept. 2010, 15:35

Je suis déjà dehors :langue:
T'as intérêt, insolent galopin |(X
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 5462 Messages

24 sept. 2010, 17:55

Salut,

une solution serait de créer un input pour chaque case de ton tableau, avec une convention de nommage qui t'aide à te retrouver
<table>
   <tr>
     <td><input name="cell_1-1" /></td>
     <td><input name="cell_1-2" /></td>
     <td><input name="cell_1-3" /></td>
   </tr>
   <tr>
     <td><input name="cell_2-1" /></td>
     <td><input name="cell_2-2" /></td>
     <td><input name="cell_2-3" /></td>
   </tr>
   <tr>
     <td><input name="cell_3-1" /></td>
     <td><input name="cell_3-2" /></td>
     <td><input name="cell_3-3" /></td>
   </tr>
</table>
ici, on a cell_NUMLIGNE-NUMCOLONNE .
on peu directement faire des tableaux
<table>
   <tr>
     <td><input name="cell[1][1]" /></td>
     <td><input name="cell[1][2]" /></td>
     <td><input name="cell[1][3]" /></td>
   </tr>
   <tr>
     <td><input name="cell[2][1]" /></td>
     <td><input name="cell[2][2]" /></td>
     <td><input name="cell[2][3]" /></td>
   </tr>
   <tr>
     <td><input name="cell[3][1]" /></td>
     <td><input name="cell[3][2]" /></td>
     <td><input name="cell[3][3]" /></td>
   </tr>
</table>

Code : Tout sélectionner

Array ( [cell] => Array ( [1] => Array ( [1] => dsfdsf [2] => 2dsfds [3] => dsfdsfsf ) [2] => Array ( [1] => dfsdfdg [2] => hghg [3] => hfgh ) [3] => Array ( [1] => ezrzer [2] => rer [3] => ezrezrezr ) ) )

ViPHP
xTG
ViPHP | 7331 Messages

24 sept. 2010, 18:46

Les solutions que j'allai te proposer sont maintenant sur le tableau comme qui dirai. :)

Pour le textarea c'était en effet comme pour les csv ou bien en plus compliqué avec une sorte de gestion à la bbcode si cela te parle.
Mais pour de simples utilisateurs qui ne seront peut être pas présent sur ton site des jours et des jours durant ce serai beaucoup trop lourd.

Donc la meilleure méthode pour moi revient à utiliser ce qui a été proposé par stealth35 et de rajouter des actions JS afin de créer dynamiquement des colonnes/lignes.
L'utilisateur pourra donc faire le tableau qui l'intéresse et niveau traitement cela revient à de la manipulation d'array.

@cyrano : Je n'imagine même pas ta réaction face à une personne venant écrire en langage sms... Tu lui coupes la tête ? Personnellement même si cela me gêne il me faut bien plus que 2 misérables fautes pour me faire réagir de la sorte. La sagesse ne vient-elle pas avec l'âge ? :twisted:

Petit nouveau ! | 2 Messages

08 oct. 2010, 14:53

ok merci beaucoup à tous pour le coup de main!

Mammouth du PHP | 19672 Messages

08 oct. 2010, 16:44

@cyrano : Je n'imagine même pas ta réaction face à une personne venant écrire en langage sms... Tu lui coupes la tête ?
Ha ben la tête, c'est juste pour commencer l'échauffement, je te dirai pas ce que je fais du reste, il y a des âmes sensibles qui peuvent parcourir ce forum.

Ceci étant : on fait de la programmation. La clé de la réussite de nos programmes, c'est un minimum de rigueur. Mais ce n'est pas parce qu'en postant ici et qu'on est pas en train de programmer du code mais en train d'écrire un message qu'il devient normal d'envoyer cette rigueur par dessus bord. C'est d'abord et avant tout un état d'esprit, on l'a ou on ne l'a pas. Et à force, ça devient particulièrement agaçant tellement ça se généralise partout. Chassez le naturel, il revient au galop : c'est vrai ici aussi. Beaucoup de ceux qui ont des difficultés avec des bouts de codes manquent de discipline et n'auraient pas tant de problèmes du tout s'il faisaient un tout petit effort.

Du coup, avec le temps, on peut être tenté de penser de plus en plus souvent qu'apporter du support, c'est donner de la confiture à des cochons. Et qu'on ne vienne pas me dire que c'est une question de formation et qu'il faut quand même avoir fait des études informatiques pour maitriser : je suis autodidacte, en 1999 j'ai du poser la question à une vendeuse me présentant un ordinateur pour savoir comment allumer l'ordinateur, ce n'est pas une blague, j'ignorais la signification du logo sur le bouton de marche-arrêt. J'ai commencé à faire du HTML en 99 et du PHP en 2003, je n'avais jamais programmé quoique ce soit avant ça dans aucun langage. Malgré les apparences, ça fait maintenant 7 ans et demi, je n'en serais certainement pas à mon niveau actuel sans un minimum de rigueur et de discipline. Et si l'aventure te tente, compte le nombre de questions que j'ai posées ici : sur le total de mes interventions, c'est à peine significatif.

Je réagis donc avec ma propre expérience et je tente de montrer un exemple. Libre à chacun de le suivre ou non, mais les faits sont là, indiscutables.

My 2¢ :mrgreen:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: