2015-12-25 3 views
1

У меня есть форма в html-документе, и то, что я пытаюсь сделать, - это когда кто-то отправляет эту форму в файл «total.php» и в файл total.php, который я вычислил (умножение значений и результат отражается на HTML страницы, но это не работает)php code не выводит значения ввода формы?

Вот HTML и Javascript код

Рабочая формы:.

, когда пользователь может выбрать свой уровень, скажем 1, то другие два поля будут автоматически заполнить используя javascript, упомянутый в этом коде, поэтому для уровня 1 будут заполнены два других поля:

№ человека = 3 и заработок человека = 5 долларов США. после этого есть кнопка под названием, как рассчитайте зарабатывание после того, как пользователь нажмет эту кнопку она идет в файл total.php как «действия вида = total.php»

<script> 
      function getPerson(select) { 
    var form = select.form; 
    form.ref_person.value = select.options[select.selectedIndex].getAttribute('per'); 
    form.earn_person.value = select.value;}        
      </script> 
         <form id="calc" method="post" action="total.php" target="total"> 
          <fieldset> 
          <legend>Person and earning</legend> 
          <label class="fhead">CHOOSE YOUR LEVEL :</label> 
          <select name="choose" id="personSelect" onchange="getPerson(this)"> 
            <option value="" selected>Choose</option> 
            <option per="3" value="$5">1</option> 
            <option per="9" value="$4">2</option> 
            <option per="27" value="$4">3</option> 
          </select> 
          <br> 
          <label class="fhead" for="personNumber">No. Of person:</label> 
          //first input field 
           <input type="text" name="ref_person"id="personNumber" class="field" readonly="readonly"> 
          <br /> 

          <label class="fhead" for="personEarning">Earning of person:</label> 
           //second input field 
          <input type="text" name="earn_person" id="personEarning" class="field" readonly="readonly"> 
          </fieldset> 

          <input style=" float:right; margin-right:90px;" name="submit" value="Calculate Earnings" type="submit"> 

         </form> 

           //This iframe tag helps in reflecting the result of the calculation I did in total.php . 

          <iframe src="total.php" name="total" width="100%"frameborder="0"></iframe> 

Вот мой total.php код

Теперь в общей сложности php я выбрал входные значения формы, чтобы вычислить материал, и результат этого должен отразиться на странице html, но, к сожалению, это не wokring.

Я не знаю, где я ошибаюсь.

//fetching input values from form 
<?php 
$ref_person=$_POST['ref_person']; 
$earn_person=$_POST['earn_person']; 

//required calcualtion  
$total =$ref_person * $earn_person; 
$monthly = $total; 
$yearly = $monthly * 12; 
?> 

<This is start tr tag> 
    <this is td tag> 
    <b style="color:#FFF">Monthly Income: $<?php if (empty($total) || $total == 0 || $total == 0.00) { echo "0"; } 
    else { echo "$monthly"; } ?>.00</b> 
<This is end of td tag > 

</This is end of tr tag> 

<This is start tr tag > 

    <This is td tag > 
    <b style="color:#FFF">Yearly Income: $<?php if (empty($total) || $total == 0 || $total == 0.00) { echo "0"; } 
    else { echo "$yearly"; } ?>.00</b> 
<This is end of td tag > 

</This is end of tr tag> 
+0

Я думаю, вы должны взглянуть на вашу функцию JS снова. Вы передаете параметр под названием 'select' в качестве параметра, а затем пытаетесь использовать его всеми способами - просто выглядит неправильно – RamRaider

+0

Похоже, вы пытаетесь обновить 'total.php', но он не обновит iframe. Это не потому, что вам нужно обновить всю страницу. Это не сработает. Попробуйте AJAX. – Daniel

+0

@RamRaider, возможно, вы правы, но как исправить эту часть. и «Даниэль» на самом деле это не выбор значений из формы, отражая эти значения на странице html. – ninja

ответ

0

Удивительно, что функция javascript, похоже, работала, поэтому примите мои извинения за сомнение. Я думаю, вы могли бы изменить total.php код:

<?php 
    $ref_person=intval($_POST['ref_person']); 
    $earn_person=intval($_POST['earn_person']); 

    $total = $ref_person * $earn_person; 
    $monthly = $total; 
    $yearly = $monthly * 12; 

    /* you didn't return or echo any value */ 
    echo $yearly > 0 && !empty($yearly) ? 'Total Yearly: $'.$yearly : ''; 
?> 

я изменил, в тесте, функция Js, что показано ниже:

 function getPerson(n) { 
      var form = n.parentNode.parentNode; 
      form.ref_person.value = n.options[ n.options.selectedIndex ].getAttribute('per'); 
      form.earn_person.value = n.value; 
     } 
+0

Спасибо !!! Рамрайдер, теперь он работает, я предполагаю, что ошибка заключалась в том, что я не бросал его, а получая значения? Btw спасибо! много!! для того, чтобы взглянуть на мой код и помочь мне. – ninja

+0

Хотя я только что проверил, когда я положил «$» в тег опции или в javascript "form.earn_person.value = '$' + n.value;" то он не работает. – ninja

0

Существует множество ошибок. Предполагая, что ваш JS работает, и у вас есть значения, тогда, вероятно, вы получите строки, которые не могут быть отлиты для целого числа.

Значения опций неправильны, не должно быть $ до цифры, вы можете использовать $ между не значением, потому что тогда PHP будет передан в целое число 0 при умножении, а также потому, что числовые вары, такие как $ 1, фактически являются backreferences в PHP, тогда это может вызвать предупреждения.

Изменить

<option per="3" value="$5">1</option> 
<option per="9" value="$4">2</option> 
<option per="27" value="$4">3</option> 

в

<option per="3" value="5">$5</option> 
<option per="9" value="4">$4</option> 
<option per="27" value="4">$4</option> 

Также у Вас есть ошибка в вашем HTML. Между атрибутами здесь нет места:

<input type="text" name="ref_person"id="personNumber" 

Ваш total.php не будет работать таким образом. Возможно, если вы сохранили данные в сеансе, а затем периодически обновляли iframe, это имело бы смысл.

+0

Да, JS работает отлично, и да, вы правы, я положил этот $ в код java-скрипта «form.earn_person.value = '$' + select.value;" и удаленный из значения файл total.php не вычисляется, поскольку я использовал echo для переменной $ total, чтобы проверить, извлекает ли он входные значения или нет? – ninja

+0

Вы были правы, что $ thing создавала проблему, даже когда я пишу ее в javascript, теперь я упомянул «$» во входном теге формы, и он работает нормально. Благодаря!! – ninja

Смежные вопросы