表格到CSV和"谢谢"在使用POST的新选项卡中

时间:2014-08-03 17:33:59

标签: php forms csv post

我正在尝试接受一个表单并将其写入CSV(对于提交表单的人来说是不可见的,但我可以将其视为服务器上每个人的条目的汇编)。每当有人输入表单时,它将成为CSV上的新行。为了表明人们实际上正在提交,一个新的标签会弹出一些“谢谢”的消息和他们的提交,这样他们就能确保它们是他们的。是的,我确实有一个完美的JS表单验证,但由于这没有问题,我把它留下来以节省空间。

这是我目前的问题。在Firefox中,我只得到一个空白的新标签,而我的空白 - CSV上没有任何变化,标题为testForm.csv。在Chrome中,会打开一个新标签,其中包含我的php文档中的所有代码,而我的CSV仍为空白。

以下是我的HTML代码段:

<html>
 <body>
  <form name="Involved" method="post" action="postest.php" target="_blank" onsubmit="return validateForm();">
   Name: <br><input type="text" name="name" title="Your full name" style="color:#000" placeholder="Enter full name"/>
   <br><br>
   Email: <br><input type="text" name="email" title="Your email address" style="color:#000" placeholder="Enter email address"/>
   <br><br>
   How you can help: <br><textarea cols="18" rows="3" name="help" title="Service you want to provide" style="color:#000" placeholder="Please let us know of any ways you may be of assistance"></textarea>
   <br><br>
   <input type="submit" value="Submit" id=submitbox"/>
  </form>
 </body>
<html>

以下是postest.php

<?php
 $name = $_POST['name'];
 $email = $_POST['email'];
 $help = $_POST['help'];
 $csvData = $name . "," . $email . "," . $help . '\n';
 echo "Thank you for your submission! We'll get back to you as soon as we can!";
 echo "I'm " . $name . ", my email is " . $email . ", and I can help in that: \n" . $help;
 $filepointer = fopen('testForm.csv','a');
 if ($filepointer){
  fwrite($filepointer,$csvData);
  fclose($filepointer);
  exit();
 }
?>

我检查了this question有关回显以查看这是否是我的问题。之前我问过this question,除了显而易见的$_POSTEST问题之外,似乎没有人发现我的代码有任何问题。 This page看起来像我的目的,但事实并非如此。 This question有什么我想要的,但实际上没有POST代码,答案是我读过的最无用的东西之一(简而言之:“就这样做。它不是'这很复杂。“还有一些其他SO问题的链接,我遵循了这些问题。”他们带我herehere。我把exit();放在fclose()之后,好像它似乎适用于第一个(它什么也没做)。对于第二个,用户的代码与我一直在寻找的代码相差太远,我将代码更改为他/她正在做的事情。我一直在搜索,并进行广泛的谷歌搜索,但我会在这里删除我的研究清单,因为没有人想要阅读所有内容;这只是为了证明我尝试过。

让我知道你还需要什么;我是一个完整的PHP新手,它可能是我错过的非常基本的东西。另一方面,我现在没有看到我的代码和其他代码之间存在任何重大差异。

3 个答案:

答案 0 :(得分:0)

尝试这样的事情:

<?php
 $name = $_POST['name'];
 $email = $_POST['email'];
 $help = $_POST['help'];
 $filepointer = fopen('testForm.csv','a');
 fputcsv($filepointer, array($name,$email, $help));
 echo "Thank you for your submission! We'll get back to you as soon as we can!";
 echo "I'm " . $name . ", my email is " . $email . ", and I can help in that: \n" . $help;
?>

答案 1 :(得分:0)

这是错误: -

--->   $filepointer = fopen('testForm.csv','a');
$fp = fopen('testForm.csv','a');
if ($fp){
  fwrite($fp,$csvData);
  fclose($fp);
  exit();
}

真正的问题是在没有

的情况下发展
display_errors = On
log_errors = On

在php.ini文件中查找这些参数,并打开它们,除非您在实时服务器上进行开发,在这种情况下,您真的应该设置一个测试环境。

然后不看php错误日志

<强>更新

实际上只有一行可以改变,这是完整的代码。

<?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $help = $_POST['help'];
    $csvData = $name . "," . $email . "," . $help . '\n';
    echo 'Thank you for your submission! We\'ll get back to you as soon as we can!';
    echo '\"I\'m \"' . $name . ", my email is " . $email . ", and I can help in that: \n" . $help;
    $fp = fopen('testForm.csv','a');    // only line changed
    if ($fp){
       fwrite($fp,$csvData);
       fclose($fp);
       exit();
    }
?>

答案 2 :(得分:0)

你的错误非常基本,我为你感到羞耻。您的问题显然是您没有使用过服务器,也没有在您的计算机上安装PHP软件包。当您告诉计算机target="_blank"method="post"时,它知道您想要的是HTML。但是,没有任何解析PHP的东西,它不知道如何阅读你的代码,并在Firefox中作为空白页面和Chrome中的代码块出现。

你确实不知道你在做什么。