我的页面上有一堆涉及数字的文本框。数据库中的默认值在创建时为NULL,并且每个输入echo
都是数据库中的值(默认情况下没有,因为它设置为null
)。
我遇到的问题是,如果用户第一次打开表单,提交表单并且没有填写项目,则值变为0
而不是保留{{1} }}
有人可以帮助我吗?
当用户打开页面时,它会像这样格式化数字:
null
当用户发布表单时,它会将数字取消格式化,如下所示:
if(isset($data['variable1']))
$variable1 = numberFormat($data['variable1']);
else
$variable1 = "";
我甚至试过这样做:
$variable1 = numberUnformat($_POST['variable1']);
NUMBERFORMAT()
if(isset($_POST['variable1']))
$variable1 = numberUnformat($_POST['variable1']);
else
$variable1 = "";
numberUnformat()
function numberFormat($n, $n_decimals="2")
{
return ((floor($n) == round($n, $n_decimals)) ? number_format($n) : number_format($n, $n_decimals));
}
答案 0 :(得分:0)
if(isset($_POST['variable1']))
$_POST['variable1']
将始终设置,如果它是表单的一部分。 HTTP POST值(或通过HTTP传输的任何其他内容)永远不会null
,因为它不是HTTP中的类型。最好的是一个空字符串,它不是null
,因此上述条件始终为true,并且您的非格式化函数将始终返回0
。
您必须检查strlen($_POST['variable1']) > 0
或$_POST['variable1'] !== ''
。
答案 1 :(得分:0)
因为它包含在您的表单帖子中,所以该变量在技术上设置(设置为''),这是您需要检查的内容。
一个简单的方法可能是
if(strlen(trim($data['variable1'])) > 0)
{
$variable1 = numberFormat($data['variable1']);
}
else
{
$variable = null;
}
取决于您实际想要做什么。所以这里我们删除之前和之后的所有空格,然后测试输入的长度,如果它大于0,则用户输入一些内容,否则我们将其转换为真空。
答案 2 :(得分:0)
isset($_GET['data'])
即使它是空的, input name="data"
也是如此
你也应该检查$_GET['data'] === ''
(或$ _POST)
答案 3 :(得分:0)
试试这个
if(isset($data['variable1']) && !is_null($data['variable1']))
$variable1 = numberFormat($data['variable1']);
else
$variable1 = "";