0

我创建了一个 PHP 页面(参见下面的代码),该页面应该在提交之前验证输入到 web 表单中的信息,以确保所有字段都已完成。如果任何字段留空,则应该显示错误消息;如果所有字段都已填写,则应该将数据发送到 .csv 文件。问题是它没有验证字段,也没有将数据发送到 .csv。我尝试删除 .csv 然后提交网络表单;它创建一个用逗号分隔条目的 .csv,但没有条目(即没有文本,只有逗号)。

有人知道为什么会这样吗?

任何援助将不胜感激。

提前致谢!

这是代码:

<form action="form_mailer.php" method="post">

<table>
<tr><td>Which is your name?</td>
<td><input type="text" name="formName" maxlength="50" value="<?=$varName;?>"></td></tr>     

<tr><td>What is your occupation?</td>              
<td><input type="text" name="formOccupation" maxlength="50" value="<?=$varOccupation;?>"></td></tr>  
</table>
<input type="submit" name="formSubmit" value="Submit">
</form> 

<?php
if($_POST['formSubmit'] == "Submit") 
{  
$errorMessage = "";   

if(empty($_POST['formName']))   
{    
$errorMessage .= "<li>You forgot to enter your name!</li>";  
}  
if(empty($_POST['formOccupation']))   
{    
$errorMessage .= "<li>You forgot to enter your occupation!</li>";  
}   

$varName = $_POST['formName'];  
$varOccupation = $_POST['formOccupation'];   

if(!empty($errorMessage))   
{    
echo("<p>There was an error with your form:</p>\n");    
echo("<ul>" . $errorMessage . "</ul>\n");  
}  

}    
?>

<?php
if($errorMessage != "") 
{  
echo("<p>There was an error:</p>\n");  
echo("<ul>" . $errorMessage . "</ul>\n");
} 
else
{  
$fs = fopen("data.csv","a");  
fwrite($fs,$varName . ", " . $varOccupation . "\n");  
fclose($fs);   
}
?>

更新:

你好,

非常感谢您的回复。

我已经意识到我现在哪里出错了............我的表单操作为“form_mailer.php”,它不是表单页面本身,而是另一个页面,它使用提供的数据执行进一步的操作网络表单。

我现在已经将“form_mailer”编码带入 webform .php 并更改了 webform 页面的“操作”,以便它有效地提交给自己,但现在我需要在成功提交 webform 后重定向到 form_mailer 页面或显示感谢信息........不要以为有人知道我该怎么做吗? 如果您可以提供有关如何同时执行这两种操作的说明,那将是很好的,因为我可以选择最适合我需要的一种。

再次感谢!

4

2 回答 2

0

可能您应该将这些变量设为全局变量:

<?php
global $varName, $varOccupation
...

...可能在两个<?php街区。

于 2013-01-30T10:42:28.030 回答
0

我已经检查了您的代码,它工作正常,并且还将数据存储在 csv 文件中。

于 2013-01-30T10:38:37.790 回答