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