Php 一网打尽
我正在学习PHP,现在正在创建一个多合一web表单,将新的订户记录添加到新闻稿数据库的订户表中。这是我第一次访问这个网站,所以请原谅我的错误 注释解释了决定是否处理表单的代码部分。我不确定它是否需要进入验证提交表单数据的if..else语句内部,或者它是否在自己的if..else中进行验证 当我将它放入验证中时,html表单会显示出来,但当我点击submit时,所有信息都会刷新,什么也不会发生 当我把它放在验证之后,html表单没有显示,我得到一个错误,说未定义变量:FormErrorCount。然后它告诉我应该获得的id号,但我没有输入姓名或电子邮件(由于html表单未显示),这是空白的 有一个包含文件,但这很好 我相信一旦我弄明白了,我会有想扇自己一巴掌的感觉,但我盯着屏幕看的时间太长了。多谢各位Php 一网打尽,php,html,mysql,database,forms,Php,Html,Mysql,Database,Forms,我正在学习PHP,现在正在创建一个多合一web表单,将新的订户记录添加到新闻稿数据库的订户表中。这是我第一次访问这个网站,所以请原谅我的错误 注释解释了决定是否处理表单的代码部分。我不确定它是否需要进入验证提交表单数据的if..else语句内部,或者它是否在自己的if..else中进行验证 当我将它放入验证中时,html表单会显示出来,但当我点击submit时,所有信息都会刷新,什么也不会发生 当我把它放在验证之后,html表单没有显示,我得到一个错误,说未定义变量:FormErrorCount
<?php
$ShowForm = FALSE;
$SubscriberName = "";
$SubscriberEmail = "";
if (isset($_POST['submit'])) {
$FormErrorCount = 0;
if (isset($_POST['SubName'])) {
$SubscriberName = stripslashes($_POST['SubName']);
$SubscriberName = trim($SubscriberName);
if (strlen($SubscriberName) == 0) {
echo "<p>You must include your name</p>\n";
++$FormErrorCount;
}
}else{
echo "<p>Form submittal error (No 'SubName' field)!</p>\n";
++$FormErrorCount;
}
if (isset($_POST['SubEmail'])) {
$SubscriberEmail = stripslashes($_POST['SubEmail']);
$SubscriberEmail = trim($SubscriberEmail);
if (strlen($SubscriberEmail == 0)) {
echo "<p>You must include your email address!</p>\n";
++$FormErrorCount;
}
}else{
echo "<p>Form submittal error (No 'SubEmail' field)!</p>\n";
++$FormErrorCount;
}
//CODE BELOW IS THE SAME AS THE COMMENTED OUT CODE TOWARDS THE END. NOT SURE WHERE IT GOES.
if ($FormErrorCount == 0) {
$ShowForm = FALSE;
include("inc_db_newsletter.php");
if ($DBConnect !== FALSE) {
$TableName = "subscribers";
$SubscriberDate = date("Y-m-d");
$SQLstring = "INSERT INTO $TableName " .
" (name, email, subscribe_date) " .
" VALUES('$SubscriberName', '$SubscriberEmail', '$SubscriberDate')";
$QueryResult = @mysql_query($SQLstring, $DBConnect);
if ($QueryResult === FALSE) {
echo "<p>Unable to insert the values into the subscriber table.</p>" .
"<p>Error code " . mysql_errno($DBConnect) . ": " .
mysql_error($DBConnect) . "</p>";
}else{
$SubscriberID = mysql_insert_id($DBConnect);
echo "<p>" . htmlentities($SubscriberName) . ", you are now subscribed to our
newsletter.<br />";
echo "Your subscriber ID is $SubscriberID.<br />";
echo "Your email address is " . htmlentities($SubscriberEmail) . ".</p>";
}
mysql_close($DBConnect);
}
}else{
$ShowForm = TRUE;
}
//CODE ABOVE IS THE SAME AS THE COMMENTED OUT CODE TOWARDS THE END. NOT SURE WHERE IT GOES.
}else{
$ShowForm = TRUE;
}
/* CODE BELOW IS SAME AS THE CODE BETWEEN THE COMMENTS ABOVE, BUT NOT SURE WHERE IT BELONGS
if ($FormErrorCount == 0) {
$ShowForm = FALSE;
include("inc_db_newsletter.php");
if ($DBConnect !== FALSE) {
$TableName = "subscribers";
$SubscriberDate = date("Y-m-d");
$SQLstring = "INSERT INTO $TableName (name, email, subscribe_date) " .
"VALUES ('$SubscriberName', '$SubscriberEmail', '$SubscriberDate')";
$QueryResult = @mysql_query($SQLstring, $DBConnect);
if ($QueryResult === FALSE) {
echo "<p>Unable to insert the values into the subscriber table.</p>" .
"<p>Error code " . mysql_errno($DBConnect) . ": " .
mysql_error($DBConnect) . "</p>";
}else{
$SubscriberID = mysql_insert_id($DBConnect);
echo "<p>" . htmlentities($SubscriberName) . ", you are now subscribed to our
newsletter.<br />";
echo "Your subscriber ID is $SubscriberID.<br />";
echo "Your email address is " . htmlentities($SubscriberEmail) . ".</p>";
}
mysql_close($DBConnect);
}
}else{
$ShowForm = TRUE;
}
*/CODE ABOVE IS SAME AS THE CODE BETWEEN THE COMMENTS ABOVE SECTION, BUT NOT SURE WHERE IT BELONGS
//HTML PORTION
if ($ShowForm) {
?>
<form action = "NewsletterSubscribe.php" method = "POST">
<p><strong>Your Name: </strong>
<input type = "text" name = "SubName" value = "<?php echo $SubscriberName; ?>" /></p>
<p><strong>Your Email Address: </strong>
<input type = "text" name = "SubEmail" value = "<?php echo $SubscriberEmail; ?>" /></p>
<p><input type = "Submit" name = "Submit" value = "Submit" /></p>
</form>
<?php
}
?>
您的代码(暂时忽略最后的ShowForm部分)的结构如下:
if this is a submit {
validate the form data
if there are no errors {
save the form data
}
}
这看起来很合理。也许你的表格不是作为帖子提交的?检查您的
,并使用Firebug确保表单数据正在提交
如果要移动错误检查,则必须:
if this is a submit {
validate the form data
}
if there are no errors {
save the form data
}
这是错误的,因为如果表单没有被提交,那么您就不会有错误(因此出现“undefined variable”错误),然后它会尝试保存不存在的表单数据。运行var_dump($SQLstring)以查看1。如果你已经到了那一步,那么2。您的查询内容究竟是什么。这是调试的良好起点。