输入框在页面加载时显示未定义的变量

时间:2017-08-23 10:11:24

标签: php mysql

我有4个输入框,3个是隐藏字段。第一个输入框取一个数字,而第二个输入框显示数字的20%,第三个输入框显示从图中减去初始数字的20%得到的答案。这是我的意思的典型例子。

textbox A = 100
20% of 100 = 20.
textbox B = 20.
100 - 20 = 80.
textbox C = 80

我已经能够完成所有这些并将变量传递到输入框,但是当我加载页面时,它使用未定义的变量填充文本框,当我单击按钮时,它会执行脚本和初始文本未定义的变量插入到我的数据库中。我如何将答案发布到我的数据库而不是发布页面的负载。 这是我的代码。

加载时:

enter image description here

<?php
if (isset($_POST['amount'])&&  ($_POST['iniamount']) && 
($_POST['outamount'])) {

    $amount = $_POST['amount'];
    $iamount = 0.2;

    $inimain = $iamount * $amount;
    $outamount = $amount - $inimain;    

}
$date = date("Y-m-d H:i:s");
?>

此处为表格

<div class="form">
    <form method="POST" enctype="multipart/form-data" name="donation" class="" >
        <div class="form-group ">
            <label for="cname" class="control-label col-lg-2">Donation Amount <span class="required">*</span></label>
            <div class="col-lg-10">
                <input class="form-control" id="amount" name="amount"  type="text" required />
                <input name="email" type="hidden" class="form-control" id="email"  required />
                <input name="iniamount" type="text" class="form-control" id="iniamount" value="<?php echo $inimain; ?>" required />                             
                <input name="outamount" type="text" class="form-control" id="outamount" value="<?php echo $outamount;  ?>" required />
                <input name="date" type="hidden" class="form-control" id="outamount" value="<?php echo $date;  ?>"  required />
            </div>

2 个答案:

答案 0 :(得分:1)

首先初始化变量

虽然接受的答案是有效的,但我认为从头开始初始化变量将为您提供更好的服务。

<?php
    $inimain = '';
    $outamount = '';
    // repeat for any other variable you might need in your form

    if (isset($_POST['amount'])&&  ($_POST['iniamount']) && ($_POST['outamount'])) {
        $amount = $_POST['amount'];
        $iamount = 0.2;
        $inimain = $iamount * $amount;
        $outamount = $amount - $inimain;    
    }
    $date = date("Y-m-d H:i:s");
?>

这将使您可以保持HTML表单简单易读,并且将来可以提供更大的灵活性,例如,如果您想为某些输入字段设置默认值。

答案 1 :(得分:1)

<?php
    $amount = 0.0;
    $iamount = 0.0;
    $inimain = 0.0;
    $outamount = 0.0; 


    if (isset($_POST['amount'])&&  ($_POST['iniamount']) && ($_POST['outamount'])) {
        $amount = $_POST['amount'];
        $iamount = 0.2;
        $inimain = $iamount * $amount;
        $outamount = $amount - $inimain;    
    }
    $date = date("Y-m-d H:i:s");
?>

问题来自变量。 启动变量。实际上不是这样的,因为它是为了计算。 但如果你喜欢这样,当文本框为空时,它将导致未定义的错误。系统将无法知道如何处理它。

 $inimain = '';
 $outamount = '';

这是正确的方法。

    $amount = 0.0;
    $iamount = 0.0;
    $inimain = 0.0;
    $outamount = 0.0; 



<input name="iniamount" type="text" class="form-control" id="iniamount" value="<?php if(isset($_POST['iniamount'])){echo $inimain;} ?>" required />                             
 <input name="outamount" type="text" class="form-control" id="outamount" value="<?php if(isset($_POST['$outamount'])){echo $outamount;}  ?>"  required />
 <input name="date" type="hidden" class="form-control" id="outamount" value="<?php if(isset($_POST['$date'])){echo $date;} ?>" required />