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

PHP & Base de données Discussion :

Ajout de zone de texte [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre actif Avatar de aljessy
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 319
    Points : 200
    Points
    200
    Par défaut Ajout de zone de texte
    Bonjour j'ai un petit problème.
    J'ai un petit formulaire et j'aimerais que lorque l'utilisateur clique sur le bouton "ajouter", qu'un autre champ de texte apparaissent pour le permettre de saisir plusieurs élément comme par exemple ajouter plusieurs pièces jointes à un formulaire.
    Voici un bout de code que j'ai fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <tr>
        <td><input tpye="text" name="val"/></td>
        <td><input type="submit" name="ajout"/><td>
    </tr>
    Faire aisément ce qui est difficile aux autres, voilà le talent. Faire ce qui est impossible au talent, voilà le génie.

  2. #2
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 161
    Points : 97
    Points
    97
    Par défaut
    Bonjour,

    pour ajouter des champs dynamique, il faut te tourner vers du javascript qui va rajouter du code html à ta page.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 183
    Points : 125
    Points
    125
    Par défaut
    Une manière propre de faire ça en quelques lignes peut-être d'utiliser le toggle JQuery :

    http://api.jquery.com/toggle/

    Tu places tes éléments dans une div :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div id="element_to_toggle" style="display: none;">
        <input type="text" name="mon_name" value="Ma valeur" />
    </div>
    Puis tu n'as plus qu'à suivre la documentation en lien ci-dessus.
    LikeZone
    Le meilleur du like

  4. #4
    Membre actif Avatar de aljessy
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 319
    Points : 200
    Points
    200
    Par défaut
    Merci les gars pour vos réponses mais un petit bout de code m'aiderais à mieux avancer. Car que faire si l'on peut ajouter un nombre très grand?
    Faire aisément ce qui est difficile aux autres, voilà le talent. Faire ce qui est impossible au talent, voilà le génie.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Une technique que j'ai utilisé qui marche pas trop mal, et qui évite de se servir de Jquery, ça mélange CSS/xHTML et JS :

    Tout d'abord, tu code ta propre fonction Toggle, qui va utiliser une propriété CSS : Display.
    Cette propriété Display peut prendre plusieurs valeurs (18 au total), celles qui nous intéresseront sont 'Block' et 'None'.
    Block signifie grossièrement que tu va afficher un élément de type Bloc (Cf. http://htmlhelp.com/reference/html40/block.html )
    None signifie, tu l'auras compris , ne pas afficher.

    Voilà donc la fonction en JS que tu placera entre des balises <script></script> ou dans un fichier *.js externe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function toggle('nomdetonblock'){
    	var div = document.getElementById('nomdetonblock')
    	if (div.style.display == 'none') {
    		div.style.display = 'block'
    	} else {
    		div.style.display = 'none'
    	}
    }
    Dans cette fonction, tu as un argument, l'id de la balise que tu veux afficher (Cf. exemple plus bas)

    Voilà, donc cette fonction tu va l'appeller au travers de la propriété onClick d'une balise (qui peut être un lien, un bouton, etc ...).
    Cette propriété onClick, déclenche une fonction lorsque l'on clique sur l'élément (ton bouton, lien, ...) qui correspond à la balise(donc un input, a href, etc ...) qui porte cette propriété.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <input type = "submit" name = "Afficher" onClick = "toggle('upload')" value = "Afficher" />
    <input type = "file" id = "upload" style="display: none"/>
    Dans le code ci dessus, l'appui sur le bouton Afficher va provoquer l'affichage de la balise upload.

    Voilà l'exemple pour un contrôle, pour plusieurs tu peux repartir de cette fonction, en faisant entrer une liste d'id correspondant aux contrôles que tu veux faire apparaître, par exemple.

    Maintenant, il te reste aussi Jquery qui est une formidable bibliothèque JS, à toi de voir !

    Cordialement,

    BENOIT J.

  6. #6
    Membre régulier Avatar de Billy KiT
    Inscrit en
    Mars 2011
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 66
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par sirbaldur Voir le message
    Bonjour,

    pour ajouter des champs dynamique, il faut te tourner vers du javascript qui va rajouter du code html à ta page.
    Salut, peut-être en manipulant les objets DOM, c'est la meilleure façon de créer des objets dynamiquement. Voici un code à adapter :

    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
    21
    22
    <script type="text/javascript"> 
    function ajouteChamps(ici) {
    	var newTR = document.createElement("tr"); // crée un élément tr
    	ici.appendChild(newTR); // ajoute le tr au tbody
    	var newTD = document.createElement("td"); // crée un élément td
    	newTR.appendChild(newTD); // ajoute le td au tr
    	//newTD.appendChild(document.createTextNode('toto')); pour ajouter du texte
    	var newINPUT = document.createElement("input"); // crée l'input
    	newINPUT.setAttribute('type','text'); // ajoute ses attributs
    	newTD.appendChild(newINPUT); // ajoute l'input au td
    	}
    </script>
     
     
    <input type="submit" name="ajout" onClick="ajouteChamps(document.getElementById('maTable'))" value="Ajoute un champ"/>
    <table>
    	<tbody id="maTable">
    		<tr>
    			<td><input type="text" name="val"/></td>
    		</tr>
    	</tbody>
    </table>

  7. #7
    Membre actif Avatar de aljessy
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 319
    Points : 200
    Points
    200
    Par défaut
    Merci les gars ca marche très bien mais comment faire pour recuperer les valeurs à chaque fois qu'on les rentre. je prend le cas de 5 valeurs par exemple
    Faire aisément ce qui est difficile aux autres, voilà le talent. Faire ce qui est impossible au talent, voilà le génie.

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par aljessy Voir le message
    Merci les gars ca marche très bien mais comment faire pour recuperer les valeurs à chaque fois qu'on les rentre. je prend le cas de 5 valeurs par exemple
    Y'a pas de différence avec un formulaire statique, les valeurs des input générés (soit avec une méthode display, soit avec une modification du DOM avec javascript) vont être transférées dans le tableau $_POST ou $_GET suivant la méthode que tu utilise.

  9. #9
    Membre actif Avatar de aljessy
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 319
    Points : 200
    Points
    200
    Par défaut
    vue que je ne connait pas à l'avance le nombre d'élément que l'utilisateur doit rentrer devrait je mettre une boucle while pour récuperer les champs? C'est a dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while(i>0){
        // i nombre de champs renseigner par l'utilisateur
        $ch+i=$_POST['val'];
        i--;
    }
    Faire aisément ce qui est difficile aux autres, voilà le talent. Faire ce qui est impossible au talent, voilà le génie.

  10. #10
    Membre régulier Avatar de Billy KiT
    Inscrit en
    Mars 2011
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 66
    Points : 73
    Points
    73
    Par défaut
    il faut donner un nom incremental à chaque champ texte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var nbINPUT = 0; // variable globale, initialisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nbINPUT ++;
    newINPUT.setAttribute('name','val'+nbINPUT); // val1, val2, val3, ...
    en PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $i=1;
    while (isset($_POST['val'.$i]))  { 
        ...;
        $i++;
        }
    à tester

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    plutôt faire un tableau : val[]

  12. #12
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Il y a un exemple dans le manuel ici

    C'est plus simple d'utiliser la méthode de stealth35 car dans ton code javascript il te suffit de générer un input supplémentaire sans incrément, ayant juste la forme d'un tableau comme "userfile[]" (pour reprendre l'exemple du manuel), et ensuite côté php il te suffit de lister ton tableau avec un basic foreach.

  13. #13
    Membre actif Avatar de aljessy
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 319
    Points : 200
    Points
    200
    Par défaut
    Merci pour votre aide
    Faire aisément ce qui est difficile aux autres, voilà le talent. Faire ce qui est impossible au talent, voilà le génie.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PPT-2003] ajouter unez zone de texte dans un graphique msgraph
    Par TomTom2000 dans le forum VBA PowerPoint
    Réponses: 2
    Dernier message: 10/12/2009, 16h03
  2. [AC-2007] ajout des zones de textes de meme types et meme code vba
    Par adem_dev dans le forum IHM
    Réponses: 1
    Dernier message: 17/11/2009, 04h59
  3. Réponses: 5
    Dernier message: 27/09/2009, 11h04
  4. Ajouter une zone de texte
    Par mademoizel dans le forum Langage
    Réponses: 2
    Dernier message: 26/03/2008, 13h35
  5. Comment ajouter une zone de texte sur excel?
    Par devlopassion dans le forum Excel
    Réponses: 2
    Dernier message: 03/09/2006, 13h12

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