Aller au contenu

[RESOLU]Help php/html et javascript ?


Arghotien

Messages recommandés

Bonjour,

Voici le code

<!DOCTYPE html><html>   <head>    <meta charset="utf-8" />    <link rel="stylesheet" href="test.css" />    <!--[if lt IE 9]>    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>    <![endif]-->   </head><body>    <div id="bloc_page">	    <section>		    <aside>   <img src="bull.png" width="220" height="110" alt="Logo BUll">			    <h1>Calculateur RAID</h1>  <form action="" method="GET" name="test">  <script type="text/javascript">function calculer() { var labase = parseInt(document.getElementById('base').value); var nbdisk = parseInt(document.getElementById('nb_disk').value); var extenddisk = parseInt(document.getElementById('extend_disk').value); var typeraid = parseInt(document.getElementById('type_raid').value); var resultat = typeraid; document.getElementById("resultat").value = resultat; } </script><fieldset> <legend>Choix de la base :</legend> <SELECT size="1" id="base" onchange="calculer()"> <OPTION value="1000">1000</option> <OPTION value="1024">1024</option> </SELECT></br></fieldset><fieldset> <legend>Nombre de disques :</legend> <input type="texte" id="nb_disk" onchange="calculer()"></br></fieldset><fieldset> <legend>Choisir la taille du disque :</legend> <SELECT size="1" id="extend_disk" onchange="calculer()"> <OPTION value="100">100</option> <OPTION value="300">300</option> <OPTION value="400">400</option> <OPTION value="450">450</option> <OPTION value="600">600</option> <OPTION value="900">900</option> <OPTION value="1000">1000</option> <OPTION value="2000">2000</option> <OPTION value="3000">3000</option> </SELECT></br></fieldset><fieldset> <legend>Choisir le type de RAID :</legend> <SELECT size="1" id="type_raid" onchange="calculer()"> <OPTION name="mesCases" value="1">RAID111</option> <OPTION name="mesCases" value="2">RAID222</option> </SELECT></br></fieldset><p><label for="resultat">Resultat</label> <input type="text" id="resultat" readonly="readonly"/></p> <input type="reset"  name="reset"  value="Tout recommencer"></input> </form>		    </aside>	    </section>    </div>   </body></html>

Par contre dans le code, j'ai fait quelques essais.

Mon problème à l'heure aujourd’hui c'est que je ne sais pas comment faire pour que, selon le "type de raid" selectionné, ce soit tel ou tel formule qui s'applique automatiquement.

Avec le PHP il me suffisait de faire cela :

<fieldset> <legend>Choisir le type de RAID :</legend> <SELECT name="type_raid" size="1"> <OPTION value="RAID111">RAID 1 (1+1)</option> <OPTION value="RAID1111">RAID 1 (1+1+1)</option> </SELECT></br></fieldset>

et dans le code PHP cela :

 // Calcules pour les différents raids $raid111_calc=floor(((floor($extend_disk*1/2)*524288*512)*$nb_disk-524288*512*floor($nb_disk/2)*16)/$base/$base/$base); $raid1111_calc=floor(((floor($extend_disk*1/3)*524288*512)*$nb_disk-524288*512*floor($nb_disk/3)*8)/$base/$base/$base); // Recupere l'option selectionnée dans le html  $type_raid=$_GET["type_raid"];   switch ($type_raid) {   case "RAID111" : $type_raid="$raid111_calc";break;   case "RAID1111" : $type_raid="$raid1111_calc";break;  }

Mais en JAVASCRIPT, pas moyen de trouver comment je peux le gerer.....

Lien vers le commentaire
Partager sur d’autres sites

Je crois avoir trouvé, j'ai utilisé la structure IF, complétement débile vu que ça existe aussi en PHP mais j'avais pas réussi à l'utiliser correctement hier :

Voici le code

  <script type="text/javascript">function calculer() { var labase = parseInt(document.getElementById('base').value); var nbdisk = parseInt(document.getElementById('nb_disk').value); var extenddisk = parseInt(document.getElementById('extend_disk').value); var typeraid = document.getElementById('type_raid').value; if (typeraid == 111) {   var typeraid=Math.floor(((Math.floor(extenddisk*1/2)*524288*512)*nbdisk-524288*512*Math.floor(nbdisk/2)*16)/labase/labase/labase); } if (typeraid == 1111) {   var typeraid=Math.floor(((Math.floor(extenddisk*1/3)*524288*512)*nbdisk-524288*512*Math.floor(nbdisk/3)*8)/labase/labase/labase); } if (typeraid == 52) {   var typeraid=Math.floor(((Math.floor(extenddisk*2/3)*524288*512)*nbdisk-524288*512*Math.floor(nbdisk/3)*8)/labase/labase/labase); } if (typeraid == 54) {   var typeraid=Math.floor(((Math.floor(extenddisk*4/5)*524288*512)*nbdisk-524288*512*Math.floor(nbdisk/5)*8)/labase/labase/labase); } if (typeraid == 58) {   var typeraid=Math.floor(((Math.floor(extenddisk*8/9)*524288*512)*nbdisk-524288*512*Math.floor(nbdisk/9)*8)/labase/labase/labase); } if (typeraid == 64) {   var typeraid=Math.floor(((Math.floor(extenddisk*4/6)*524288*512)*nbdisk-524288*512*Math.floor(nbdisk/6)*8)/labase/labase/labase); } if (typeraid == 68) {   var typeraid=Math.floor(((Math.floor(extenddisk*8/10)*524288*512)*nbdisk-524288*512*Math.floor(nbdisk/10)*8)/labase/labase/labase); } var resultat = typeraid; document.getElementById("resultat").value = resultat; } </script>

Maintenant le problème c'est que les calcules ne donnent pas les bons résultats :p

Mais c'est un autre problème, du coup je laisse ouvert le sujet mais je pense que mon problème est maintenant uniquement lié aux calculs :)

Merci à BreizFenrir pour ton aide et ton temps :)

Lien vers le commentaire
Partager sur d’autres sites

De rien.

Accessoirement, à ta place j'aurais défini pour chacune des opérations possibles une fonction Javascript différente que j'aurais appelé lors de l'affectation à resultat, ce qui est globalement plus propre car plus lisible. Aussi, l'utilisation d'un switch devrait être fonctionnelle ce qui rendrait le code beaucoup plus lisible une fois encore.

D'ailleurs mettre chaque équation dans une fonction distincte te permettrait d'utiliser la console Javascript de Firefox (plus besoin d'installer Firebug pour ça il me semble) pour tester tes calculs à la main et les corriger de sorte à obtenir les bons résultats. ;)

Et puis à moins que tu n'aies de bonnes raisons de ne pas le faire, je simplifierais les équations (en ajoutant des commentaires explicatifs au besoin) ; j'utiliserais des "constantes" (bref, des variables affectées une unique fois) plutôt que de devoir retaper certains chiffres à chaque fois ; enfin as-tu vraiment besoin d'appeler Math.floor plusieurs fois par ligne ? (Je n'ai pas fait l'effort d'essayer de comprendre tes calculs, peut-être que tu as raison de faire comme ça.)

Lien vers le commentaire
Partager sur d’autres sites

Alors pour te répondre Breiz,

Oui je suis obligé d'appelé Math.floor à chaque fois sinon cela décale à chaque fois mon résultat et au final j’obtiens des résultats qui ne sont pas ceux du constructeur (j'ai essayé plusieurs méthodes, avec et sans ces arrondis mais ça fonctionne pas :s)

Pour ce qui est de faire une fonction javascript indépendante appelé "resultat", je n'en ai pas vraiment besoin car le code est fini du coup je vais pas créer un .js avec 10 lignes, ça va me faire 3 fichiers pour un petit code (.js + .html + .css)

Pour le switch.. j'y suis pas arrivé :p ( et oui je suis pas un développeur, un switch m'a vaincu :| )

pour finir, firebug, console firefox .. je n'utilise pas, je fais des tests en local (wamps), et si ça ne marche pas je cherche encore !

J'espère avoir bien compris et répondu à tes questions.. encore une fois, je ne suis pas un dévelopeur et donc je me trompe peut être (surement) sur certains points, et je reste ouvert aux remarques :)

Arghotien.

Lien vers le commentaire
Partager sur d’autres sites

Dans ce cas, tu crées une fonction par calcul, et tu fais un test sur le cas à traiter. Et de ce que j'ai lu, le switch case utilise la même syntaxe en javascript qu'en php, c'est donc tout bonard ! (et je compatis, j'ai aussi un peu plus de facilités en php qu'en javascript). Et ça sera plus propre qu'un enchainement de if/else.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...