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

Php 当页面加载时,输入框显示未定义的变量,php,mysql,Php,Mysql,我有4个输入框,3个是隐藏字段。第一个输入框显示一个数字,第二个显示20%的数字,第三个显示从数字中减去20%的初始数字得到的答案 textbox A = 100 20% of 100 = 20. textbox B = 20. 100 - 20 = 80. textbox C = 80 我已经能够完成所有这一切,并将变量传递给输入框,但当我加载页面时,它会用未定义的变量填充文本框,当我单击按钮时,它会执行脚本,并将表示未定义变量的初始文本插入我的数据库。如何将答案发布到数据库中,而不是发布页

我有4个输入框,3个是隐藏字段。第一个输入框显示一个数字,第二个显示20%的数字,第三个显示从数字中减去20%的初始数字得到的答案

textbox A = 100
20% of 100 = 20.
textbox B = 20.
100 - 20 = 80.
textbox C = 80
我已经能够完成所有这一切,并将变量传递给输入框,但当我加载页面时,它会用未定义的变量填充文本框,当我单击按钮时,它会执行脚本,并将表示未定义变量的初始文本插入我的数据库。如何将答案发布到数据库中,而不是发布页面加载的内容。 这是我的密码

加载时:


这是表格

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

捐款额*
首先初始化变量
虽然可以接受的答案会起作用,但我认为,从长远来看,提前初始化变量会更好

<?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表单的简单易读,并允许您在将来具有更大的灵活性,例如,如果您希望为某些输入字段设置默认值

<?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");
?>
这是正确的方法

    $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 />
$amount=0.0;
$iamount=0.0;
$inimain=0.0;
$outamount=0.0;

如果您的If条件不成立,您是否在其他地方定义了$inimain和$OUTPAMOUNT?不那么,为什么会发生这种情况呢…?计算是基于
$\u POST
变量进行的,而不是用户定义的变量,因此OP的if语句已经处理了
$amount
$iamount
$inimain
$outamount
需要浮动的唯一时间。在此之后,变量仅用于显示(除非OP有一些他没有显示的其他代码),因此初始化为空字符串可以正常工作,并且不需要表单中的另一个
if
。在您的答案中,您仍然需要在表单中使用一些if语句,以避免在输入字段中输出
0.0
。@WilliamPerron。是的,你的建议是正确的。但是,假设用户输入字符或字符,代码上还有很多工作要做。如果是,那么这就属于输入验证领域,这超出了这个问题的范围。@WilliamPerron好的。我明白了,我想他们都是对的,谢谢各位
 $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 />