php代码没有获取表单输入值?

时间:2015-12-25 19:52:10

标签: javascript php html

我在html文档中有一个表单,我正在尝试做的是当有人提交此表单时,它转到文件“total.php”并在total.php文件中我计算(值的乘法和结果反映在html页面上,但它无法正常工作。)

这是html和javascript代码

表格的工作:

当用户选择他的等级时,让我们说1然后其他两个字段将使用此代码中提到的javascript自动填充,因此对于等级1,其他两个字段将被填充为

没有。人= 3,人的收入= 5美元。在此之后有一个名为计算收益的按钮,一旦用户点击该按钮,它就会将文件total.php作为“action of form = 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页面上,但不幸的是它没有w。

我不知道我在哪里弄错了。

//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>

2 个答案:

答案 0 :(得分:0)

有很多错误。假设你的JS工作并且你有值,那么你可能会得到无法转换为整数的字符串

选项值是错误的,不应该有$ before数字,你可以使用$之间没有值,因为在PHP中它会在你进行乘法时被转换为整数0,并且因为像$ 1这样的数字变量实际上是{{3在PHP中,它可能会导致警告。

更改

<StackPanel Grid.Row="1" VerticalAlignment="Top" Padding="12,8,0,0">
    <TextBlock Text="{x:Bind ViewModel.Value.EventName}" />
    <ListBox ItemsSource="{x:Bind ViewModel.Value.Companies}">
        <ListBox.ItemTemplate>
            <DataTemplate x:DataType="viewModels:Company">
                <TextBlock Text="{x:Bind CompanyName}"/>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</StackPanel>

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

你的HTML也有错误。这里的属性之间没有空格:

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

你的total.php不会那样工作。也许如果您将数据保存在会话中然后定期刷新iframe,那将是有意义的。

答案 1 :(得分: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;
        }