Php formulaire calcul total

Signaler
Messages postés
6
Date d'inscription
lundi 6 décembre 2010
Statut
Membre
Dernière intervention
14 décembre 2010
-
Messages postés
6
Date d'inscription
lundi 6 décembre 2010
Statut
Membre
Dernière intervention
14 décembre 2010
-
Bonjour,
je suis en train de travailler sur un formulaire, j'ai cette ligne de code qui me me donne le nombre de produits que les internautes peuvent commander:

*Nombre de boîtes :



et j'aimerai calculer et afficher, selon le prix du produit, le total en fin de formulaire. Par exemple si qqn commande 1 produit: 15.- + frais de port de 5.- 20frs, 3 produits: 45.- + frais de port de 10.- 55.-

Etant donné que les frais de port risquent de ne pas être équivalents selon le nombre de produits, j'imagine qu'il me faut quelques lignes de codes qui déterminent, par exemple, que pour 1 produit= 5fr, 2 produits=8frs, 3 produits=10frs etc

merci de votre aide, ps je suis complétement novice en la matière

9 réponses

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
bonsoir


c'est un peu court ...
Veux TU faire ton calcul avec php et un
formulaire html ... ?

a++
Messages postés
6
Date d'inscription
lundi 6 décembre 2010
Statut
Membre
Dernière intervention
14 décembre 2010

Ah ah! non c'est un peu + long en effet ;)
Voici mon code:
J'aimerai calculer le prix selon le nombre de boites commandées et inclure les frais de port, selon le type de courrier (standard: B ou rapide: A) et que ce total s'affiche en fin de formulaire, avant la case "envoi".
Il me faudrait bloquer le nombre de produits possibles à commander à 10 maximum, et définir, je suppose, que la commande de 1 produit en courrier A 15.-, 1 produit en courrier B 12.-, 2 produit en courrier A = 27.-, etc. jusqu'à 10 produits ( je vais inclure un texte qui stipule qu'au dela de 10 produits, il faut prendre directement contact par téléphone).

Merci!



Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
bonjour

tu veux faire varier le prix final suivant le delai de livraison
un truc dans le genre de ça ...

a++

<?php
if(isset($_POST['sub']) && $_POST['sub']=="Calculer"
&& !empty($_POST['price'])
&& !empty($_POST['nombreboites']) ){

$nb=$_POST['nombreboites'];
$price=$_POST['price'];
   
   
    if($_POST['delai'] == 'Courrier A'){
    $frais_deport = 10; // à definir 
    echo 'Port a : '.$frais_deport.'
';
    echo 'Total : '.($frais_deport+($nb*$price));
    echo '
[? Recommencer]';
    
    
    }else{
    $frais_deport = 15.5; 
    echo 'Port b : '.$frais_deport.'
';
    echo 'Total : '.($frais_deport+($nb*$price));
    echo '
[? Recommencer]';
    // à definir
    // autrement Courrier B
    }

    
} else {
?>
<form method="post" action="">
Nb de boîtes ?



Prix



 
Courrier A
 
 
Courrier B
 

</form>
<?php
}
?>
Messages postés
6
Date d'inscription
lundi 6 décembre 2010
Statut
Membre
Dernière intervention
14 décembre 2010

Merci de ton aide!!!

Par contre, si je ne me trompe pas, ton code envoie la somme du calcul au destinataire du formulaire. Dans mon cas, il faut que je puisse afficher la somme totale avant que les gens envoient le formulaire, pour qu'ils puissent prendre connaissance du total avant de valider la commande :/

A+!
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
bonjour

tu as deux solutions

soit faire un javascript qui calcule avant l'envoi
avec sur un imput nb de boîte

onchange() --> appel fonction calcul
--> document.write()

soit faire une phase intermediaire en php
je regarde pour un javascript
je crois que j'en ai un qui fait ça

a++
Messages postés
6
Date d'inscription
lundi 6 décembre 2010
Statut
Membre
Dernière intervention
14 décembre 2010

Tant que ça fonctionne, n'importe quelle solution me va ;)
As-tu trouvé un javascript ?

Merci!
A+
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
bonjour
pour le javascript j'ai pas chercher ...
je ferais un truc dans ce genre en php
tu dois adapter à ton code
a++

<?php
//envoi du mail
if(isset($_GET['action']) && $_GET['action']=='ok'){
//j'envoie mon mail à toi de continuer
//mail('mail','sujet','msg','header');
//header(''); //page de confirmation
} else{}



// la previsualisation de la commande

if(isset($_POST['sub']) && $_POST['sub']=="Calculer"
&& !empty($_POST['price'])
&& !empty($_POST['nombreboites'])
&& !empty($_POST['delai'])
){

$nb=$_POST['nombreboites'];
$price=$_POST['price'];
   
   
    if($_POST['delai'] == 'Courrier A'){
    $frais_deport = 10; // à definir 
    echo 'Port a : '.$frais_deport.'
';
    echo 'Total : '.($frais_deport+($nb*$price));
    echo '
[? Recommencer]';
    echo '
[?action=ok J\'accepte la commande]';
    
    }else{
    $frais_deport = 15.5; 
    echo 'Port b : '.$frais_deport.'
';
    echo 'Total : '.($frais_deport+($nb*$price));
    echo '
[? Recommencer]';
    echo '
[?action=ok J\'accepte la commande]';
    // à definir
    // autrement Courrier B
    }

    
} else {
?>

<!-- la commande -->
<form method="post" action="">
Nb de boîtes ?



Prix



 
Courrier A
 
 
Courrier B
 

</form>
<?php
}
?>
Messages postés
6
Date d'inscription
lundi 6 décembre 2010
Statut
Membre
Dernière intervention
14 décembre 2010

super merci je teste! merci encore c'est hyper cool
Messages postés
6
Date d'inscription
lundi 6 décembre 2010
Statut
Membre
Dernière intervention
14 décembre 2010

Salut!
Du coup, je m'emmêle les pinceaux avec le php.
J'ai repris un code javascript et fait ça:

<script language="JavaScript">
//-->
function calculate(f){
var prod=Number(f['nombreboites'].value);
var quan=Number(f['delai'].value);
var tot=prod+quan;
f['total'].value=tot==0?'':tot.toFixed(2);
}
</script>

et ensuite dans le formulaire:


<select name="nombreboites" onchange="calculate(this.form)">
<option value="0" name="0 boite">-- Nombre de boìtes --</option>
<option value="49.50" name="1 boite">1 boîte</option>
<option value="99" name="2 boites">2 boîtes</option>
<option value="148.50" name="3 boites">3 boîtres</option>
<option value="198" name="4 boites">4 boîtes</option>
<option value="247.50" name="5 boites">5 boîtes</option>
</select>


<select name="delai" onchange="calculate(this.form)">
<option value="8">-- Envoi --</option>
<option value="15" name="Courrier A">Courrier A</option>
<option value="8" name="Courrier B">Courrier B</option>
</select>


Coût total:





Ainsi que ceci pour l'affichage de la commande

<tr>
<td width="250">Nombre de boîtes commandées :

</td>
<td width="230">'.$nombreboites.'

</td>
</tr>
<tr>
<td width="250">Envoi :

</td>
<td width="230">'.$delai.'

</td>
</tr>
<tr>
<td width="250">Total de la commande :

</td>
<td w


ça fonctionne bien, mais le formulaire, à réception, me sort la valeur en monnaie au lieu du nombre de boites ainsi que la valeur des frais d'envoi au lieu de "Courrier A" ou "Courrier B". Je n'arrive pas à recevoir le total, alors qu'il s'affiche nickel lorsque l'on complète la commande.
As tu une idée?