Page 1 sur 1

Problème dans un formulaire

Posté : 19 janv. 2015, 12:19
par hamanullas
Bonjour,

Je suis débutante en php et en javascript, et j'ai un soucis avec mon formulaire de vente en ligne...

Le principe est d'afficher les articles en vente avec un champ pour que l'utilisateur y entre la quantité voulue.

A la fin du formulaire, j'aimerais avoir:

1. Le montant de la commande

2. Les frais de livraison (5.- pour un montant inférieur à 50Frs, sinon 0)

3. Le Total Final

Donc j'ai réussi à bricoler un formulaire qui fonctionne (je suppose qu'il y avait beaucoup plus simple...), malheureusement je ne trouve pas comment faire pour que les frais de livraison passe à "0" si la commande est supérieure à 50.-

J'ai essayé de mettre une condition dans la value des frais de livraison (en utilisant $_POST['total'] ?) mais ça ne marche pas du tout...

Dans le code ci-dessous, l'addition du montant et des frais fonctionne, mais j'ai du ajouter un onblur avec les guillemets pas fermés (??)... Je ne comprends pas pourquoi ça fonctionne et que si je les ferme ou si je supprime ces onblur ça ne marche plus...

Je déprime car j'ai tout essayé et je ne trouve pas l'erreur! En plus c'est urgent car je ne peux pas mettre en ligne le formulaire s'il ne fonctionne pas...

SVP, si vous avez un moment pour me trouver la solution.... Merci beaucoup!
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <script type="text/javascript">
        function calcul()
        {
        var allumage_petit = Number((document.getElementById("allumage_petit").value)*(20));
        var buche_finlandaise_1m = Number((document.getElementById("buche_finlandaise_1m").value)*(25));
        var total = Number( allumage_petit + buche_finlandaise_1m ); document.getElementById("total").value = total;
        var frais_livraison = Number((document.getElementById("frais_livraison").value)*(1));
        var total_final = Number( total + frais_livraison ); document.getElementById("total_final").value = total_final;
        }
        </script>
    </head>
 
    <body>
        <article>
            <form method="post" action="commande_probleme.php" name="formulaire" id="formulaire">
                <fieldset>
                    <legend> MA COMMANDE </legend>
                                <label for="allumage_petit"> Bois d'allumage  -  20Frs <label> &nbsp &nbsp
                                <input   type="text" name="allumage_petit" id="allumage_petit"
                                        STYLE="text-decoration:none;;color: black;;font-size: 0.8em;" size="5" placeholder="0"
                                        value="<?php  echo $_POST['allumage_petit']; ?>"
                                        onblur="calcul()"
                                        />
                                <?php if( ( ($_POST['allumage_petit']) > "9999" ) )
                                {echo '<div id="erreur"> Impossible! </div>';}  ?>
                             
                            </br>
                                <label for="buche_finlandaise_1m"> Bûche Finlandaises  -  25Frs</label> &nbsp &nbsp
                                <input   type="text" name="buche_finlandaise_1m" id="buche_finlandaise_1m"
                                        STYLE="text-decoration:none;;color: black;;font-size: 0.8em;" size="5" placeholder="0"
                                        value="<?php  echo $_POST['buche_finlandaise_1m']; ?>"
                                        onblur="calcul()"/>
                                <?php if( ( ($_POST['buche_finlandaise_1m']) > "9999" ) )
                                {echo '<div id="erreur"> Impossible! </div>';}?>
             
                </fieldset>  
 
                <fieldset>
                    <legend> TOTAL DE VOTRE COMMANDE </legend>
                            <label id="total_de_commande"> Montant de la commande : </label>&nbsp &nbsp
                            <input   type="text" SIZE="5" STYLE="text-decoration:none;;color: black;;font-size: 0.8em;" name="total" id="total"
                                    placeholder="0"
                                    value="<?php  echo $_POST['total']; ?>"
                                    onblur="calcul() /> Frs
                        </br>
                            <label id="frais_livraison"> Frais de livraison : </label>&nbsp &nbsp
                            <input   type="text" SIZE="5" STYLE="text-decoration:none;;color: black;;font-size: 0.8em;" name="frais_livraison" id="frais_livraison"
                                    placeholder="0"
                                    value="5"
                                    onblur="calcul()
                                    /> Frs
                        </br>
                            <label id="total_final"> Total Final : </label>&nbsp &nbsp
                            <input   type="text" SIZE="5" STYLE="text-decoration:none;;color: black;;font-size: 0.8em;" name="total_final" id="total_final"
                                    placeholder="0"
                                    value="<?php  echo $_POST['total_final']; ?>"
                                    /> Frs
                             
                </fieldset>  
                 
                <input type="submit" name="envoyer" value="Envoyer ma commande"/>
 
            </form>
        </article>
    </body>
