Simulateur en php : je bloque !

silv1

Nouveau WRInaute
Bonjour à tous,
J'essaie de mettre en place un simulateur en PHP permettant de calculer la production électrique d'une installation photovoltaïque.
Le résultat dépend de 4 variables : le département , la puissance de l'installation, l'inclinaison du toit et l'orientation du toit.

Je bloque car jusqu'à présent j'ai codé uniquement des formulaires très simples ou il suffisait de récupérer une variable pour par exemple l'envoyer par mail.

Code:
<select name="departement">
    <option value="choix1">Ain</option>
    <option value="choix2">Aisne</option>
    <option value="choix3">Allier</option>
    ...
</select>

Mais là c'est différent car je dois pas seulement récupérer la valeur d'un champs mais il faut lui attribuer une constante.
Par exemple: si dans un menu déroulant un internaute sélectionne le département "Vaucluse" je ne veux pas simplement récupérer la valeur "Vaucluse" mais je veux la transformer en chiffre, c'est à dire le taux d'ensoleillement du département en question.

Deuxième difficulté : pour l'inclinaison et l'orientation du toit je vais créer deux listes déroulantes. Je dois ensuite attribuer un chiffre en fonction de la combinaison crée. Par exemple, si la personne choisit une orientation plein sud et une inclinaison à 45°, ces deux choix sont associés à un chiffre bien précis (pourcentage d'efficacité) qui est récupéré pour le calcul final.

J'ai passé des heures sur les forums et autres sites consacrés à la programmation mais pour le moment je rame ! :?
Je vous remercie pour votre aide et vos précieux conseil ! :D
 

spout

WRInaute accro
Tu fais un truc du genre:
PHP:
<span class="syntaxdefault"><br /></span><span class="syntaxkeyword"><</span><span class="syntaxdefault">select&nbsp;name</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"departement"</span><span class="syntaxkeyword">><br />&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">option&nbsp;value</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"1.2:Ain"</span><span class="syntaxkeyword">></span><span class="syntaxdefault">Ain</span><span class="syntaxkeyword"></</span><span class="syntaxdefault">option</span><span class="syntaxkeyword">><br />&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">option&nbsp;value</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.9:Aisne"</span><span class="syntaxkeyword">></span><span class="syntaxdefault">Aisne</span><span class="syntaxkeyword"></</span><span class="syntaxdefault">option</span><span class="syntaxkeyword">><br />&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">option&nbsp;value</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.5:Allier"</span><span class="syntaxkeyword">></span><span class="syntaxdefault">Allier</span><span class="syntaxkeyword"></</span><span class="syntaxdefault">option</span><span class="syntaxkeyword">><br />&nbsp;&nbsp;&nbsp;&nbsp;...<br /></</span><span class="syntaxdefault">select</span><span class="syntaxkeyword">><br />&nbsp;</span><span class="syntaxdefault"></span>

Puis tu explode() $_POST['departement'] pour avoir tes 2 values.
PHP:
<span class="syntaxdefault"><br /></span><span class="syntaxkeyword">list(</span><span class="syntaxdefault">$value</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">$departement</span><span class="syntaxkeyword">)&nbsp;=&nbsp;</span><span class="syntaxdefault">explode</span><span class="syntaxkeyword">(</span><span class="syntaxstring">':'</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'departement'</span><span class="syntaxkeyword">]);<br />&nbsp;</span><span class="syntaxdefault"></span>
 

silv1

Nouveau WRInaute
Merci Spout ! Pour les départements ça fonctionne parfaitement, lorsque je choisis un département dans la liste je récupère bel et bien le chiffre qui lui est associé et dont j'ai besoin pour le calcul final.

Maintenant il me reste le deuxième problème à résoudre ! Comment récupérer deux valeurs pour y associer un chiffre correspondant.

Par exemple pour mon cas, la valeur "inclinaison du toit 45°" et la valeur "orientation sud-est" se combinent pour donner un chiffre que je connais et qui représente le pourcentage d'efficacité. Je dois récupérer ce chiffre pour finaliser le calcul. Dans le formulaire il y aura 5 choix possibles pour l'inclinaison et 4 choix possibles pour l'orientation (sur deux menus déroulants). J'aimerai que mon code php passe le message suivant : si "inclinaison 45°" et "orientation sud-est" sont tout deux sélectionnés alors variable efficacité = une constante prédéfinie.

Je sais pas si mes explications sont claires...
Si quelqu’un a une idée je suis preneur ! :wink:
 

spout

WRInaute accro
Tu donnes ta réponse en français, suffit de la traduire en PHP:
PHP:
<span class="syntaxdefault"><br /></span><span class="syntaxkeyword"><?</span><span class="syntaxdefault">php<br /></span><span class="syntaxkeyword">if&nbsp;(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'inclinaison'</span><span class="syntaxkeyword">]&nbsp;==&nbsp;</span><span class="syntaxstring">'45'&nbsp;</span><span class="syntaxkeyword">&&&nbsp;</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'orientation'</span><span class="syntaxkeyword">]&nbsp;==&nbsp;</span><span class="syntaxstring">'sud-est'</span><span class="syntaxkeyword">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$efficacite&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">CONSTANTE_PREDEFINIE</span><span class="syntaxkeyword">;<br />}<br />&nbsp;</span><span class="syntaxdefault"></span>
 

silv1

Nouveau WRInaute
Merci pour les conseils, j'avance petit à petit !

Sur mon fichier php j'ai mis en place ce code à titre d'exemple. Pour le département c'est ok par contre dès que j'ajoute la variable $efficacite dans le calcul final j'obtiens toujours 0 ! J'ai du faire une grosse boulette mais j'ai beau cherché je vois pas :oops:

Code:
<?php
$departement = $_POST['departement'];
$orientation = $_POST['orientation'];
$inclinaison = $_POST['inclinaison'];

if ($_POST['inclinaison'] == '45' && $_POST['orientation'] == 'sud-est') {
    $efficacite = 2;
}

$resultat = $departement*3*$efficacite;

echo$resultat;

?>
 

ZHB

Nouveau WRInaute
Je pense que c'est parce que tu ne rentre pas dans ta condition, de ce fait ta variable $efficacite n'est pas définie à 2. Pour tester :
Code:
<?php
$departement = $_POST['departement'];
$orientation = $_POST['orientation'];
$inclinaison = $_POST['inclinaison'];


if ($_POST['inclinaison'] == '45' && $_POST['orientation'] == 'sud-est') {
    $efficacite = 2;
} else {
	$efficacite = 1;
}

$resultat = $departement * 3 * $efficacite;

echo 'Calcul : '.$departement.' * 3 * '.$efficacite.' = '.$resultat;

?>

Vérifie que $efficacité vaut 2 et non 1.
 

ZHB

Nouveau WRInaute
Tu peux aussi faire qqch comme ceci, je pense que ce sera plus simple pour l'ajout d'autres orientations/inclinaisons :
Code:
<?php

// tableau définissant les "constantes" selon l'orientation et l'inclinaison
$efficacites = array('sud-est' 	=> array(40 => 1, 
									     45 => 2, 
									     50 => 3),
					 'sud' 		=> array(40 => 1.2, 
										 45 => 2.5, 
										 50 => 3.3),
					 'sud-ouest'=> array(40 => 1, 
										 45 => 2, 
										 50 => 3),
					 'ouest'	=> array(40 => 0.8, 
										 45 => 1.7, 
										 50 => 2.1)
					);

				
// récupération des données du formulaire				
list($ensoleillement, $departement) = explode(':', $_POST['departement']);
$orientation = $_POST['orientation'];
$inclinaison = $_POST['inclinaison'];

// si toutes les valeurs existent, récupération de la constante du tableau et calcul du résultat
if(!empty($orientation) && !empty($inclinaison) && !empty($departement)) {
	$efficacite = $efficacites[$orientation][$inclinaison];
	$resultat = $departement * 3 * $efficacite;
	
	echo 'Calcul : '.$departement.' * 3 * '.$efficacite.' = '.$resultat;
} else {
	echo 'calcul impossible';
}
 

Discussions similaires

Haut