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