引导程序中的表单不起作用..为什么?

时间:2014-06-12 15:24:14

标签: php jquery html forms twitter-bootstrap

出于某种原因,当我尝试在bootstrap模式中使用我的表单时,它不起作用。我怀疑是与PHP有关但我不完全确定。

单击表单上的提交按钮时会出现问题。该文档没有激活应该更新mysql的php,然后将你重定向到另一个页面,而只是刷新当前页面。请记住,这是一种模式。

这是我到目前为止所拥有的:

<?php
if(basename($_SERVER["PHP_SELF"]) == "header.php"){
    die("403 - Access Forbidden");
}
    $cookie_name = 'showmodal';
    $cookie_value = 'AlreadySawModal';
    setcookie($cookie_name, $cookie_value, time() + (43200), '/'); // 43200 = 12hr
 ?> 
<?php

if (!isset($_COOKIE[$cookie_name])) {
?>

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<link href="<?php echo $siteurl; ?>assets/css/<?php echo $theme;?>.min.css" rel="stylesheet" type="text/css" />
<link href="<?phpecho $siteurl; ?>assets/css/addon.css" rel="stylesheet" type="text/css" />
<link href="<?php echo $siteurl; ?>assets/css/<?php echo $themetype; ?>.css" rel="stylesheet" type="text/css" />


    <div id="myModal" class="modal" role="dialog" aria-hidden="false">
        <div class="modal-dialog modal-lg">
            <div class="modal-content">
                <div class="modal-header">

                    <button class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                     <h4 class="modal-title" id="myModalTitle"> You haven't voted in the past 12 hours!? </h4>

                </div>
                <div class="modal-body" id="resize">
    <?php
    $earnedpoints  = false;
    $insertnew     = false;
    $time          = time();
    $redirect      = "";
    $account       = $mysqli->real_escape_string(preg_replace("/[^A-Za-z0-9 ]/", '', @$_POST['name']));
    $siteid        = $mysqli->real_escape_string(@$_POST['votingsite']);
    $checkacc      = $mysqli->query("SELECT * FROM accounts WHERE name = '$account'");
    $countcheckacc = $checkacc->num_rows;
    if ($countcheckacc == 0 && isset($_POST['submit'])) {
        $funct_error = "This account doesn't exist!";
    } elseif ($account == '' && isset($_POST['submit'])) {
        $funct_error = 'You need to put in a username!';
    } elseif (empty($_POST['votingsite']) && isset($_POST['submit'])) {
        $funct_error = "Please select a voting site";
    } elseif (isset($_POST['submit'])) {
        $result = $mysqli->query("SELECT *, SUM(times) as amount FROM " . $prefix . "votingrecords WHERE NOT account='' AND NOT account='0' AND account='" . $account . "' AND siteid = '" . $siteid . "'") or die('Error - Could not look up vote record!');
        $row       = $result->fetch_assoc();
        $sitequery = $mysqli->query("SELECT * FROM " . $prefix . "vote WHERE id = '" . $siteid . "'");
        $vsite     = $sitequery->fetch_assoc();
        $gvp       = $vsite['gvp'];
        $gnx       = $vsite['gnx'];
        $timecalc  = $time - $row['date'];
        if ($row['amount'] == '' || $timecalc > $vsite['waittime']) {
            if ($row['amount'] == '') {
                $result = $mysqli->query("INSERT INTO " . $prefix . "votingrecords (siteid, ip, account, date, times) VALUES ('" . $siteid . "', '" . $ipaddress . "', '" . $account . "', '" . $time . "', '1')") or die('Error - Could not insert vote records!');
            } else {
                $result = $mysqli->query("UPDATE " . $prefix . "votingrecords SET siteid = '" . $siteid . "', ip='" . $ipaddress . "', account='" . $account . "', date='" . $time . "', times='1' WHERE account='" . $account . "' AND siteid = '" . $siteid . "'") or die('Error - Could not update vote records!');
            }
            $earnedpoints = true;
            if ($earnedpoints == true) {
                if ($account != '') {
                    $result = $mysqli->query("UPDATE accounts SET $colvp = $colvp + $gvp, $colnx = $colnx + $gnx WHERE name='" . $account . "'") or die('Error - Could not update account!');
                }
                $funct_msg = '<meta http-equiv="refresh" content="0"; url=' . $vsite['link'] . '">';
                $redirect  = true;
            }
        } elseif ($timecalc < $vsite['waittime'] && $row['amount'] != '') {
            $funct_msg = 'You\'ve already voted for ' . $vsite['name'] . ' within the last ' . round($vsite['waittime'] / 3600) . ' hours!';
            $funct_msg .= '<br />Vote time: ' . date('M d\, h:i A', $row['date']);
        } else {
            $funct_error = 'Unknown Error';
        }
    }
    if ($redirect == true) {
        echo $funct_msg;
    }

    else {
?> 
<form method="post">  
    <?php
        if (isset($funct_msg)) {
            echo '<div class="alert alert-danger">' . $funct_msg . '</div>';
        }
        if (isset($funct_error)) {
            echo '<div class="alert alert-danger">' . $funct_error . '</div>';
        }
        $query = $mysqli->query("SELECT * from " . $prefix . "vote");
        if ($query->num_rows == 0) {
            echo "<div class=\"alert alert-danger\">Your administrator has not added any voting sites yet!</div>";
        }
        echo "
        <div class=\"form-group\">
        <label for=\"voteSite\">Select Site:</label>
        <select name=\"votingsite\" class=\"form-control\" id=\"voteSite\" required>
        <option value=\"\" disabled selected>Select Site...</option>";
        while ($row = $query->fetch_assoc()) {
            echo "<option value=\"" . $row['id'] . "\">" . $row['name'] . "</option>";
        }
        echo "</select>
        </div>";
        if (!isset($_SESSION['id'])) {
            echo "<input type=\"text\" name=\"name\" maxlength=\"15\" class=\"form-control\" placeholder=\"Username\" required autocomplete=\"off\"/><br/>";
        } else {
            echo "<input type=\"text\" name=\"name\" maxlength=\"15\" class=\"form-control\" placeholder=\"" . $_SESSION['name'] . "\" value=\"" . $_SESSION['name'] . "\"required autocomplete=\"off\"/><br/>";
        }
?>

    <button type="submit" name="submit" class="btn btn-primary">Vote &raquo;</button>
</form> 
<br/>
                </div>
            </div>
        </div>
    </div>

    <script> $('#myModal').modal('show'); </script>
    <?php
    }
?>
<?php
} else {
?>

<link href="<?php echo $siteurl; ?>assets/css/<?php echo $theme; ?>.min.css" rel="stylesheet" type="text/css" />
<link href="<?php echo $siteurl; ?>assets/css/addon.css" rel="stylesheet" type="text/css" />
<link href="<?php echo $siteurl; ?>assets/css/<?php echo $themetype;?>.css" rel="stylesheet" type="text/css" />

<?php
}
?>

模态工作正常,它的形式不是提交/执行php代码。

任何和所有帮助表示赞赏!

编辑: 有人告诉我,虽然不是W3C有效,但如果你想要脚本开始自己,那么动作标签是不必要的。也只是从(根据http://www.w3schools.com/tags/att_form_action.asp学习HTML5中不需要表单标记:O)所以

<form action=<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?> method="post"> 

相同
<form method="post">

1 个答案:

答案 0 :(得分:2)

可能的解决方案:

1)&#34;表格&#34;中没有指定任何动作。标记

2)也许你应该改变

<button type="submit">

<input type="submit" name="submit" value="Submit form">

3)尝试添加此代码以查看是否确实没有发布数据,因为$ _POST [&#39; submit&#39;]未指定...

if ($_SERVER['REQUEST_METHOD']=='POST') {
    echo "there's a post submitted";
}

4)尝试清理PHP代码,使用适当的OO原则/模式来管理表单和数据。