Le langage SMS est exclu sur les forums ProgBoards, tout message ne respectant pas la charte sera déplacé, modifié, ou supprimé par nos modérateurs.

Forum Web » HTML / XML » formulaire dynamique

Fser
Code-Libre.org
Citer - Posté le 12/08/2005 à 12:58
bonjour a tous,
j'aimerai creer un formulaire dynamique : j'ai donc pensé au javascript.
je m'explique, il faudrait qu'en un click sur "ajouter un element" par exemple, une nouvellle liste deroulante ( identique a la précédente ) apparaisse.
ça je pense pouvoir le faire, mais ensuite pour recuperer les données ?
j'avis lu un truc qui disait <element_form (...) name="machin[]" (...) />
vous connaissez un peu ?
bon j'admet ne pas avoir cherché de mon coté, mais j'ai d'autres chiens a caresser pour le moment.
merci d'avance.
``Montre-moi ton code, dissimule tes structures de données, je continuerai à être mystifié. Montre-moi tes structures de données et je n'aurai sans doute pas besoin de voir ton code, il me semblera évident.''
Alp
Code-Libre.org
RemonterCiter - Posté le 12/08/2005 à 13:20
ben tu construis comme ça :
premiere liste :
liste1
puis si le mec ajoute 2 listes, tu leur donne le nom liste2 liste3(facile! t'incrémentes le nombre a chaque fois quoi (sourire) )
ensuite pour récupérer en post, tu mets un hidden qui contient le nombre d'élem...
et la ou tu recup tu fais :
for($i=1;$i<$nb_elem+1;$i++)
{
$tab[$i] = $_POST['liste' . $i];
}
Non?
Fser
Code-Libre.org
RemonterCiter - Posté le 12/08/2005 à 14:40
Ouais en fait c'est carrément faisable (sourire)
``Montre-moi ton code, dissimule tes structures de données, je continuerai à être mystifié. Montre-moi tes structures de données et je n'aurai sans doute pas besoin de voir ton code, il me semblera évident.''
Vikrech
Visiteur
RemonterCiter - Posté le 13/08/2005 à 18:30
Ouais en fait t'as carrément plus simple (clein d'oeil)
En fait ce que Alp te donne comme solution c'est ce que fait PHP en interne. Donc autant profiter de ce qui est disponible

Donc pour ton html c'est effectivement la notation tableau de PHP qu'il faut utiliser à savoir ça :
<input type="checkbox" value="un truc n°1" name="liste[]" id="liste[]" />
<input type="checkbox" value="un truc n°2" name="liste[]" id="liste[]" />
<input type="checkbox" value="un truc n°3" name="liste[]" id="liste[]" />

Pour récupérer tout simple :
foreach ($_POST['liste'] as $one_elem) {
echo $one_elem, '<br />';
}

vila...
Alp
Code-Libre.org
RemonterCiter - Posté le 13/08/2005 à 19:03
Ah ouais bien joué, alors là je savais pas du tout que ca existait!
Merci de l'astuce Vikrech!
Alp
Fser
Code-Libre.org
RemonterCiter - Posté le 16/08/2005 à 15:50
ah voiilà c'est ça que j'avais lû dans un coin !
il reste plus qu'a recoder un truc qui marche pour afficher un nouveau formulaire ( car passer du "modele" a l'application ça a un peu merdé :-" )
``Montre-moi ton code, dissimule tes structures de données, je continuerai à être mystifié. Montre-moi tes structures de données et je n'aurai sans doute pas besoin de voir ton code, il me semblera évident.''
Fser
Code-Libre.org
RemonterCiter - Posté le 28/08/2005 à 03:44
Toujours dans le formulaire :
j'ai fait une fonction pseudo bidon :
function new_piece()
{
document.getElementById('form_pieces').innerHTML += "<tr><td>\n";
document.getElementById('form_pieces').innerHTML += "<?php pieces(); ?>";
document.getElementById('form_pieces').innerHTML += "</td><td>\n";
document.getElementById('form_pieces').innerHTML += "<input type=\"text\" name=\"form_etage[]\" />";
document.getElementById('form_pieces').innerHTML += "</td><td>\n";
document.getElementById('form_pieces').innerHTML += "<input type=\"text\" name=\"form_surf[]\" />";
document.getElementById('form_pieces').innerHTML += "</td><td>\n";
document.getElementById('form_pieces').innerHTML += "<input type=\"text\" name=\"form_sol[]\" />";
document.getElementById('form_pieces').innerHTML += "</td><td>\n</tr>";
alert('shit ! should have work !');
}

