Est-ce possible en PHP?

Petit nouveau ! | 5 Messages

30 oct. 2012, 19:17

Bonjour,

Je suis nouveau sur le forum et aussi autodidacte pour la programmation. J'avais besoin de créer une page web donc je me suis formé en html et css et ensuite avec le php.

Seulement voilà je me lance dans un projet qui me dépace un petit peu et j'aimerai que l'on puisse m'aiguiller un peu.

Voila je voudrait créer la chose suivante:

Des utilisateurs mettrons une donnée dans un formulaire (tarif de l'électricité et leurs consommation). Une fois les données envoyées j'utiliserai ces données pour calculer quel aurait été leur facture en fonction des différentes compagnies. Et enfin lui donner le montant de l´économie (seulement le meilleur choix).

Pour imager tout cela je donne un exemple simple:

L'utilisateur rentre les données suivantes:
Consommation anuel: 10.000 kWh
Prix du kWh: 0.15 €/kWh

Ma base de données contient les infos suivantes:
Compagnie A: Prix du kWh: 0.17 €/kWh
Compagnie B: Prix du kWh: 0.14 €/kWh
Compagnie C: Prix du kWh: 0.10 €/kWh

Le calcul serait donc le suivant:

Facture actuelle: 1.500 Euros
Facture compagnie A: 1.700 Euros
Facture compagnie B: 1.400 Euros
Facture compagnie C: 1.000 Euros

Réponse à l'utilisateur: La meilleure offre pour votre situation est offerte para compagnie C, avec une facturation annuelle de 1.000 Euros soit 500 Euros d'économie.


Voilà l'exemple est assez simple, les calculs sont évidemment simplifier et je rajouterai d'autres données et options mais pour le principe je pense que cela est suffisant.

Comment vous y prendriez-vous?
Je serai faire le calcul sans la base de données mais avec là je bloque.

Merci de votre aide,
Seb

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

30 oct. 2012, 23:33

salut,


suivant la complexité du calcul tu peux le faire en php, mais surtout en sql.

dans tout les cas il te faut récupérer les tarifs et comparer avec la somme final.

avec ton exemple c'est une simple fonction (genre calcul($tarif, $conso) elle retourne une chaîne de caractère, par exemple).


Après il faut définir un peu mieux ce que tu veux exactement mais le principe est la.

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 5 Messages

30 oct. 2012, 23:39

Bonsoir Moogli,

Merci pour ta réponse.

Je vais essayer d'écrire le code et si tu es d'accord je te remercierai de me dire si je vais dans la bonne direction.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

31 oct. 2012, 00:00

De rien

La seule bonne direction (dans un premier temps) c'est du code fonctionnel.

Mais tu peux t'orienter vers ma modélisation et du code objet si tu le souhaite, par contre cela nécessite un apprentissage plus important avant de coder ton appli.

Regarde quand même ce que sont les formes normales d'une base de données afin de modéliser au mieux ta bdd.


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 5 Messages

31 oct. 2012, 00:06

Bonsoir,

je viens de commencer, pour faire simple je crée mon formulaire, et ensuite ma fonction.

Maintenant je bloque pour la comparer à la base de donnée...

formulaire:

<form action="comparaisonfacture.php" method="post">
<p><input name="tarif" type="text"></p>
<p><input name="conso" type="text"></p>
<input value="Valider" type="submit"></form>

réponse:

<?php
// Fonction qui calcule le montant de la facture annuelle 
function Factureannuelle($tarif, $conso)
{
   $factureannuelle = $tarif * $conso ; 
   return $factureannuelle; // indique la valeur à comparer
}

$factureannu = Factureannuelle($_POST['tarif'], $_POST['conso']);
?>

ViPHP
ViPHP | 2577 Messages

31 oct. 2012, 10:14

Le calcul de prix dépends de beaucoup de paramètres :
- le prix de l'abonnement en fonction du nombre de kw et du type de l'abonnement
- le prix du kw en fonction du type d'abonnement, du nombre de kw de l'abonnement, des heures de consommation et de la consommation.

Par exemple Tempo d'EDF, il y a 6 tarifs (de mémoire) au kw pour une puissance donnée du compteur avec des heures pleines ou creuses et des jours bleus, blancs ou rouges.
Il existe autres tarifs plus simple avec seulement 2 tarifs en fonction de l'heure ou du jour.

Le coté fonctionnelle me semble à éclaircir avant les développements. Je m'intéresse au sujet (seulement avec un tableur) en ce moment et c'est difficile de choisir l'abonnement qu'il me faut entre EJP, Tempo et heures creuses/pleines.

Petit nouveau ! | 5 Messages

31 oct. 2012, 11:00

Bonjour Mazarini,

Je suis tout à fait d'accord avec toi. Le calcul est bien plus compliqué!

Maintenant le but de ma question n'est pas de savoir comment calculer (ça je sais faire et je l'ai dans une feuille excel si tu veux) mais bien de comprendre comment effectuer un calcul entre une base de données et des entrées utilisateurs. Une fois compris cela j'essaierai de l'adapter au calcul plus compliqué.

