按钮表单提交未提交NULL

时间:2016-10-24 21:53:03

标签: php html forms

我正在使用一个相当直接的表单但由于某种原因它没有提交NULL结果而是将它们作为空结果提交。

<div class="span6"> 
    <form action="" method="POST">                                       
        <div class="block-fluid without-head">                        
            <div class="toolbar clearfix">
                <div class="right">
                    <div class="btn-group">
                        <button type="submit" class="btn btn-small btn-warning tip" data-original-title="Submit Aritcle">
                            <span class="icon-ok icon-white"></span>
                        </button>
                        <button type="button" class="btn btn-small btn-danger tip" data-original-title="Delete Article">
                            <span class="icon-remove icon-white"></span>
                        </button>
                    </div>
                </div>
                <div class="left">
                    <div style="font-size: 11pt; font-family: -webkit-body; font-weight: bolder;">Article Exchange Request</div>
                </div>
            </div>                        

            <div class="row-form clearfix">
                <div class="span3">Title</div>
                <div class="span9"><input type="text" name="title" value="" placeholder="main subject title"></div>
            </div>

            <div class="row-form clearfix">
                <div class="span3">First Sentence</div>
                <div class="span9"><input type="text" name="s1" value="" placeholder="Sentence with max of 200 characters"></div>
            </div>

            <div class="row-form clearfix">
                <div class="span3">Second Sentence</div>
                <div class="span9"><input type="text" name="s2" value="" placeholder="Optional sentence with max of 200 characters"></div>
            </div>                                                

            <div class="row-form clearfix">
                <div class="span3">Third Sentence</div>
                <div class="span9"><input type="text" name="s3" value="" placeholder="Optional Sentence with max of 200 characters"></div>
            </div>

            <div class="row-form clearfix">
                <div class="span3">Website Url</div>
                <div class="span9"><input type="text" name="link" value="" placeholder="Url to be included in articles"></div>
            </div>

            <div class="row-form clearfix">
                <div class="span3">Website Url Title</div>
                <div class="span9"><input type="text" name="link_text" value="" placeholder="Url text to be included in articles limit 150 characters"></div> 
            </div>

            <div class="row-form clearfix">
                <div class="span3">Credit Offer</div>
                <div class="span9"><input type="text" name="cost_value" value="" placeholder="Example: 100"></div>
            </div>
        </div>                    
    </form>
</div>

问题是有人可以在没有输入任何数据的情况下提交表单,并且仍然提交,并将空结果添加到数据库中的每一列。含义数据库中未设置NULL值。

我的表单处理

<?

if (isset($_POST[cost_value])) {
    $stmt = $db->prepare("SELECT credits from member_credits WHERE username = :username");
    $stmt->bindParam(':username', $username);
    $stmt->execute();
    $row = $stmt->fetch();
    $count = $row[credits];
    if ($count > $_POST[cost_value]) {
        $stmt = $db->prepare('INSERT INTO article_requests (title, s1, s2, s3, link, link_text, offer, username) VALUES (:title, :s1, :s2, :s3, :link, :link_text, :offer, :username)');
        $stmt->bindValue(':title', $_POST[title]);
        $stmt->bindValue(':s1', $_POST[s1]);
        $stmt->bindValue(':s2', $_POST[s2]);
        $stmt->bindValue(':s3', $_POST[s3]);
        $stmt->bindValue(':link', $_POST[link]);
        $stmt->bindValue(':link_text', $_POST[link_text]);
        $stmt->bindValue(':offer', $_POST[cost_value]);
        $stmt->bindValue(':username', $username);
        $stmt->execute();
    }
}
?>

我希望在提交时发生的是如果在表单中没有输入值,则应将其设置为NULL ...这意味着如果未设置$ _POST [cost_value],则表单将不会提交。现在看来,总是看到$ _POST [cost_value]被设置 - 有时候是$ _POST [cost_value] ='100'这样的值;和其他时间$ _POST [cost_value] ='';但在这两种情况下,表格都会提交。同样我有数据库集,所以只有s2和s3的值应该是null,但是当所有提交为空而不是null时,那几乎是无用的。

我到底错过了什么?为什么不说$ _POST [cost_value] = NULL;如果用户没有输入值?为什么提交''??我觉得它会成为我忽视的基本东西,我只是看不到它......

更新明确

我知道有很多方法可以解决这个问题。我可以使用if then then test,我可以使用临时变量,我可以检查值本身是否是''。我知道周围的工作是什么。我不明白为什么需要它们。为什么我每周都使用if isset制作表单,并且每天都有效。如果表单没有来自用户的值输入,则表单将不会提交,因为if isset返回false。那么为什么它在这个特定的形式上提交''而不是说'isset不处理。

2 个答案:

答案 0 :(得分:1)

//为帖子分配一个var。

notifyDatasetChanged()

//确保清理var(提交时没有有趣的业务)

$DIRTY_Var = $_POST['varinputname'];

//检查var是否为空,或者是否有值。如果为空,则将var设置为null;

$CLEAN_Var = filter_var($DIRTY_Var,` FILTER_SANITIZE_STRING);

答案 1 :(得分:-1)

尝试

func changeFontSize()
{
    var coefficient = 1.0
    switch device{
        case iPadPro:
            coefficient = 1.2
        case iPhone5:
            coefficient = 0.9
        case iPhone4:
            coefficient = 0.8
        ...
        updateFontSizeInApplication(coefficient)    
}

//你的代码 }