IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

HTML Discussion :

Mixer Table et Forms


Sujet :

HTML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Par défaut Mixer Table et Forms
    Salut a tous,

    J'ai un petit problème qui me pose de gros problèmes :p

    J'ai un tableau. Dans ce tableau des données, avec sur chaque ligne une checkbox pour sélectionner la ligne. En fin de tableau, un bouton pour supprimer/etc d'un coup toutes les lignes sélectionnées. J'ai donc un <form> avant mon <table> et un </form> après mon </table>.

    Parfait ça marche.

    Maintenant, je veux ajouter un formulaire dans le header de mon tableau (juste en dessous du nom des colonnes). C'est un formulaire pour ajouter facilement une nouvelle ligne.

    Le problème : entre le formulaire d'ajout et le formulaire de sélection (les checkboxe), comment gérer les <form> ??

    On ne peut pas mettre de <form> dans un <tr>, chrome me le supprime purement et simplement. On ne peut pas mettre de form entre le table et le tbody, chrome m'en fait un mix bizarre également.

    Bref... je vois pas trop comment m'en sortir ici. Est-ce que quelqu'un a une idée ? Ou alors une esquive ?

    Merci !

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Tu ne peux tout simplement pas mettre un formulaire dans un autre formulaire...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Par défaut
    Tu m'aides pas beaucoup... Je le sais bien ca, et je ne l'ai pas fait ici d'ailleurs.
    J'avais espere pouvoir faire comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <table>
      <form>
        <thead>
          <!-- ici mon formulaire d'ajout -->
        </thead>
      </form>
      <form>
        <tbody>
          <!-- ici mon formulaire de selection -->
        </tbody>
      </form>
    </table>
    Mais evidemment c'est impossible egalement. Une table est une table et n'accepte pas de form au milieu. C'est vraiment etrange, si tu as un formulaire sur plusieurs cellule au milieu d'un tableau, tu dois mettre tout ta table dans le formulaire !

    Mais du coup comment faire dans mon cas ?

  4. #4
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Tu te poses peut-être un faux problème : la première question étant "Pourquoi vouloir un second formulaire ?" Quelle fonctionnalité veux-tu ajouter ? Si effectivement c'est pour ajouter une ligne dans ton tableau, je ne vois pas le rapport avec un <form> Un formulaire est une zone de saisie destinée à collecter des données de l'utilisateur pour les envoyer au serveur... en l'occurrence, l'action de créer une ligne se passe sur le poste client, ça n'a a priori aucun rapport avec le serveur. Si en revanche tu as besoin de récupérer des données du serveur pour construire cette ligne, fais un appel ajax

    Mais si ce n'est pas le cas, ou si les données utiles ont déjà été collectées au chargement de la page, fais-toi une fonction qui manipule le DOM de ton tableau, place-la sur un <button> et ça roule

    PS : Singapour ? sans déconner ? c'est pas courant ça ^^

  5. #5
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    Ou alors tu peux utiliser un form_lien Avec des fonctions php et un tout petit peux de JavaScript

    Voici ce que j'utilise pour les grandes pages demandant quelques formulaire :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    function _a_form($id_form, $params, $contenu) {
    	$a_form = "<a href=\"#\" onclick=\"";
    	foreach($params as $param) {
    		$a_form .= "document.getElementById('" . $param[0] . "').value='" . $param[1] . "';";
    	}
    	$a_form .= "document.getElementById('" . $id_form . "').submit(); return false\">";
    	$a_form .= $contenu;
    	$a_form .= "</a>";
    	return $a_form;
    }
     
    function form_lien($id_form, $href, $params, $target = "", $champs = array()) {
    	$form = "<form id=\"" . $id_form . "\" method=\"post\" action=\"" . $href . "\" " . $target . ">";
    	foreach($params as $param) {
    		$form .= "<input type=\"hidden\" id=\"" . $param[0] . "\" name=\"" . $param[1] . "\">";
    	}
    	foreach($champs as $champ) {
    		$form .= "<input type=\"hidden\" name=\"" . $champ[0] . "\" value=\"" . $champ[1] . "\">";
    	}
    	$form .= "</form>\n";
    	return $form;
    }

    Et dans mes pages html j'utilise la fonction form_lien hors de toutes balise form afin de ne pas le faire répétter je ne sais combien de fois :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo form_lien("IDduForm", "UrlQuiTraiteraLesDonnees", array(array("IdDeLinputCacher", "id"), array("IdDeLinputCacher2", "pseudo")), "", array(array("do", "editer")));

    En ce qui concerne le array(array("do", "editer") Celui-là me sert pour mettre un input hidden avec l'action, c'est un paramètre supplémentaire non-obligatoire

    Et ensuite mon lien qui me servira de formulaire pour envoyer les données :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    _a_form("IDduForm", array(array("IdDeLinput", $arr['id']), array("IdDeLinputCacher2", $arr['pseudo'])), "Mon lien qui servira de formulaire")

    Voilà ! J'espère que cela t'aidera à faire ce que tu souhaite faire ^^

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Par défaut
    Merci pour vos reponses ! Pour preciser un peu plus ce que je cherche a faire, j'ai fait un screen cf piece jointe.

    J'ai donc bien 2 formulaires : ajouter une nouvelle entree, et supprimer des entrees existantes. Les 2 ont besoin de communiquer avec le serveur, car je veux ajouter/supprimer en bdd a chaque action.

    Seulement pour avoir cette presentation, je suis oblige de mettre le 1er formulaire dans la table. En fait, ce qui serait parfait pour moi, c'est de trouver un moyen d'avoir cette presentation mais avec mon formulaire en dehors du DOM de ma table (donc via hack CSS pour le placer entre le thead et le tbody de ma table... c'est moche mais ca m'arrangerait).

    Pour les solutions a coup de onclick ou de button+JS, en fait je prefererais vraiment trouver un truc compatible sans JS !
    Images attachées Images attachées  

Discussions similaires

  1. Afficher une table sous forme de tableau 2D
    Par kluh dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 21/10/2008, 18h21
  2. Ajouter dynamiquement une ligne à une table ET form
    Par etathome dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/09/2008, 16h33
  3. [MySQL] Affichage d'une table sous forme d'un tableau via PHP
    Par CYCLOPE91440 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/01/2007, 19h25
  4. Manipulation d'objet MS-Access (Copie de table, états, form)
    Par Mustard007 dans le forum Bases de données
    Réponses: 1
    Dernier message: 14/02/2006, 21h37
  5. Exporter le contenu d'une table sous forme d'un script SQL
    Par Invité dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 14/09/2005, 10h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo