Как получить значение выбранного входного текста среди многих, используя цикл - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь создать калькулятор, и для этого у меня есть два раскрывающихся меню, а затем на основе второго раскрывающегося списка я получаю различные поля ввода, значения которых уже определены. Мой вопрос заключается в том, как пройти через каждое поле ввода, чтобы я мог получить только один из них, и показать вычисления, основанные только на этом конкретном поле. Пока я это сделал.

HTML код:

<!DOCTYPE html>
<html>
   <head>
      <title>CO-Calculator</title>
   </head>
   <body>
      <div style="width: 500px; margin: 0 auto; background: #000; color: #fff;">
         <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
            <select id="segmentselector" name="product">
               <option value="commodity">MCX</option>
               <option value="equity">Equity</option>
            </select>
            <br><br>
            <div id="commodity" class="myclass">
               <select id="scripselector" name="segment">
                  <option value="ALUMINI">ALUMINI</option>
                  <option value="ALUMINIUM">ALUMINIUM</option>
                  <option value="COPPER">COPPER</option>
                  <option value="COPPERM">COPPERM</option>
                  <option value="CRUDEOIL">CRUDEOIL</option>
                  <option value="CRUDEOILM">CRUDEOILM</option>
                  <option value="GOLD">GOLD</option>
                  <option value="GOLDM">GOLDM</option>
                  <option value="LEAD">LEAD</option>
                  <option value="LEADMINI">LEADMINI</option>
                  <option value="NATURALGAS">NATURALGAS</option>
                  <option value="NICKEL">NICKEL</option>
                  <option value="NICKELM">NICKELM</option>
                  <option value="SILVER">SILVER</option>
                  <option value="SILVERM">SILVERM</option>
                  <option value="ZINC">ZINC</option>
                  <option value="ZINCM">ZINCM</option>
               </select>
            </div>
            <br><br>
            <div id="ALUMINI" class="lot">
               <label>Lot Size</label>
               <input type="text" name="abalumini" value="1000" readonly>
            </div>
            <div style="display: none;" id="ALUMINIUM" class="lot">
               <label>Lot Size</label>
               <input type="text" name="abaluminim" value="5000" readonly>
            </div>
            <div style="display: none;" id="COPPER" class="lot">
               <label>Lot Size</label>
               <input type="text" name="abcopper" value="1000" readonly>
            </div>
            <div style="display: none;" id="COPPERM" class="lot">
               <label>Lot Size</label>
               <input type="text" name="abcopperm" value="250" readonly>
            </div>
            <div style="display: none;" id="CRUDEOIL" class="lot">
               <label>Lot Size</label>
               <input type="text" name="abcrudeoil" value="100" readonly>
            </div>
            <div style="display: none;" id="CRUDEOILM" class="lot">
               <label>Lot Size</label>
               <input type="text" name="abcrudeoilm" value="10" readonly>
            </div>
            <div style="display: none;" id="GOLD" class="lot">
               <label>Lot Size</label>
               <input type="text" name="abgold" value="100" readonly>
            </div>
            <div style="display: none;" id="GOLDM" class="lot">
               <label>Lot Size</label>
               <input type="text" name="abgoldm" value="10" readonly>
            </div>
            <div style="display: none;" id="LEAD" class="lot">
               <label>Lot Size</label>
               <input type="text" name="ablead" value="5000" readonly>
            </div>
            <div style="display: none;" id="LEADMINI" class="lot">
               <label>Lot Size</label>
               <input type="text" name="ableadm" value="1000" readonly>
            </div>
            <div style="display: none;" id="NATURALGAS" class="lot">
               <label>Lot Size</label>
               <input type="text" name="abnaturalgas" value="1250" readonly>
            </div>
            <div style="display: none;" id="NICKEL" class="lot">
               <label>Lot Size</label>
               <input type="text" name="abnickel" value="250" readonly>
            </div>
            <div style="display: none;" id="NICKELM" class="lot">
               <label>Lot Size</label>
               <input type="text" name="abnickelm" value="100" readonly>
            </div>
            <div style="display: none;" id="SILVER" class="lot">
               <label>Lot Size</label>
               <input type="text" name="absilver" value="30" readonly>
            </div>
            <div style="display: none;" id="SILVERM" class="lot">
               <label>Lot Size</label>
               <input type="text" name="absilverm" value="5" readonly>
            </div>
            <div style="display: none;" id="ZINC" class="lot">
               <label>Lot Size</label>
               <input type="text" name="abzinc" value="5000" readonly>
            </div>
            <div style="display: none;" id="ZINCM" class="lot">
               <label>Lot Size</label>
               <input type="text" name="abzincm" value="1000" readonly>
            </div>
            <div style="display: none;" id="equity" class="myclass">
               <select name="segment">
                  <option>AXISBANK</option>
                  <option>TCS</option>
                  <option>WIPRO</option>
               </select>
            </div>
            <br><br> 
            <input type="text" name="price" placeholder="price" required><br><br>
            <input type="text" name="stoploss" placeholder="Stop Loss" required> <br><br>
            <button type="submit" class="login100-form-btn" name="getdata">Get Data</button>
         </form>
      </div>
   </body>