</html>

Re: Problème dans un formulaire

Posté : 19 janv. 2015, 13:50
par sirakawa
J'ai modifié qqs bricoles; mais le problème ven ait de ca qu'il y avait des id pour deux labels id à"" au lieu d for ="" qui faisaient double emploi avec le id du champ suivant, ca qui faisiat que javascript ne comprenait rien. Avec OPera, en activant Outils / Avancé / Con sole d'erreur, j'ai trouvé après avoir cheché ailleurs
<!DOCTYPE html>
<style>
*.entree
{
text-decoration:none;
color: black;
font-size: 0.8em;"
}
</style>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
<script type="text/javascript">
    function calcul()
        {
        var allumage_petit = Number((document.getElementById("allumage_petit").value)*(20));
        var buche_finlandaise_1m = Number((document.getElementById("buche_finlandaise_1m").value)*(25));
        var total = Number( allumage_petit + buche_finlandaise_1m ); 
		document.getElementById("total").value = total;
		var frais = 5; 
		if (total >50)
		{
		   frais = 0;     
		}
		document.getElementById("frais_livraison").value = frais;
		var total_final = total + frais; 
		document.getElementById("total_final").value = total_final;
    }
</script>
    </head>
 <?PHP
$allumage_petit  = isset($_POST['allumage_petit']) ? $_POST['allumage_petit']: 0;
if ((intval($allumage_petit) > 9999 ) or (intval($allumage_petit) < 0))
{
 	echo '<div id="erreur"> Impossible! </div>';
	$allumage_petit = 0;
}
$buche_finlandaise = isset( $_POST['buche_finlandaise_1m']) ?  $_POST['buche_finlandaise_1m']: 0;
 if ((intval($buche_finlandaise) > 9999 ) or (intval($buche_finlandaise) < 0))
{
 	echo '<div id="erreur"> Impossible! </div>';
	$buche_finlandaise = 0;
}
$total = isset($_POST['total']) ? $_POST['total'] : 0;

?>
    <body>
        <article>
            <form method="post" action="index.php" name="formulaire" id="formulaire">
                <fieldset>
                    <legend> MA COMMANDE </legend>
                                <label for="allumage_petit"> Bois d'allumage  -  20Frs <label> 
                               <input   type="text" name="allumage_petit" id="allumage_petit"
                                       class="entree" size="5" placeholder="0"
                                        value="<?PHP echo $allumage_petit?>"
                                        onchange="calcul()"
                                        />
                               
                             
                            </br>
                                <label for="buche_finlandaise_1m"> Bûches Finlandaises  -  25Frs</label> &nbsp &nbsp
                               <input   type="text" name="buche_finlandaise_1m" id="buche_finlandaise_1m"
                                       class="entree" size="5" placeholder="0"
                                        value="<?PHP  echo $buche_finlandaise ?>"
                                        onchange="calcul()"/>
                                       
                </fieldset>  
 
                <fieldset>
                    <legend> TOTAL DE VOTRE COMMANDE </legend>
                            <label id="total_de_commande"> Montant de la commande : </label>&nbsp &nbsp
                           <input   readonly = "readonly' type="text" size="5" class="entree" name="total" id="total"
                                     value="<?PHP  echo $total ?>"
                                     /> Frs
                        </br>
                            <label for ="frais_livraison"> Frais de livraison (5 € si le total est inférieur à 50 €, 0 sinon): </label>&nbsp &nbsp
                           <input   readonly ="readonly"type="text" size="5" class="entree" name="frais_livraison" id="frais_livraison"
                                   
                                    value="<?PHP echo $frais ?>"
                                    
                                    /> Frs
                        </br>
                            <label for="total_final"> Total Final : </label>&nbsp &nbsp
                           <input   id = "total_final" type="text" SIZE="5" class="entree"
                                    value="0"
                                    /> Frs
                             
                </fieldset>  
                 
                <input type="submit" name="envoyer" value="Envoyer ma commande"/>
 
            </form>
        </article>
    </body>
</html>