l'alert s'affiche, mais le contenu du div form_pieces non ...
si vous avez une idée ... (héhé
``Montre-moi ton code, dissimule tes structures de données, je continuerai à être mystifié. Montre-moi tes structures de données et je n'aurai sans doute pas besoin de voir ton code, il me semblera évident.''
Vikrech
Visiteur
RemonterCiter - Posté le 28/08/2005 à 13:44
Bon je te fais confiance, t'arriveras bien à trouver d'où viens ton problème. Surtout qu'à vu de nez ça a pas l'air de venir du Javascript.

Cependant, passons en revue les trucs monstrueux qu'on trouve dans ton bout de code :

1°/ Il serait plus utile au lieu de répéter bêtement document.getElementById('form_pieces') de faire comme ceci :
tavar = document.getElementById('form_pieces');
tavar.innerHTML + = "machin chose";

2°/ Euh innerHTML c'est pas une méthode standard du DOM. Utilise .firstChild.nodeValue à la place.
Pour plus d'informations sur le javascript et DOM (qui te permettent de manipuler très facilement tout document XHTML et XML) voici quelques liens récupéraient en 2 minutes sur un quelquonque moteur de recherche :
http://fr.selfhtml.org/javascript/objets/node.htm
http://www.w3.org/TR/DOM-Level-3-Core/ecma-script-binding.html

Le 2eme lien est juste une appendice d'un document très complet sur le DOM (du W3C bien entendu).


3°/ C'est quoi ce bout de code PHP qui se ballade dans le script ?? Tu espères qu'il va exécuter ta fonction PHP ? Rappellons cette belle maxime (enfin ça risque d'en devenir une dans les années à venir)
PHP => Côté serveur
Javascript, HTML, CSS => côté client et le webmaster devient plus content (exclamation)

Voilà en gros. En fait j'ai pas trop répondu à ta question, mais le débuggage devrait être une chose personelle, même si tu dois y passer des heures. Au pire tu t'aperçois que t'avais oublié un truc tout con, ou alors tu te rends compte que tu n'avais pas bien compris une base importante du langage.
Poly Progr@ms
Guest Star
RemonterCiter - Posté le 28/08/2005 à 13:51
Qui es-tu pour décider que le débuggage devrait être quelque chose de perso ? (eek) héhé

Ca va paraître une question très con mais "+=" c'est valide en javascript ?
Vikrech
Visiteur
RemonterCiter - Posté le 28/08/2005 à 14:34
Montez sur vos grands chevaux, dépensez de l'énergie à gogo.

"mais le débuggage devrait". Je ne suis pas en train d'imposer. Je dis que ça serait mieux. Ca apporte bien plus que de demandez au premier venu.
Fser
Code-Libre.org
RemonterCiter - Posté le 28/08/2005 à 20:21
poly > oui j'avais fait un exemple avec le += et ça semblait marcher.
virekch > la fonction est censé s'afficher ( en effeit meme chez le client c'est un truc inclus non donc ça devrait inclure ... bon puis si ça marche pas ( ce qui est fort probable) il sera toujours tant de trouver un truc autrement.
pieces() est censé lister les pieces disponnibles a l'affichage.
merci pour les liens je lierai un de ces jours.
( pff mon départ approche :s )
``Montre-moi ton code, dissimule tes structures de données, je continuerai à être mystifié. Montre-moi tes structures de données et je n'aurai sans doute pas besoin de voir ton code, il me semblera évident.''

Poster une réponse

STOP aux fautes volontaires !
Message
Formatage
Note: pour partager du code source, merci d'utiliser le wall !
Smileys (sourire) (yekyek) (clein d'oeil) (désapprouve) (triste) (cool) (langue) (confus) (gêné) (neutre) (eek) (surpris) (diable) (flèche) (exclamation) (question) (diable) (idée) (méchant)
Pseudonyme
Recopiez le code
v6 © Computaid SPRL 2005-2012 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,039 s - Crédits - Stats
1 connecté