Php 动态表单未提交

Php 动态表单未提交,php,jquery,forms,Php,Jquery,Forms,我正在为能力有限的活动制作动态登记表,但在某些情况下,我遇到了表格无法提交的问题。请允许我解释一下 其中一个表单字段要求用户选择要预订的座位数。该字段由列出剩余可用座位数的计数器补充。计数器通过将MySQL数据库中的相关列相加,然后从可用座位总数中减去该数字,从而计算占用的座位总数。下面是它的样子 <div id="seat_field"> <select name="seats" id="seats" class="field" required>

我正在为能力有限的活动制作动态登记表,但在某些情况下,我遇到了表格无法提交的问题。请允许我解释一下

其中一个表单字段要求用户选择要预订的座位数。该字段由列出剩余可用座位数的计数器补充。计数器通过将MySQL数据库中的相关列相加,然后从可用座位总数中减去该数字,从而计算占用的座位总数。下面是它的样子

<div id="seat_field">
    <select name="seats" id="seats" class="field" required>
        <option value="" disabled selected>select</option>
        <option value="0">None</option>
        <option value="1">1</option>
        <option value="2">2</option>                    
    </select>                      
</div>

<?php
    $servername = "localhost";
    $username = "***";
    $password = "***";
    $dbname = "***";

    $conn = new mysqli($servername, $username, $password, $dbname);

    $query = mysqli_query($conn, "SELECT SUM(seats) AS total_seats FROM event");

    $row = mysqli_fetch_assoc($query);

    $total_seats = $row['total_seats'];
    $available_seats = 44-$total_seats;

    echo "<div><div id='available_seats' class='seats'>$available_seats</div><div id='seats_remaining' class='seats'>&nbspseats remaining</div></div>";             
?>

选择
没有一个
1.
2.

您的jQuery正在检查“phone”和“number”值,如果未找到,则返回false。这些字段不在您的表单中。从jQuery中删除该验证,或将其作为输入字段添加到表单中

您的jQuery正在检查“phone”和“number”值,如果未找到,则返回false。这些字段不在您的表单中。从jQuery中删除该验证,或将其作为输入字段添加到表单中

感谢所有看过这篇文章的人——我发现罪魁祸首是我的表单验证,尽管不像康拉德提到的那样(无论如何,非常感谢康拉德让我对验证格外关注,从而让我注意到我的实际错误)——

在所有座位都有人坐的情况下,我忘记从验证中删除“座位”,因此表单返回false


这是一个相当愚蠢的错误,如果我自己这么说的话。。。我对使用基于PHP/MySQL结果的有条件脚本交换元素的想法非常着迷,以至于我完全忽略了现在显而易见的非常简单的解决方案。

多亏了大家的关注,我发现罪魁祸首是我的表单验证,尽管不像Konrad提到的那样(无论如何,非常感谢Konrad让我更加注意验证,从而让我注意到我的实际错误)——

在所有座位都有人坐的情况下,我忘记从验证中删除“座位”,因此表单返回false


这是一个相当愚蠢的错误,如果我自己这么说的话。。。我对使用基于PHP/MySQL结果的条件脚本交换元素的问题非常着迷,以至于我完全忽略了现在显而易见的非常简单的解决方案。

