7

フォームを処理し、値を CSV ファイルに出力する PHP ルーチンがあります。ヘッダー行を作成するために使用array_keys()しています(ある場合はスキップされます)。もちろん、私のフォームには送信ボタンが含まれているため、最後のヘッダー用語が「送信」であることを除いて、すべてが完全に機能します。したがって、データは次のようになります。

name,email,cell,dob,study,submit
"Temp One",fred@gmail.com,646-325-1111,1995-03-31,8,Submit
"Temp Two",tom@gmail.com,646-325-2222,1995-03-31,4,Submit

ヘッダーとデータの両方から送信ボタンを省略するにはどうすればよいですか?

これが私のコードです:

if(isset($_POST['submit'])) {
    $data = array_values($_POST); // get only values
    $headers = array_keys($_POST); // keys are headers 
    if( $fp = fopen('data.csv','a+')) {
        $line = fgets($fp);
        if(!$line == $headers) {
                fputcsv($fp, $headers);
                fputcsv($fp, $data);
        }
        else
        {
            fputcsv($fp, $data);
        }
        fclose($fp);
        header('Location: thanks.php'); 
    }
}
4

3 に答える 3

12

配列から削除します...

$post = $_POST;
unset($post['submit']);
$data = array_values($post); // get only values
$headers = array_keys($post); // keys are headers 
于 2013-07-08T20:37:40.033 に答える
1

HTML の [送信] ボタンから名前をドロップします

そして代わりに

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

使用する

if($_SERVER["REQUEST_METHOD"] == "POST")
于 2013-07-08T20:38:14.160 に答える
0

array_pop()配列の最後の要素を削除します。

$data = array_pop(array_values($_POST)); // get only values
$headers = array_pop(array_keys($_POST)); // keys are headers
于 2013-07-08T20:39:38.923 に答える