用于复选框的PHP逻辑,其中我有2个表单和2个MySQL表
我是保罗。我有两张表格:用于复选框的PHP逻辑,其中我有2个表单和2个MySQL表,php,mysql,forms,logic,subscription,Php,Mysql,Forms,Logic,Subscription,我是保罗。我有两张表格: 电子邮件的简单“新闻注册”输入和按钮 带有姓名、电子邮件、信息的“联系人”表格。我还有一个复选框,允许注册此表单中的新闻 您可以在这里的“测试”页面上看到它们: 我不知道如何设置复选框的逻辑,以便两种形式都能正常工作。如果订阅者使用注册表单,然后希望向我们发送消息,则联系人表单根本不允许他们继续: '此电子邮件地址已注册' 。理想情况下,我认为我们应该接受该消息,而不考虑以前的注册或复选框状态。反馈总是有一些积极的话要说: '您的邮件已收到' 或 '您的消息已收到
- 电子邮件的简单“新闻注册”输入和按钮
- 带有姓名、电子邮件、信息的“联系人”表格。我还有一个复选框,允许注册此表单中的新闻
<form id="newsletter-signup" action="?action=signup" method="post">
<label for="signup-email">Sign up for news & events:</label>
<input type="email" name="signup-email" id="signup-email" placeholder="Your email here..."></input>
<input type="submit" name="signup-button" id="signup-button" value="Sign Me Up!"></input>
<p id="signup-response"></p>
</form>
$(document).ready(function(){
$('#newsletter-signup').submit(function(){
//check the form is not currently submitting
if($(this).data('formsstatus') !== 'submitting'){
//setup variables
var form = $(this),
formData = form.serialize(),
formUrl = form.attr('action'),
formMethod = form.attr('method'),
responseMsg = $('#signup-response');
//add status data to form
form.data('formsstatus','submitting');
//show response message - waiting
responseMsg.hide()
.addClass('response-waiting')
.text('Please Wait...')
.fadeIn(200);
//send data to server to be validated
$.ajax({
url: formUrl,
type: formMethod,
data: formData,
success:function(data){
//setup variables
var responseData = jQuery.parseJSON(data),
klass = '';
//response conditional
switch(responseData.status){
case 'error':
klass = 'response-error';
break;
case 'success':
klass = 'response-success';
break;
}
//show reponse message
responseMsg.fadeOut(200,function(){
$(this).removeClass('response-waiting')
.addClass(klass)
.text(responseData.message)
.fadeIn(200,function(){
//set timeout to hide response message
setTimeout(function(){
responseMsg.fadeOut(200,function(){
$(this).removeClass(klass);
form.data('formsstatus','idle');
});
},3000)
});
});
}
});
}
//prevent form from submitting
return false;
});
})
最后是“联系人”表单的JS(与“注册”表单几乎相同):
代码就是这样。我想学习如何设置逻辑以提供适当的反馈,如代码上方的理想示例所示。我很乐意提供我可能需要研究的任何关键词/链接/示例。谢谢你,保罗。这对我很有用:
步骤1:在phpmyadmin中创建第三个MySQL表,名为'contact_only',用于只想发送消息的人(无需注册)
步骤2:在“联系人”表单php中,根据用户是否勾选复选框,使用“if&else if”给出适当的反馈
if ( isset($_POST['contact-checkbox']) ) {
$existingContact = mysql_query("SELECT * FROM `signups`, `contact` WHERE signup_email_address='$email' OR contact_email_address='$email'");
if(mysql_num_rows($existingContact) < 1){
$checkbox = $_POST['contact-checkbox'];
$message = $_POST['contact-textarea'];
$name = $_POST['contact-name'];
$date = date('Y-m-d');
$time = date('H:i:s');
$insertContact = mysql_query("INSERT INTO contact (contact_email_address, contact_date, contact_time, contact_name, contact_message, contact_checkbox) VALUES ('$email','$date','$time','$name','$message','$checkbox')");
if($insertContact){
$status = 'success';
$message = 'your message has been received and you have been signed up';
}
}
else {
$checkbox = $_POST['contact-checkbox'];
$message = $_POST['contact-textarea'];
$name = $_POST['contact-name'];
$date = date('Y-m-d');
$time = date('H:i:s');
$insertContact = mysql_query("INSERT INTO contact (contact_email_address, contact_date, contact_time, contact_name, contact_message, contact_checkbox) VALUES ('$email','$date','$time','$name','$message','$checkbox')");
$status = 'success';
$message = 'Message received. Note - this email address has already been subscribed!';
}
}
else if (isset($_POST['contact-checkbox']) == false){
$checkbox = 0;
$message = $_POST['contact-textarea'];
$name = $_POST['contact-name'];
$date = date('Y-m-d');
$time = date('H:i:s');
$insertContactOnly = mysql_query("INSERT INTO contact_only (contact_only_email_address, contact_only_date, contact_only_time, contact_only_name, contact_only_message, contact_only_checkbox) VALUES ('$email','$date','$time','$name','$message','$checkbox')");
if ($insertContactOnly) {
$status = 'success';
$message = 'your message has been received';
}
}
else {
$status = 'error';
$message = "Oops, there's been a technical error!";
}
if(设置($\u POST['contact-checkbox'])){
$existingContact=mysql\u query(“从`signups`、`contact`WHERE signup\u email\u address='$email'或contact\u email\u address='$email'中选择*);
if(mysql\u num\u行($existingContact)<1){
$checkbox=$_POST['contact-checkbox'];
$message=$_POST['contact-textarea'];
$name=$_POST['contact-name'];
$date=日期('Y-m-d');
$time=日期('H:i:s');
$insertContact=mysql\u查询(“插入到联系人(联系人电子邮件地址、联系人日期、联系人时间、联系人姓名、联系人消息、联系人复选框)值(“$email”、“$date”、“$time”、“$name”、“$message”、“$checkbox”);
如果($insertContact){
$status='success';
$message='您的邮件已收到且已注册';
}
}
否则{
$checkbox=$_POST['contact-checkbox'];
$message=$_POST['contact-textarea'];
$name=$_POST['contact-name'];
$date=日期('Y-m-d');
$time=日期('H:i:s');
$insertContact=mysql\u查询(“插入到联系人(联系人电子邮件地址、联系人日期、联系人时间、联系人姓名、联系人消息、联系人复选框)值(“$email”、“$date”、“$time”、“$name”、“$message”、“$checkbox”);
$status='success';
$message='已收到邮件。注意-此电子邮件地址已订阅!';
}
}
else if(isset($\u POST['contact-checkbox'])==false){
$checkbox=0;
$message=$_POST['contact-textarea'];
$name=$_POST['contact-name'];
$date=日期('Y-m-d');
$time=日期('H:i:s');
$INSERCTCONTACTONLY=mysql\u查询(“仅插入联系人(仅联系人电子邮件地址、仅联系人日期、仅联系人时间、仅联系人姓名、仅联系人信息、仅联系人复选框)”值(“$email”、“$date”、“$time”、“$name”、“$message”、“$checkbox”);
如果($insertContectoOnly){
$status='success';
$message='您的邮件已收到';
}
}
否则{
$status='error';
$message=“哎呀,出现了一个技术错误!”;
}
我对这种方式很满意,因为它通常会给出比负面反馈更多的正面反馈,而且总是合适的。以下是此解决方案的链接:
如果你知道如何使它更快或更有效,请让我知道!谢谢,保罗,这是一堵代码墙。你能把范围缩小到你遇到困难的领域吗?是的,在PHP联系人表单中,从以下行开始:
code
$existingContact=mysql\u query(“从signups
,contact
其中signup\u email地址=“$email”或contact\u email\u地址=“$email”)<代码>代码您到底有什么问题?什么是恰当的反馈?你得到的反馈有什么问题吗(如果你得到的话)?我的问题是反馈逻辑,特别是针对告知复选框是否被选中的变量,这样我们就可以向用户显示相应的消息。我现在想起来有几件事不对劲。目前,如果复选框未选中,则不应订阅用户,对吗?但是如果他们想订阅,哦,他们已经订阅了。有人知道在复选框被选中或未被选中时如何将变量作为目标吗?干杯:)好的,在这里大声想一想:在联系人表单中,我可以为不希望订阅的电子邮件(必填)创建一个单独的表字段。这样,在MySQL中,可以告诉注册表单不要搜索该组。另一个问题是,如果用户订阅了,那么他们就不能向我们发送消息,因为他们已经订阅了。好的,我将尝试创建一个名为non_subscribed_emails或其他内容的新数据库字段,看看是否有效。
/*Contact Form*/
//ajax call
if(isset($_GET['action'])&& $_GET['action'] == 'contact'){
mysql_connect('***','***','***');
mysql_select_db('***');
//sanitize data
$email = mysql_real_escape_string($_POST['contact-email']);
//validate email address - check if input was empty
if(empty($email)){
$status = 'error';
$message = 'You did not enter an email address!';
}
else if(!preg_match('/^[^\W][a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\.[a-zA-Z]{2,4}$/', $email)){ //validate email address - check if is a valid email address
$status = "error";
$message = "You have entered an invalid email address!";
}
else {
$existingContact = mysql_query("SELECT * FROM `signups`, `contact` WHERE signup_email_address='$email' OR contact_email_address='$email'");
if(mysql_num_rows($existingContact) < 1){
//mysql_free_result($existingContact);
//database insert code
if ( isset($_POST['contact-checkbox']) ) {
$checkbox = $_POST['contact-checkbox'];
}
else {
$checkbox = 0;
}
$message = $_POST['contact-textarea'];
$name = $_POST['contact-name'];
$date = date('Y-m-d');
$time = date('H:i:s');
$insertContact = mysql_query("INSERT INTO contact (contact_email_address, contact_date, contact_time, contact_name, contact_message, contact_checkbox) VALUES ('$email','$date','$time','$name','$message','$checkbox')");
if($insertContact){
$status = 'success';
$message = 'your message has been received';
}
else if ($insertContact && $checkbox = $_POST['contact-checkbox']){
$status = 'success';
$message = "your message has been received and you have been signed up";
}
else {
$status = 'error';
$message = "Oops, there's been a technical error!";
}
}
else {
$status = 'error';
$message = 'This email address has already been registered!';
}
}
//return the JSON response
$data = array(
'status' => $status,
'message' => $message
);
echo json_encode($data);
exit;
}
?>
$(document).ready(function(){
$('#newsletter-signup').submit(function(){
//check the form is not currently submitting
if($(this).data('formsstatus') !== 'submitting'){
//setup variables
var form = $(this),
formData = form.serialize(),
formUrl = form.attr('action'),
formMethod = form.attr('method'),
responseMsg = $('#signup-response');
//add status data to form
form.data('formsstatus','submitting');
//show response message - waiting
responseMsg.hide()
.addClass('response-waiting')
.text('Please Wait...')
.fadeIn(200);
//send data to server to be validated
$.ajax({
url: formUrl,
type: formMethod,
data: formData,
success:function(data){
//setup variables
var responseData = jQuery.parseJSON(data),
klass = '';
//response conditional
switch(responseData.status){
case 'error':
klass = 'response-error';
break;
case 'success':
klass = 'response-success';
break;
}
//show reponse message
responseMsg.fadeOut(200,function(){
$(this).removeClass('response-waiting')
.addClass(klass)
.text(responseData.message)
.fadeIn(200,function(){
//set timeout to hide response message
setTimeout(function(){
responseMsg.fadeOut(200,function(){
$(this).removeClass(klass);
form.data('formsstatus','idle');
});
},3000)
});
});
}
});
}
//prevent form from submitting
return false;
});
})
$(document).ready(function(){
$('#contact-form').submit(function(){
//check the form is not currently submitting
if($(this).data('formsstatus') !== 'submitting'){
//setup variables
var form = $(this),
formData = form.serialize(),
formUrl = form.attr('action'),
formMethod = form.attr('method'),
responseMsg = $('#contact-response');
//add status data to form
form.data('formsstatus','submitting');
//show response message - waiting
responseMsg.hide()
.addClass('response-waiting')
.text('Please Wait...')
.fadeIn(200);
//send data to server
$.ajax({
url: formUrl,
type: formMethod,
data: formData,
success:function(data){
//setup variables
var responseData = jQuery.parseJSON(data),
klass = '';
//response conditional
switch(responseData.status){
case 'error':
klass = 'response-error';
break;
case 'success':
klass = 'response-success';
break;
}
//show reponse message
responseMsg.fadeOut(200,function(){
$(this).removeClass('response-waiting')
.addClass(klass)
.text(responseData.message)
.fadeIn(200,function(){
//set timeout to hide response message
setTimeout(function(){
responseMsg.fadeOut(200,function(){
$(this).removeClass(klass);
form.data('formsstatus','idle');
});
},3000)
});
});
}
});
}
//prevent form from submitting
return false;
});
})
CREATE TABLE `contact_only` (
`contact_only_id` int(10) NOT NULL AUTO_INCREMENT,
`contact_only_email_address` varchar(250) DEFAULT NULL,
`contact_only_name` varchar(250) DEFAULT NULL,
`contact_only_message` varchar(3000) DEFAULT NULL,
`contact_only_checkbox` tinyint(1) NOT NULL default '0',
`contact_only_date` date DEFAULT NULL,
`contact_only_time` time DEFAULT NULL,
PRIMARY KEY (`contact_only_id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
if ( isset($_POST['contact-checkbox']) ) {
$existingContact = mysql_query("SELECT * FROM `signups`, `contact` WHERE signup_email_address='$email' OR contact_email_address='$email'");
if(mysql_num_rows($existingContact) < 1){
$checkbox = $_POST['contact-checkbox'];
$message = $_POST['contact-textarea'];
$name = $_POST['contact-name'];
$date = date('Y-m-d');
$time = date('H:i:s');
$insertContact = mysql_query("INSERT INTO contact (contact_email_address, contact_date, contact_time, contact_name, contact_message, contact_checkbox) VALUES ('$email','$date','$time','$name','$message','$checkbox')");
if($insertContact){
$status = 'success';
$message = 'your message has been received and you have been signed up';
}
}
else {
$checkbox = $_POST['contact-checkbox'];
$message = $_POST['contact-textarea'];
$name = $_POST['contact-name'];
$date = date('Y-m-d');
$time = date('H:i:s');
$insertContact = mysql_query("INSERT INTO contact (contact_email_address, contact_date, contact_time, contact_name, contact_message, contact_checkbox) VALUES ('$email','$date','$time','$name','$message','$checkbox')");
$status = 'success';
$message = 'Message received. Note - this email address has already been subscribed!';
}
}
else if (isset($_POST['contact-checkbox']) == false){
$checkbox = 0;
$message = $_POST['contact-textarea'];
$name = $_POST['contact-name'];
$date = date('Y-m-d');
$time = date('H:i:s');
$insertContactOnly = mysql_query("INSERT INTO contact_only (contact_only_email_address, contact_only_date, contact_only_time, contact_only_name, contact_only_message, contact_only_checkbox) VALUES ('$email','$date','$time','$name','$message','$checkbox')");
if ($insertContactOnly) {
$status = 'success';
$message = 'your message has been received';
}
}
else {
$status = 'error';
$message = "Oops, there's been a technical error!";
}