jQuery在这里的作用是什么?它看起来不是动态的,因为表单是直接提交的,没有AJAX。因此,由于页面内容发生了更改,表单似乎已成功提交。jQuery没有做任何花哨的事情,我只是在某些情况下更喜欢它而不是Javascript。这里没有AJAX——只是一个标准HTML表单,动态的,用户将根据注册级别看到不同的表单。基本上,如果所有的座位都有人坐,那么座位选择将被隐藏并添加一个复选框-但是,在这种情况下,当页面加载时,表单将停止提交。您可以添加完整的表单HTMLOk,并将其附加到我的原始问题中。jQuery在这里的作用是什么?它看起来不是动态的,因为表单是直接提交的,没有AJAX。因此,由于页面内容发生了更改,表单似乎已成功提交。jQuery没有做任何花哨的事情,我只是在某些情况下更喜欢它而不是Javascript。这里没有AJAX——只是一个标准HTML表单,动态的,用户将根据注册级别看到不同的表单。基本上,如果所有的座位都有人坐,座位选择会被隐藏,并且会添加一个复选框-但是,在这种情况下,当页面加载时,表单会停止提交。你能添加完整的表单HTMLOk吗,附加到我的原始问题。我的坏-这些都在表格中,但我把它们留在这里,以防止事情变得太忙,忘记编辑验证以匹配。很好的理解,但不幸的是,这并不是问题的根源……因为你没有从提交中得到任何错误,我仍然认为罪魁祸首在if语句中,因为它只返回false。如果只是暂时的,也可以在那里添加一个警报,看看这是否是你陷入困境的地方。我找到了答案-答案发布在下面。这是一个愚蠢的错误,问题在于验证,尽管不是您注意到的缺失部分。不过,谢谢你让我仔细看一下。我的错-这些都在表单中,但我把它们放在这里,以防止事情变得太忙,忘记编辑验证以匹配。很好的理解,但不幸的是,这并不是问题的根源……因为你没有从提交中得到任何错误,我仍然认为罪魁祸首在if语句中,因为它只返回false。如果只是暂时的,也可以在那里添加一个警报,看看这是否是你陷入困境的地方。我找到了答案-答案发布在下面。这是一个愚蠢的错误,问题在于验证,尽管不是您注意到的缺失部分。不过,谢谢你让我仔细看看。
$(document).ready(function() {
    var available_seats = document.getElementById("available_seats").innerHTML;

    if (available_seats == 0){
        $("#seats").hide();
        $("#seats").prop('required', false);
        $("#seat_field").prepend("<strong>Check to add your party to the bus waiting list</strong>&nbsp&nbsp<input type='checkbox' name='waitlist' /> ");
    };
});
<form action="volunteer.php" method="post" name="volunteer_form" id="plumb_form">
    <input type="text" name="first_name" value="" class="field" id="first_name" required>
    <input type="text" name="last_name" value="" class="field" id="last_name" required>
    <input type="text" name="email" value="" class="field" id="email" required>

    <div id="seat_field">
    <select name="seats" id="seats" class="field" required>
        <option value="" disabled selected>select</option>
        <option value="0">None</option>
        <option value="1">1</option>
        <option value="2">2</option>                    
    </select>                      
</div>

<?php
    $servername = "localhost";
    $username = "***";
    $password = "***";
    $dbname = "***";

    $conn = new mysqli($servername, $username, $password, $dbname);

    $query = mysqli_query($conn, "SELECT SUM(seats) AS total_seats FROM event");

    $row = mysqli_fetch_assoc($query);

    $total_seats = $row['total_seats'];
    $available_seats = 44-$total_seats;

    echo "<div><div id='available_seats' class='seats'>$available_seats</div><div id='seats_remaining' class='seats'>&nbspseats remaining</div></div>";             
?>

    <input type="submit" name="submit" value="Submit" id="submit"></p>

</form>

<script>

$(document).ready(function() {
    var available_seats = document.getElementById("available_seats").innerHTML;

    //THIS IS THE PART THAT'S CAUSING ME TROUBLE...
    if (available_seats == 0){
        $("#seat").hide();
        $("#seats").prop('required', false);
        $("#seat_field").prepend("<strong>Check to add your party to the bus waiting list</strong>&nbsp&nbsp<input type='checkbox' name='waitlist' value='1' /> ");
    };



    $("#plumb_form").submit(function() {

        var first_name = document.forms["plumb_form"]["first_name"].value;
        var last_name = document.forms["plumb_form"]["last_name"].value;
        var email = document.forms["plumb_form"]["email"].value;
        var seats = document.forms["plumb_form"]["seats"].value;


        if(first_name == "" || last_name == "" || email == "" || phone == "" || number == "" || seats == ""){
            return false;
        }


        else if (seats > available_seats) {
            alert("There are not enough seats remaining for your party. Please reduce the number of seats needed or email Darren at dklein@nycaudubon.org to place your party on a waiting list.");
            return false;
         }

        else{
            $("#submit").hide();
            //YOU CAN IGNORE THIS LAST LINE, JUST A LITTLE ANIMATION THING, NOT RELEVANT HERE
            $("#thing").append('<div id="submitting" class="buttonText animated flash">Submitting...</br><div class="againStop" id="stop">Please wait</div></div>');
        };
    });
});

</script>
if(first_name == "" || last_name == "" || email == "" || seats == ""){
    return false;
}