Simulateur en php : je bloque !

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par silv1, 5 Mars 2013.

  1. silv1
    silv1 Nouveau WRInaute
    Inscrit:
    19 Juin 2006
    Messages:
    3
    J'aime reçus:
    0
    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
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 077
    J'aime reçus:
    295
    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>
     
  3. silv1
    silv1 Nouveau WRInaute
    Inscrit:
    19 Juin 2006
    Messages:
    3
    J'aime reçus:
    0
    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:
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 077
    J'aime reçus:
    295
    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>
     
  5. silv1
    silv1 Nouveau WRInaute
    Inscrit:
    19 Juin 2006
    Messages:
    3
    J'aime reçus:
    0
    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;
    
    ?>
     
  6. ZHB
    ZHB Nouveau WRInaute
    Inscrit:
    5 Octobre 2007
    Messages:
    23
    J'aime reçus:
    0
    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.
     
  7. ZHB
    ZHB Nouveau WRInaute
    Inscrit:
    5 Octobre 2007
    Messages:
    23
    J'aime reçus:
    0
    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';
    }
    
     
Chargement...
Similar Threads - Simulateur php bloque Forum Date
Simulateur de SERP Google (en pixels) avec rich snippets Référencement Google 9 Mars 2018
Calculemaretraite simulateur retraites Demandes d'avis et de conseils sur vos sites 27 Novembre 2015
Simulateur de SERP en pixel Tests et études de cas 23 Janvier 2015
Demande d'avis sur un site + simulateur Demandes d'avis et de conseils sur vos sites 1 Février 2014
Votre avis...? Un simulateur de credit Demandes d'avis et de conseils sur vos sites 20 Décembre 2011
carte du ciel facile à utiliser & simulateur de télescope Demandes d'avis et de conseils sur vos sites 30 Décembre 2009
réécrire /categorie.php?id=xxx en /categorie/id URL Rewriting et .htaccess 13 Septembre 2020
Rediriger Index.php vers racine URL Rewriting et .htaccess 15 Août 2020
Galère pour supprimer index.php URL Rewriting et .htaccess 12 Août 2020
PHP Redis : Comment indexer les clés ? Développement d'un site Web ou d'une appli mobile 1 Août 2020