une solution selon plusieur variable

Eléphanteau du PHP | 18 Messages

07 sept. 2010, 10:40

Bonjour,
je suis autant novice sur ce forum qu'en PHP.
Je vous expose mon problème:
En effet, je dois réaliser pour mon travail une application qui doit permettre de dimensionner une centrale d'alarme en fonction des besoins exprimés.
Mon problème est que je ne parviens pas à résoudre mon problème.
Voici une simplification des problème de l'application:
La petite centrale d'alarme est limitée à 22 entrées filaires, au dessus, elle passe à la centrale moyenne MAIS elle est aussi une petite centrale dans le cas où il y a un transpondeur radio associé à un détecteur radio en plus de 10 détecteurs filaire; dans le cas où il y en a 11 filaires, on passe à la centrale moyenne.
J'espère que vous comprenez mon besoin et dans le cas où j'ai une réponse favorable je vous exposerait la suite des critère de sélection des centrale.
Merci de votre aide.


Cf. un apreçu de ce que j'ai réaliser.


html>
<head><title>Votre alarme</title></head>
<body>
<h1>Déterminez votre centrale d'alarme</h1>
<h2>Entrez les données suivantes </h2>
<form name="formulaire" method="post" action="alarme2.php">
Nombre de sirène interne : <input type="text" name="sireneint"/> <br/>
Nombre de sirène externe: <input type="text" name="sirèneext"/> <br/>
Nombre de clavier : <input type="text" name="clavier"/> <br/>
Nombre d'utilisateur : <input type="text" name="utilisateur"/> <br/>
<h3>Matériel filaire </h3>
Détecteur infrarouge : <input type="text" name="infrarouge"/> <br/>
Détecteur Double technologie : <input type="text" name="double"/> <br/>
Détecteur longue portée : <input type="text" name="longue"/> <br/>
Contact de porte : <input type="text" name="porte"/> <br/>
Contact d'ouverture : <input type="text" name="ouverture"/> <br/>
<h3>Matériel radio </h3>
Détecteur infrarouge : <input type="text" name="rinfrarouge"/> <br/>
Contact d'ouverture : <input type="text" name="rouverture"/> <br/>
<input type="submit" name="valider" value="OK"/>
</form>
<?php
if(isset($_POST['valider'])){
$sireneint=$_POST['sireneint'];
$sirèneext=$_POST['sirèneext'];
$clavier=$_POST['clavier'];
$infrarouge=$_POST['infrarouge'];
$double=$_POST['double'];
$longue=$_POST['longue'];
$porte=$_POST['porte'];
$ouverture=$_POST['ouverture'];
$rinfrarouge=$_POST['rinfrarouge'];
$rouverture=$_POST['rouverture'];
$utilisateur=$_POST['utilisateur'];


if ($infrarouge + $ouverture>23)
{
echo 'centrale moyenne';
}
else
{
echo 'petite centrale';
}

Eléphant du PHP | 86 Messages

07 sept. 2010, 10:53

Mon problème est que je ne parviens pas à résoudre mon problème.
xD

Eléphanteau du PHP | 18 Messages

07 sept. 2010, 11:04

je l'avoue, cela n'est pas très français^^

Eléphant du PHP | 86 Messages

07 sept. 2010, 12:08

Nous ne sommes pas tous forcément des électroniciens donc il va falloir être plus précis dans ta demande.
D'après ton post, cela ressemble plus à un soucis de logique de ta part plutôt qu'une demande concernant le php.
La petite centrale d'alarme est limitée à 22 entrées filaires, au dessus, elle passe à la centrale moyenne MAIS elle est aussi une petite centrale dans le cas où il y a un transpondeur radio associé à un détecteur radio en plus de 10 détecteurs filaire; dans le cas où il y en a 11 filaires, on passe à la centrale moyenne.
Les informations à remplir dans ton formulaire ne sont pas très parlantes (du moins pour moi), il serait judicieux d'apporter des explications sur les données qui doivent être calculées pour remplir les conditions citées.

Eléphanteau du PHP | 18 Messages

07 sept. 2010, 13:35

En fait, mon programme s'apparente à un configurateur.
c'est à dire que le commerciale remplira les besoins du client et le programme lui dira s'il faut qu'il prenne une centrale de petite ou de moyenne taille
Le réele problème est que chaque centrale à des contraintes lièes. En effet la petite centrale supporte 22 entrées filaires aux maximum ou 10 entrées filaires avec 1 entrés radio.
On m'a parlé de faire un système de boucle imbriquée mais je ne voit pas comment procédé.
J'espere avoir été clair, je suis là pour de plus amples renseignement

Eléphant du PHP | 86 Messages

07 sept. 2010, 14:25

Ce qu'il nous faut savoir, en temps que développeurs externes à ton application, c'est quels champs du formulaire permettent de calculer le nombres "d'entrées filaires" et qu'est ce qui permet de dire s'il y a une entrée radio ?
Un exemple de structure de code (si j'ai bien compris ton soucis) :
On va dire que $ef représente le nombre d'entrées filaires et $radio est un booléen (où "True" représente le fait qu'il y ait une entrée radio et "False" le fait qu'il n'y en ait pas). Ces variables sont au préalable calculées par tes soins grâce au formulaire.
if ($ef <= 22)
{
    //ici il s'agit d'une centrale de petite taille
}
else
{
    if ( ($ef <= 10) and ($radio) )
    {
        //petite taille
    }
    else
    {
        //moyenne taille
    }
}

Eléphanteau du PHP | 18 Messages

07 sept. 2010, 14:35

Tout d'abord merci a tous pour vos réponse.
Si tu veux le commerciale inscrira dans les champs
<h1>Déterminez votre centrale d'alarme</h1>
<h2>Entrez les données suivantes </h2>
<form name="formulaire" method="post" action="alarme2.php">
Nombre de sirène interne : <input type="text" name="sireneint"/> <br/>
Nombre de sirène externe: <input type="text" name="sirèneext"/> <br/>
Nombre de clavier : <input type="text" name="clavier"/> <br/>
Nombre d'utilisateur : <input type="text" name="utilisateur"/> <br/>
Nombre de secteur : <input type="text" name="secteur"/> <br/>
<h3>Matériel filaire </h3>
Détecteur infrarouge : <input type="text" name="infrarouge"/> <br/>
Détecteur Double technologie : <input type="text" name="double"/> <br/>
Détecteur longue portée : <input type="text" name="longue"/> <br/>
Contact de porte : <input type="text" name="porte"/> <br/>
Contact d'ouverture : <input type="text" name="ouverture"/> <br/>
<h3>Matériel radio </h3>
Détecteur infrarouge : <input type="text" name="rinfrarouge"/> <br/>
Contact d'ouverture : <input type="text" name="rouverture"/> <br/>
<input type="submit" name="valider" value="OK"/>

les besoins du client et le programme doit etre capable de lui dire la centrale appropriée.
En ce qui concerne le début de solution que tu m'a donné c'est ce que j'ai fait et le résultat final donne "petite centrale" en meme temps que "moyenne centrale"

Eléphanteau du PHP | 18 Messages

07 sept. 2010, 14:38

enfin je dit merci a tous mais plutôt merci a toi ^^

Eléphant du PHP | 86 Messages

07 sept. 2010, 14:42

Désolé mais ce n'est pas en re-copiant le formulaire que ça va nous aider à comprendre quels champs servent à quoi.
Avec la structure que je t'ai donné, il est impossible qu'il y ait plusieurs résultats, il suffit de traiter les 2 variables $ef et $radio juste avant.
Mais pour ça, je ne peux pas deviner comment on calcule $ef avec les valeurs saisies, ce n'est pas mon métier de savoir si par exemple le "Nombre de sirène interne" correspond ou non à une entrée filaire.

Eléphanteau du PHP | 18 Messages

07 sept. 2010, 14:57

Autant pour moi,
En fait, les entrées sont les différents détécteurs et les contacts mais par exemple le nombre de sirène, de clavier, de secteur ect sont d'autres variables mais pour le moment je me fixe simplement à l'aspect des entrées car je me dis que si je parvient à faire fonctionner corretement le programme avec la contraintes des entrées, je serait capable de faire de même pour les autres contraintes.
Il y a l'addition des entrées filaire ( contacts et détecteur) et l'addition des entrées radio ( contact et détecteur)
Jespere avoir été clair mais je reste présent pour d'autre information car je t'avoue j'ai du mal à expliquer les différentes contrainte au vu de leurs complexité (enfin pour moi!!!^^)

Eléphant du PHP | 86 Messages

07 sept. 2010, 15:18

Ok maintenant j'ai compris.
Page alarme2.php :
<?php
foreach ($_POST as $post) //cette boucle permet de mettre à zéro tous les champs qui n'ont pas été remplis
{
    if (empty($post))
        $post = 0;
}

extract($_POST); //ceci permet de créer les variables, exemple $infrarouge au lieu de $_POST['infrarouge']

$ef = $infrarouge + $double + $longue + $porte + $ouverture;
$radio = $rinfrarouge + $rouverture;

if ($ef <= 22)
{
    //ici il s'agit d'une centrale de petite taille
}
else
{
    if ( ($ef <= 10) and ($radio == 1) )
    {
        //petite taille
    }
    else
    {
        //moyenne taille
    }
}
?>

Eléphanteau du PHP | 18 Messages

07 sept. 2010, 15:24

je te remercie pour ta réponse je vais essayer de faire ca
Encore une fois merci et je te tiens au courant

Eléphanteau du PHP | 18 Messages

07 sept. 2010, 15:43

je suis désolé mais lorsque je met 12 entrées filaire et un détecteur radio il me met quand même petite centrale alors qu'il devrait me dire centrale moyenne donc as-tu une autre solution? En tout cas merci de ton aide car j'ai appris quelque petite chose déjà depuis le début.
J'ai une petite question, en réalité je n'est pas 2 centrale mais 3, est-ce que dans mes condition si je fait un encadrement du style 2<$radio>6 c'est centrale moyenne et sinon c'est grande centrale (ceci n'est qu'un exemple) mais est-ce que ceci est susceptible de fonctionner?

Eléphanteau du PHP | 18 Messages

07 sept. 2010, 15:46

j'ai réussi a contourner le problème, j'ai rajouté if (($ef <= 22)and($radio==0)) afin d'etre sur que cette fonction ne prennent pas le pas sur l'autre

Eléphant du PHP | 86 Messages

07 sept. 2010, 15:49

A aucun moment tu n'as précisé qu'une petite centrale ne devait pas avoir de détecteur radio...