Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/03/2011, 09h10   #1
Membre régulier
 
Avatar de aljessy
 
Homme alexis Guy
Étudiant
Inscription : octobre 2010
Messages : 172
Détails du profil
Informations personnelles :
Nom : Homme alexis Guy
Âge : 25
Localisation : Cameroun

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2010
Messages : 172
Points : 80
Points : 80
Envoyer un message via Yahoo à aljessy
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 :
1
2
3
4
<tr>
    <td><input tpye="text" name="val"/></td>
    <td><input type="submit" name="ajout"/><td>
</tr>
aljessy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 13h02   #2
Nouveau Membre du Club
 
Inscription : juin 2004
Messages : 156
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 156
Points : 34
Points : 34
Bonjour,

pour ajouter des champs dynamique, il faut te tourner vers du javascript qui va rajouter du code html à ta page.
sirbaldur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 13h12   #3
Membre régulier
 
Inscription : février 2005
Messages : 183
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 183
Points : 84
Points : 84
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 :
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
loacast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 13h23   #4
Membre régulier
 
Avatar de aljessy
 
Homme alexis Guy
Étudiant
Inscription : octobre 2010
Messages : 172
Détails du profil
Informations personnelles :
Nom : Homme alexis Guy
Âge : 25
Localisation : Cameroun

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2010
Messages : 172
Points : 80
Points : 80
Envoyer un message via Yahoo à aljessy
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?
aljessy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 21h14   #5
Nouveau Membre du Club
 
Inscription : décembre 2004
Messages : 61
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 61
Points : 35
Points : 35
Envoyer un message via MSN à skanner
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 :
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 :
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.
skanner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 23h18   #6
Membre du Club
 
Avatar de Billy KiT
 
Inscription : mars 2011
Messages : 47
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 47
Points : 59
Points : 59
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 :
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>
Billy KiT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 15h12   #7
Membre régulier
 
Avatar de aljessy
 
Homme alexis Guy
Étudiant
Inscription : octobre 2010
Messages : 172
Détails du profil
Informations personnelles :
Nom : Homme alexis Guy
Âge : 25
Localisation : Cameroun

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2010
Messages : 172
Points : 80
Points : 80
Envoyer un message via Yahoo à aljessy
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
aljessy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 19h53   #8
Membre Expert
 
Inscription : septembre 2010
Messages : 1 240
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 240
Points : 1 562
Points : 1 562
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.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 10h11   #9
Membre régulier
 
Avatar de aljessy
 
Homme alexis Guy
Étudiant
Inscription : octobre 2010
Messages : 172
Détails du profil
Informations personnelles :
Nom : Homme alexis Guy
Âge : 25
Localisation : Cameroun

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2010
Messages : 172
Points : 80
Points : 80
Envoyer un message via Yahoo à aljessy
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 :
1
2
3
4
5
while(i>0){
    // i nombre de champs renseigner par l'utilisateur
    $ch+i=$_POST['val'];
    i--;
}
aljessy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 16h55   #10
Membre du Club
 
Avatar de Billy KiT
 
Inscription : mars 2011
Messages : 47
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 47
Points : 59
Points : 59
il faut donner un nom incremental à chaque champ texte :

Code :
var nbINPUT = 0; // variable globale, initialisation
Code :
1
2
nbINPUT ++;
newINPUT.setAttribute('name','val'+nbINPUT); // val1, val2, val3, ...
en PHP :

Code :
1
2
3
4
5
$i=1;
while (isset($_POST['val'.$i]))  { 
    ...;
    $i++;
    }
à tester
Billy KiT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 16h59   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 102
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 102
Points : 8 465
Points : 8 465
plutôt faire un tableau : val[]
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/03/2011, 17h43   #12
Membre Expert
 
Inscription : septembre 2010
Messages : 1 240
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 240
Points : 1 562
Points : 1 562
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.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/10/2011, 13h59   #13
Membre régulier
 
Avatar de aljessy
 
Homme alexis Guy
Étudiant
Inscription : octobre 2010
Messages : 172
Détails du profil
Informations personnelles :
Nom : Homme alexis Guy
Âge : 25
Localisation : Cameroun

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2010
Messages : 172
Points : 80
Points : 80
Envoyer un message via Yahoo à aljessy
Merci pour votre aide
aljessy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h14.


 
 
 
 
Partenaires

Hébergement Web