</html>

Код JQuery:

    <script type="text/javascript">
    $(function() {
        $('#segmentselector').change(function() {
            $('.myclass').hide();
            $('#' + $(this).val()).show();
        });
    });
</script>
<script type="text/javascript">
    $(function() {
        $('#scripselector').change(function() {
            $('.lot').hide();
            $('#' + $(this).val()).show();
        });
    });
</script>

PHP код:

<?php
function calculator()
{
    if (isset($_POST['getdata'])) {
        $price        = $_POST['price'];
        $stoploss     = $_POST['stoploss'];
        $lowertrigger = 0.25;
        $Additional   = 0.011;

        $abalumini    = $_POST['abalumini'];
        $abaluminim   = $_POST['abaluminim'];
        $abcopper     = $_POST['abcopper'];
        $abcopperm    = $_POST['abcopperm'];
        $abcrudeoil   = $_POST['abcrudeoil'];
        $abcrudeoilm  = $_POST['abcrudeoilm'];
        $abgold       = $_POST['abgold'];
        $abgoldm      = $_POST['abgoldm'];
        $ablead       = $_POST['ablead'];
        $ableadm      = $_POST['ableadm'];
        $abnaturalgas = $_POST['abnaturalgas'];
        $abnickel     = $_POST['abnickel'];
        $abnickelm    = $_POST['abnickelm'];
        $absilver     = $_POST['absilver'];
        $absilverm    = $_POST['absilverm'];
        $abzinc       = $_POST['abzinc'];
        $abzincm      = $_POST['abzincm'];

        $X = $price * $abalumini * $lowertrigger * $Additional;

        if ($abalumini) {
            $Y = ($price - $stoploss) * $abalumini;
        }
        if ($Y > $X) {
            echo "$Y";
        } else {
            echo "$X";
        }
    }
}
calculator();
?>

1 Ответ

0 голосов
/ 30 апреля 2018

Предполагая, что вы хотите получить входное значение, соответствующее опции, выбранной в <select id="scripselector" name="segment">, вам нужен способ сопоставления value предыдущего select и name требуемого input.

Итак, я предлагаю вам изменить HTML, чтобы values из select и names из inputs соответствовали:

        <!-- SELECT remains the same -->
        <div id="commodity" class="myclass">
           <select id="scripselector" name="segment">
              <option value="ALUMINI">ALUMINI</option>
              <option value="ALUMINIUM">ALUMINIUM</option>
              <option value="COPPER">COPPER</option>
              <!-- etc. -->
           </select>
        </div>
        <br><br>

        <!-- names are modified to match the select value -->
        <div id="ALUMINI" class="lot">
           <label>Lot Size</label>
           <input type="text" name="ALUMINI" value="1000" readonly>
        </div>
        <div style="display: none;" id="ALUMINIUM" class="lot">
           <label>Lot Size</label>
           <input type="text" name="ALUMINIUM" value="5000" readonly>
        </div>
        <div style="display: none;" id="COPPER" class="lot">
           <label>Lot Size</label>
           <input type="text" name="COPPER" value="1000" readonly>
        </div>
        <!-- and so on... -->

Затем в своем PHP-коде вы можете получить выбранное входное значение:

$selectedInputValue = 0; // zero by default
if(isset($_POST['segment']) && isset($_POST[$_POST['segment']]))
    $selectedInputValue = $_POST[$_POST['segment']];

Наконец, ваша функция PHP становится примерно такой:

function calculator()
{
    if (isset($_POST['getdata'])) {
        $price        = $_POST['price'];
        $stoploss     = $_POST['stoploss'];
        $lowertrigger = 0.25;
        $Additional   = 0.011;

        $selectedInputValue = 0; // zero by default
        if(isset($_POST['segment']) && isset($_POST[$_POST['segment']]))
            $selectedInputValue = $_POST[$_POST['segment']];

        $X = $price * $selectedInputValue * $lowertrigger * $Additional;

        $Y = 0; // zero by default
        if ($selectedInputValue) {
            $Y = ($price - $stoploss) * $selectedInputValue;
        }
        if ($Y > $X) {
            echo "$Y";
        } else {
            echo "$X";
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...