begin process at 2012 05 29 22:58:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Autre

 > 

Récupération des champs d'un formulaire dynamique


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Récupération des champs d'un formulaire dynamique

vendredi 5 septembre 2008 à 22:45:06 | Récupération des champs d'un formulaire dynamique

Crabece

Bonjour à tous,

Je vous expose mon problème en essayant d'etre le plus claire possible :

Je travaille actuellement sur un site de vente en ligne et mon problème survient lors de la consultation du panier.
En gros voici un exemple de code retourné par php :

<form id="form" name="panier">
<div id="un" class="listeproduits l">
<img src="images/produit.jpg" alt="exemple produit" />
<div class="apropos s">
<h2>Serpent et echelle mag.</h2>
<p>Colisage : <strong>48 par boite.</strong></p>
</div>
<div style="display: block; position: relative; float: left; margin: 10px 0 0 0;">
<input name="quantityUBON03830" type="text" style="width: 50px;" value="1" onchange="remplissage();"/>
</div>
<input style="display: block; position: relative; float: left; margin: 10px;" value="0" name="prixUBON03830">$</p>
<input style="display: block; position: relative; float: left; margin: 10px; font-weight: bold" value="0" name="subtotalUBON03830">$</p>
<div style="display: block; position: relative; float: right; margin: 10px 20px 0 0;">
<input type="checkbox" />
</div>
<span class="clear"></span>
</div>
<input type="hidden" value="UBON03830" name="id">



<div id="un" class="listeproduits l">
<img src="images/produit.jpg" alt="exemple produit" />
<div class="apropos s">
<h2>Puzzle cube 15 mcx. safari</h2>
<p>Colisage : <strong>24 par boite.</strong></p>
</div>
<div style="display: block; position: relative; float: left; margin: 10px 0 0 0;">
<input name="quantityPIKO04230" type="text" style="width: 50px;" value="1" onchange="remplissage();"
/>
</div>
<input style="display: block; position: relative; float: left; margin: 10px;" value="0" name="prixPIKO04230">$</p>
<input style="display: block; position: relative; float: left; margin: 10px; font-weight: bold" value="0" name="subtotalPIKO04230">$</p>
<div style="display: block; position: relative; float: right; margin: 10px 20px 0 0;">
<input type="checkbox" />
</div>
<span class="clear"></span>
</div>
<input type="hidden" value="PIKO04230" name="id">
[...]



</form>

Voici donc la description de mon problème :

En prennant un exemple concret, je souhaite via JS récuperer et manipuler les valeurs de chaque champs.
Par exemple lorsque l'on change la quantité :

        function remplissage(){
           
            var id = document.panier.id.value;
            var total = (document.panier.quantity+id.value * document.panier.prix+id.value);
            document.panier.subtotal+id.value = total;
var total2 = '';
for(i=0;i<nbChampsSubtotal;i++)                                                                                    // calculer les subtotaux de chaque produits
{
total2 += document.panier.subtotal+id.value;                                                                
}

            document.getElementById('resultat').innerHTML = total;                                           //champs en bas de page qui fait les resultat de chaque subtotal
        }

Bien sur le script ci-dessus ne marche pas à cause de la concatenation pour recuperer le nom de chaque champs, mais je pense que vous avez compris l'idée...

Je suis ouvert à toutes critiques / propositions

Merci de votre aide

samedi 6 septembre 2008 à 09:47:28 | Re : Récupération des champs d'un formulaire dynamique

bultez

Membre Club
Réponse acceptée !


bonjour,

le plus "raisonnable" serait de changer les name.

quel que soit le langage pas simple de gérer des "variables" du style nom??? ou ?? est inconnu.

je te dirais bien de mettre des id "évolutifs" style qte1, pri1, qte2, pri2....
mais ça ne changerais rien coté serveurn où tu auras les mêmes soucis :
comment gérer $_POST['quantity????on_ne_connait_aps_la_suite???']

je te propose plutôt :

<form name="frm">
        <input type="text" name="qte[]"...      oui, oui avec des crochets pour faciliter
        <input type="text" name="pri[]"...      le traitement coté php !

        <input type="text" name="qte[]"...
        <input type="text" name="pri[]"...

....
</form>

for ( var n=0; n< document.frm["qte[]"].length; n++ )
{   traitement de document.frm["qte[]"][n] et de document.frm["pri[]"][n] ... }

et coté php, $_POST['qte'] et $_POST['pri'] sont des Array


si tu n'a pas le choix, mais il vaudrait mieux !!!!
tu peux utilsier :

    for ( n=0;n<frm.elements.length;n++)
   {    if (frm.elements[n].type=="text")
      {    si le name est du style "quantity123456789", en tirer le 123456789
               pour en déduire prix123456789    }   
    }
   même punition coté php


