0

我正在尝试使用该fputcsv函数将我的表单提交值处理到 .csv 文件。我没有收到任何错误,也没有将表单值保存到 data.csv 文件中。谁能看到我做错了什么的问题?

形式

<label for="location">How many Locations?</label> 
<input id="location" name="loc" /><br />

<select id="when" name="day">
    <option value="Sunday">Sunday</option>
    <option value="Monday">Monday</option>
    <option value="Tuesday">Tuesday</option>
    <option value="Wednesday">Wednesday</option>
    <option value="Thursday">Thursday</option>
    <option value="Friday">Friday</option>
    <option value="Saturday">Saturday</option>
</select>
<input type="checkbox" id="osecom" name="osecom" value="Yes" /> 
<label for="osecom">Online</label>

<input type="checkbox" id="item1yes" name="item1yes" value="Yes" /> Yes
<input type="checkbox" id="item1no" name="item1no" value="No" /> No<br />
<label for="chkitem1">mobile</label> 

<input type="checkbox" id="item2yes" name="item2yes" value="Yes" /> Yes
<input type="checkbox" id="item2no" name="item2no" value="No" /> No<br />
<label for="chkitem2">policy? </label> 

<input type="submit" title="Submit Form" value="" />

php代码

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

    $data = implode(',', $_POST);
    if( $fp = fopen('data.csv', 'a') ){
        fputcsv($fp, $data);
    }
    fclose($fp);        

}
4

1 回答 1

2

不要使用 implode(',', $_POST)!

$_POST 是数组, fputcsv() 期望第二个参数是数组而不是字符串!

更好地使用此代码:

if(isset($_POST['submit'])) {
    $data = array_values($_POST); // get only values
    if( $fp = fopen('data.csv', 'a') ){
        fputcsv($fp, $data);
    }
    fclose($fp);
}

请注意,通过仅保存值,如果 $_POST 中的参数切换位置,您将无法读取 csv,因此最好保存带有标题的第一行:

if(isset($_POST['submit'])) {
    $data = array_values($_POST); // get only values
    $headers = array_keys($_POST); // keys are headers 
    if( $fp = fopen('data.csv', 'a') ){
        fputcsv($fp, $headers);
        fputcsv($fp, $data);
    }
    fclose($fp);
}

编辑:我注意到在您的表单中,您使用的复选框更适合单选按钮,例如字段“移动?” 和“政策?”

于 2012-08-17T20:22:08.913 回答