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

Langage PHP Discussion :

Ajouter des champs à un formulaire via un bouton


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Ajouter des champs à un formulaire via un bouton
    Bonjour,

    Je voudrais pouvoir ajouter un champs dans un formulaire via un bouton. Je m'explique :

    J'ai un formulaire avec un champ qui peux avoir plusieurs valeurs je dois faire une requete sql en fonction des valeurs qu'on m'a mis dans mon champs (ce champs va contenir la valeur du where de ma futur requete) seulement dans une requete sql on peut mettre plusieurs critères dans le where => Ce champ doit pouvoir prendre plusieurs valeurs.

    Je pourrais mettre 10 champs l'un derrière l'autre et ignorer ceux qui sont vides mais c'est pas joli du tout...

    Je voudrais donc faire cela dynamiquement : J'aurais mon champ avec un bouton "+" a coté et si je clique sur ce bouton, il me remettrais un nouveau champ en dessous du précédent en décallant les autres champs et boutons qui suivent aussi vers le bas et ainsi de suite... Je pourrais ainsi avoir un nbre variable de ce champ.

    dans ma page suivante, je regarderais combien de champs j'ai et je ferais une boucle du style (PSEUDO-CODE):

    TANT QUE (i <= nbrChamps)
    {
    meschamp = meschamp +"," + $_REQUEST[monChamp[i])
    i++;
    }

    J'essaye d'être le plus clair possible mais c pas facile. Si vous avez des questions n'hesitez pas!

    Merci.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Points : 72
    Points
    72
    Par défaut
    Salut !

    Tu mets un bouton +, et une action Javascript:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="image" src="plus.gif" alt="" onclick="addField()"/>
    Dans ta fonction Javascript, tu rajoutes un input type="text" à la suite des autres déjà présents (tu nommes une div contenant tous les champs: id="divFields" par exemple).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function addField() {
         var field = "<input type='text' name='' value=''/>";
         document.getElementById('divFields').innerHtml += field;
    }
    Pour le name du field ajouté, tu comptes le nombre de champs textes déjà présents dans le divFields (X), tu ajoutes 1 à ce nombre et tu nommes ton nouveau champ (par exemple) : "field"+(X+1)

  3. #3
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Ou de façon un peu plus PHP car javascript hum ... c'est nul

    Tu peux toujours crée une fonction qui affiche le formulaire, une qui le vérifie et une qui le traite.
    En gardant les données pour construire ton form dans un tableau ca ne doit pas être très dur.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Points : 72
    Points
    72
    Par défaut
    Javascript, nul ?

    Sur cet exemple là, Javascript va éviter de recharger la page pour ajouter un champ, sans envoyer des variables qui indiqueraient un ajout. Bref gain de temps et de mémoire.

    Je sais que Javascript c'est pas top niveau rigueur du langage, mais bon c'est bien utile dans des moments comme ca.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Salut,

    Merci bcp pour les réponses, je vais essayer avec javascript meme si je suis pas une bete mais je vous tiens au courant....

  6. #6
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    le probleme de javascript c'est qu'il ne faut JAMAIS compter sur lui pour une fonction essentielle d'une page, a moins d'avoir l'autorité necessaire sur l'utilisateur pour l'obliger a l'activer.

    Le javascript peut etre désactivé. Il ne faut pas l'oublier.

    Pour gerer ca en php, il suffit de nommer tes input :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...name="variable[1]"...
    ...name="variable[2]"...
    ...name="variable[3]"...
    et $_POST['variable'] sera un tableau indexé

    Ensuite tu n'a plus qu'a gerer la construction de ton formulaire en php, et lorsqu'on clic sur "+ ligne", tu fait un count($_POST['variable']) pour construire une ligne de plus.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Points : 72
    Points
    72
    Par défaut
    Exact, le Javascript peut-être désactivé, mais le nombre de visiteurs l'ayant désactivé (en le sachant ou non) tend réellement à devenir nul.
    Après c'est vrai qu'au niveau potentiel du site, en mettant php ou alors un système php ou JS, c'est parfait.

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Il n'est pas seulement possible de désactiver JS : toutes les infos manipulées par JS sont également manipulable de manière générale par l'internaute s'il est un brin débrouillard, ce qui fait que JS n'est pas fiable. C'est pratique mais ça doit en rester là, le serveur ne doit pas compter sur JavaScript !

    JavaScript peut améliorer l'expérience utilisateur mais ne doit pas influer sur le comportement côté serveur.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Re,

    En fait c'est pour un intranet et tout le monde a javascript activé. Mais je suis assez nul avec le javascript...

    J'ai donc fait une page test simplifiée pour essayer ce que vous m'aviez conseillés...

    index.php

    <HTML><HEAD><TITLE>TEST AJOUT CHAMP FORMULAIRE</TITLE>
    <SCRIPT LANGUAGE="JavaScript">

    function addField()
    {
    var field = "<input type='text' name='' value=''/>";
    document.getElementById('divFields').innerHtml += field;
    }

    </SCRIPT>
    </HEAD>
    <BODY>

    <form name="test" method="post" action="Select.php" >

    <input name="divFields" type="text" size="10" maxlength="15">

    <input type="button" value="+" onClick="addField()">

    </form>

    </BODY>
    </HTML>



    Mais ca ne fonctionne pas...

    J'ai donc simplement un champ avec un bouton à coté. Je voudrais que quand je clique sur le bouton, il m'ajoute un champ dans mon formulaire dynamiquement.

    Vous pouvez tester ma page et si vous y arrivez se serait très sympa de me la renvoyer corrigée...

    Merci.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Points : 72
    Points
    72
    Par défaut
    Tiens j'ai fait quelques modifs:

    Code : 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
    <HTML><HEAD><TITLE>TEST AJOUT CHAMP FORMULAIRE</TITLE>
    </HEAD>
    <BODY>
    <SCRIPT LANGUAGE="JavaScript">
     
    function addField(){
        var field = "<input type='text' name='champ' value='' size='10' maxlength='15'/><br/>";
        document.getElementById('fields').innerHTML += field;
    }
     
    </SCRIPT>
    <form name="test" method="post" action="Select.php" >
    <div id="fields">
    <input name="champ" type="text" size="10" maxlength="15"><br/>
    </div>
    <input type="button" value="+" onClick="addField();">
    </form>
     
    </BODY>
    </HTML>
    Yogui, je suis d'accord avec toi, Javascript c'est seulement pour l'interface utilisateur, 'amuser l'oeil du client' comme on dit...

  11. #11
    Invité
    Invité(e)
    Par défaut
    Et pourquoi pas n'avoir qu'un seul champ de saisie, demander au client de saisir les valeurs tout simplement espacées et utiliser la fct explode() pour récupérer le tout dans un tableau?

    J'ai fait ça pour la partie 'recherche' sur mon site où il n'y a qu'un seul champ de saisie où peuvent être entrés plusieurs mots-clés.

    Je fais un explode(' ', $_POST['toto']) et je construis ma clause where avec le tableau dont j'ai compté les éléments au préalable pour savoir le nombre de mots-clés. Et bien sûr il faut interdire les caractères spéciaux que pourraient saisir les utilisateurs.

    webrider

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Points : 72
    Points
    72
    Par défaut
    C'est vrai que si c'est pour une utilisation dans cette optique, c'est mieux comme tu dis, en plus c'est pour une partie admin, donc pas forcèment besoin de chichis.

Discussions similaires

  1. Ajouter des champs dans un formulaire.
    Par Invité dans le forum ASP.NET
    Réponses: 19
    Dernier message: 08/11/2007, 10h20
  2. Ajouter des champs à un formulaire via un bouton
    Par Stass dans le forum Langage
    Réponses: 11
    Dernier message: 08/09/2006, 17h02
  3. Ajouter des champs a un formulaire via un bouton
    Par Stass dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/09/2006, 13h59
  4. Ajouter des champs dans un formulaire
    Par Luffy Duck dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/05/2006, 10h30
  5. Ajouter des CHAMPS dans une table via ASP
    Par hysteresis dans le forum Access
    Réponses: 1
    Dernier message: 27/09/2005, 15h39

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