Page 1 sur 1

calculateur de tarifs

Posté : 17 mars 2013, 20:28
par pimprenelle23
Bonjour, help !
Il s'agit d'un calculateur de tarifs en fonction de 2 variables : le tirage et le type d'article. J'ai commencé à monter le formulaire en essayant le calcul en fonction du tirage 1 et des valeurs (prix) 1,2,3. Je crois que le code parlera mieux que moi : j'ai posé des conditions en php mais elles ne sont pas du tout rencontrées ! Seule la première valeur est prise en compte dans le calcul, quoique l'on choisisse. Si quelqu'un(e) peut m'aider à comprendre ce qui ne va pas... merci !

CODE HTML

<form method="get">

<label>Tirage : </label>
<select name="tirage" id="tirage">
<option name="t1" id="t1" value="1">- 50.000 ex.</option>
<option name="t2" id="t2" value="2">de 50.000 à 100.000 ex.</option>
<option name="t3" id="t3" value="3">de 100 à 200.000 ex.</option>
<option name="t4" id="t4" value="4">+ 200.000 ex.</option>
</select>



<br/>
<br/>

<label>Type d'article : </label>
<input type="checkbox" name="value1" id="value1" value="1">traitement de dépêches, comptes-rendus
<input type="checkbox" name="value2" id="value2" value="2">critiques et commentaires
<input type="checkbox" name="value3" id="value3" value="3">articles de fond, interviews, reportages


<br/>
<br/>

Nombre de signes : <input type = "text" name="signes" size=4> <br>

<input type="hidden" name="calc" value="yes">

<br/>
<br/>

<input type="submit" name="Calculate" value="Calculez!"/>

</form> [/html]

LE PHP

$tirage=('tirage');
$value1=('value1');
$value2=('value2');
$value3=('value3');


if ($tirage='1' && $value1='1')
{
$tarif = 0.0203333333333333333;
}

elseif ($tirage='1' && $value2='2')
{
$tarif = 0.02916666666;
}

elseif ($tirage=='1' && $value3='3')
{
$value3 = $tarif3 = 0.0321666666666666666666667;
}

if(isset($_GET['calc']) && $_GET['calc']!="")
{
$calc=(int)($_GET['calc']);
$signes = $_GET['signes'];
$produit = $tarif*$signes;
echo "<p>&rarr; <strong><u>Vous devriez facturer : $produit &euro;</u></strong></p>";
}

Re: calculateur de tarifs

Posté : 17 mars 2013, 21:20
par Aureusms
Avec les if, il faut vérifier avec == et non avec = (un seul =)

Re: calculateur de tarifs

Posté : 17 mars 2013, 21:24
par sirakawa
Un formulaire qui n'a pas de partie action relance la page où il se trouve: il est donc normal qu'on repasse par le formulaire.
On voit bien ce que tu voudrais faire avec l'input calculez, mais pour qu'il serve, il faudrait qu'il soit testé avant le formulaire;
possible, mais un peu pénible à mettre en place.
Il est beaucoup plus simple de diviser en deux pages:
L'une avec le formulaire, apelons-la saisie.html, l'autre avec le calcul, calcul.php
saisie.html est plus ou moins ce que tu avais écrit
il n'y a pas d'attribut name niid pour les options du select. Ils sont ignorés.
<form method="get"  action="calcul.php">
<select name="tirage" id="tirage">
<option value="1">- 50.000 ex.</option>
<!-- -->
</select>
<!--1) Le type d'article n'est pas une checkbox (on peut choisir plusieurs valeurs renvoyées comme un tableau:) Ce serait:

<input type="checkbox" name="type[]" id="value1" value="1">traitement de dépêches, comptes-rendus
<input type="checkbox" name="type[]" id="value2" value="2">critiques et commentaires
<input type="checkbox" name="type[]" id="value3" value="3">articles de fond, interviews, reportages

Il vaut mieux:-->
<input type="radio" name="type" id="value1" value="1" />traitement de dépêches, comptes-rendus
<input type="radio" name="type" id="value2" value="2" />critiques et commentaires
<input type="radio" name="type" id="value3" value="3" />articles de fond, interviews, reportages


<!-- supprimer <input type="hidden" name="calc" value="yes">-->
<!--le reste identique-->
calcul.php
<?PHP // ajouter PHP 
$tirage=('tirage'); //inutile car le selct passe une valeur qui a pour nom tirage, mais qu'il faut récupérer
$value1=('value1'); //inutile
$value2=('value2'); // inutile
$value3=('value3');//inutile
$tirage = $_GET['tirage'];
if ($tirage='1' && $value1='1')// cette aberration se remplace aisément par un
switch ($tirage)
{
	case 1:
		switch($type)
		{
			case 1:
				$tarif =  0.0203333333333333333;
			break;
		//etc
		}
	break;
//etc

}

Re: calculateur de tarifs

Posté : 17 mars 2013, 22:28
par pimprenelle23
Millions de mercis pour tous ces conseils que je viens d'appliquer et tout fonctionne nickel !