将表单内容输出到 CSV 文件非常方便和容易,这篇文章将介绍所涉及的步骤。

查看演示

首先创建表单,对于这篇文章,它将收集姓名和电子邮件地址。

<form action='' method='post'>
<p><label>Name</label><br><input type='text' name='name' value=''></p>
<p><label>Email</label><br><input type='text' name='email' value=''></p>
<p><input type='submit' name='submit' value='Submit'></p>
</form>

接下来检查表单是否已提交。

if(isset($_POST['submit'])){

然后从表格中收集数据。

$name = $_POST['name'];
$email = $_POST['email'];

如果 $name 创建错误数组,请检查它是否为空。

if($name ==''){
    $error[] = 'Name is required';
}

检查有效的电子邮件地址,如果无效则创建错误数组。

if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
     $error[] = 'Please enter a valid email address';
}

如果没有产生错误,则继续

if(!isset($error)){

接下来定义 CSV 文件的列,用逗号分隔以 \n 结尾的行的标题

$Content = "Name, Email\n";

将表单数据添加到 $Content,这将是 CSV 文件的正文。

$Content .= "$name, $email\n";

接下来设置 CSV 文件名并使用标题输出 CSV 文件。

$FileName = "formdata-".date("d-m-y-h:i:s").".csv";
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename="' . $FileName . '"');
echo $Content;
exit();

如果他们是错误显示他们

if(isset($error)){
    foreach($error as $error){
        echo "<p style='color:#ff0000'>$error</p>";
    }
}

最终代码:

<?php
if(isset($_POST['submit'])){

    //collect form data
    $name = $_POST['name'];
    $email = $_POST['email'];

    //check name is set
    if($name ==''){
        $error[] = 'Name is required';
    }

    //check for a valid email address
    if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
         $error[] = 'Please enter a valid email address';
    }

    //if no errors carry on
    if(!isset($error)){

        # Title of the CSV
        $Content = "Name, Email\n";

        //set the data of the CSV
        $Content .= "$name, $email\n";

        # set the file name and create CSV file
        $FileName = "formdata-".date("d-m-y-h:i:s").".csv";
        header('Content-Type: application/csv');
        header('Content-Disposition: attachment; filename="' . $FileName . '"');
        echo $Content;
        exit();
    }
}

//if their are errors display them
if(isset($error)){
    foreach($error as $error){
        echo "<p style='color:#ff0000'>$error</p>";
    }
}
?>

<form action='' method='post'>
<p><label>Name</label><br><input type='text' name='name' value=''></p>
<p><label>Email</label><br><input type='text' name='email' value=''></p>
<p><input type='submit' name='submit' value='Submit'></p>
</form>

 

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。