De plus j'avais peur que l'on s'attarde plus à comprendre les calculs et que du coup la réponse sur la programmation soit plus difficile.

Pour la petite histoire j'ai une boite d’ingénierie en Espagne. Ici le marché de l'elec est ouvert comme chez nous et les clients ne voient "que" cela pour réduire leur facture. L'idée est de mettre à leur disposition un comparatif simple dans un premier temps. Ensuite l'étude de discrimination horaire etc nous la ferions nous. (plus tard cela serai idéal de l'avoir en ligne bien sûr mais beaucoup d'entreprises n'ont pas les données d'une répartition précise de leur conso d'elec. Sans mesures il est donc totalement impossible de connaitre la rentabilité si ils effectuent des changements de taux horaires etc.

ViPHP
ViPHP | 2577 Messages

31 oct. 2012, 14:40

Soit tu renseignes les éléments de calcul dans des variables et tu modifies les pages en fonction des évolutions (le plus simple, s'il n'y a pas beaucoup de changements ni beaucoup de tarifs) ; soit tu stockes les éléments de calcul dans une ou plusieurs tables.

Tu peux regardes les fonctions mysqli_???? de php pour les accès à la base de données (http://php.net/manual/fr/book.mysqli.php) et faire une recherche sur le langage sql pour la manipulation des données.

Tu pourrais faire
- une table societe (identifiant_societe,nom_societe)
- une table abonnement (identifiant_societe,identifiant_abonnement ,nom_abonnement,prix_kw)

Pour la lecture de toutes les info :
select identifiant_societe,nom_societe,identifiant_abonnement ,nom_abonnement,prix_kw
from societe, abonnement where societe.identifiant_societe = abonnement.identifiant_societe
(à utiliser avec les fonctions mysqli)

Pour la mise à jour des info, tu peux utiliser phpmyadmin dans un premier temps.

Mais ca demande un peu de formation pour faire exactement ce que tu veux (SQL et PHP) et surtout la définition de la base demande de la réflexion. En regardant les exemples de la doc (http://www.php.net/manual/fr/mysqli-stmt.fetch.php par exemple) tu peux te débrouiller. Mais un tuto serait peut être mieux.

Ma table abonnement est très simpliste mais je n'ai pas la connaissance nécessaire ni le temps.

Au passage, si tu as un avis sur l'abonnement EDF à prendre avec un chauffage de type pompe à chaleur, ca m'intéresse. Je pense à priori remplacer mon EJP (0,5329/0,1030) par un simple heures pleines/creuse (0,1353/0,0926) voir le tarif de base 0,12490

Petit nouveau ! | 5 Messages

03 nov. 2012, 17:27

Bonjour Mazarini,

Désolé pour le retard à te répondre j'ai eu une semaine compliquée :D

Je vais me documenter un peu plus sur le sujet pour pouvoir mener à bien mon projet et je vous tient au courant.

Pour ton changement de tarifs en fait tout dépend de la répartition de ta consommation au long de la journée. Par exemple si tu as des congélateurs et frigo ceux-ci fonctionne 24h/24h la répartition heure pleine heure creuse et EJP est un bon choix. Maintenant la consommation de ces appareils est minime face au chauffage, clim, four etc.

Pour savoir si les tarifs sont plus avantageux il te faudra donc savoir quand utilises-tu les appareils qui consomme de l'énergie. Tu peux le faire en relevant le compteur aux heures de changement de tarifs pendant une semaine par exemple et essayer de l'extrapoler sur l'année (si tu as la climatisation par exemple l'usage est différents). Fait attention de ne pas changer tes habitudes pendant tes mesures cela parait con à dire comme ça mais le seul fait de contrôler notre conso influ dans la manière de nous comporter (on éteint la lumière par exemple plus souvent), tu serait surpris des économies réaliser du seul fait de "voir" notre conso. C'est un peu comme quand l'on paie par carte ou en liquide :D

Une fois ta conso "type" établie il te sera alors facile de savoir le tarif le plus avantageux.

Pour aller plus loin tu pourras "adapter" ta conso au mieux aux horaires des différents tarifs. Le prix n'est pas le facteur le plus important c'est "l'horaire d'utilisation".

Si tu as besoin d'aide n'hésites pas.

Bon week-end