Cordialement     Bul  [mon Site] [M'écrire]
dimanche 7 septembre 2008 à 06:39:50 | Re : Récupération des champs d'un formulaire dynamique

Crabece

Merci bien pour ton aide,

Pour ceux que ca interesserai, j'ai opté pour la 2ème solution en incrementant une variable a chaque champs:

        function remplissage(){
            var nbchampstexteparproduit = 5;
            var prix = '';
            var qte = '';
            var total = new Number();
           
            for ( var n=0; n< document.panier.elements.length; n++ ){
                                if(document.panier.elements[n].name=="q"+(n/nbchampstexteparproduit)){
                                qte = document.panier.elements[n].value;
                                }
                                if(document.panier.elements[n].name=="p"+((n-1)/nbchampstexteparproduit)){
                                    //alert('fuck!!'+n);
                                prix = document.panier.elements[n].value;
                                document.getElementById('stt'+(n-1)/nbchampstexteparproduit).value = qte*prix;
                                document.getElementById('stt'+(n-1)/nbchampstexteparproduit).innerHTML = document.getElementById('stt'+(n-1)/nbchampstexteparproduit).value;
                               
                                total += qte*prix;
                                document.panier.elements[n+1].value = qte*prix;

                                //document.getElementById('stt'+(n-1)/nbchampstexteparproduit)).innerHTML = qte*prix;

                                }
                               
                                //document.getElementById("st"+(n-2)/nbchampstexteparproduit)).value = qte * prix;
                   
            }
            document.getElementById('resultat').innerHTML = total;
        }

et dans PHP apres le POST:

                            $arrid = array();
                            foreach($_POST as $key=>$value){
                                if($_POST[$key] == 'on'){
                                    $arrid[] .= substr($key, -1);
                                }
                            }
                            $arrproduits =array();
                            foreach($arrid as $k=>$v){
                                $arrproduits[] .= $_POST['id'.$v];
                            }


                            foreach($arrproduits as $k=>$v){
                                echo "vous avez acheté les produits".$v."<br>";
                            }

Ca fait un peu barbar la recupération des elements comme ca, mais comme mon nombre de champs est fixe, ca marche et tant mieu :)

Au plaisir !


Cette discussion est classée dans : input, style, id, value, div


Répondre à ce message

Sujets en rapport avec ce message

coucou , je suis dans la M...... [ par frvfrvfrvfrv ] salut à tous,j'essaye de faire bouger des div , de facon auto , j'ai deja avancer grace à vous tous. Mais pour la suite j'arrive pas a faire la logiqu document.getElementById() .div [ par abdoulax ] Bonjour, Je voulais faire un truc du genre : document.getElementById(id).div.style.paddingTop="0px"; En faite je veux modifier le style des div enfa class et id définis dans une même balise ? [ par sagat06 ] Bonjour à tous.J'aimerais savoir s'il existe un moyen de définir à la fois la class et l'id d'une div, du genre:En effet, j'ai plusieurs div dans ma p Style' a la valeur Null ou n'est pas un objet [IE] [ par fuggerbit1 ] Bonjour,J'ai fait un petit bout de code avec des onglets et il marche très biens sous FF par contre IE me dit :'Style' a la valeur Null ou n'est pas menu [ par mickael_28 ] Bonjour,Je suis confronté à un problème! Je veux créer un menu: à chaque clique sur le nom d'un élément du menu, apparait un sous-menu et lorsqu'on re script incompatible... ? [ par zen69 ] Bonjour tlm!J'ai encore un probleme de compatibilité avec des scripts ....Prenons ces deux fontions...function useShipInfo () {    do je suis débutant. j'ai besion d'aide svp merci [ par dpk1 ] bonjour, je fais mon premier site. j'ai fait un model en html css et je suis au php. je passe des nuit blanche à apprendre. mais là je suis tomber sur Bug sous IE provenant de setAttributeNode !! ? [ par sora570 ] Bonsoir à tous.Voila j'avais un problème dans mes dom sous ie ducoup j'ai décider de faire ce petit exemple tout simple qui ce comporte de cet façons: Obtenir les coordonnées de plusieurs images après un onclick type button [ par pazticci ] Bonsoir à tous,voila j'ai un petit problème et j'espère que quelqu'un sur ce forum pourra m'aider. Je voudrais donc faire un script qui me permettrait Javascript & XHTML Strict [ par plasticism ] Bonjour, je sèche depuis presque 2 jours sur ce script tout bête, adapté d'une source que j'ai pompé je-ne-sais-plus-où... Il est sensé afficher une "


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales