16270


DBは使わず配列でcsv出力をしたいと思っています。

現在アンケートフォームを作っていて、

[code]

    <form action="confirm_enq.php" method="get">
    <p>名前: <input type="text" name="name" /></p>
    <p>Email: <input type="text" name="email" /></p>
    
    <p>年齢: <input type="text" name="age"></p>
    <p>性別: 
        男<input type="radio" name="gender" value="男">
        女<input type="radio" name="gender" value="女">
    </p>
    
    <p>趣味:</p>
    <p>
            料理<input type="checkbox" name="hobby[]" value="料理">
            旅行<input type="checkbox" name="hobby[]" value="旅行">
            プログラミング<input type="checkbox" name="hobby[]" value="プログラミング">
            野球観戦<input type="checkbox" name="hobby[]" value="野球観戦">
            ダンス<input type="checkbox" name="hobby[]" value="ダンス">
            カメラ<input type="checkbox" name="hobby[]" value="カメラ">
            カフェ巡り<input type="checkbox" name="hobby[]" value="カフェ巡り">
            読書<input type="checkbox" name="hobby[]" value="読書">
            ゲーム<input type="checkbox" name="hobby[]" value="ゲーム">
            カラオケ<input type="checkbox" name="hobby[]" value="カラオケ">
    </p>
    <input type="submit" />
    </form>
    
[/code]

上記のファイルを

[code]

     <?php 
         $name=htmlspecialchars($_GET["name"],ENT_QUOTES);
         $email=htmlspecialchars($_GET['email'],ENT_QUOTES);
         $age=htmlspecialchars($_GET['age'],ENT_QUOTES);
         $gender=htmlspecialchars($_GET['gender'],ENT_QUOTES);
    ?>
    <body>
    
    <?php echo $_GET["name"]; ?>
    
    <br>
    <?php echo $_GET["email"]; ?>
    <br>
    <?php echo $_GET["age"]; ?>
    <br>
    <?php echo $_GET["gender"]; ?>
    <br>
    <?php foreach($_GET["hobby"] as $value){
       echo "{$value}, "; 
       } ?>
    
[/code]

このconfirm_enq.phpでgetしています。

やりたいことは、ここで得た回答をdata.csvで出力したいのですが、  
配列に入れて出力する書き方がわかりません。

よろしくお願いいたします。


CC BY-SA 3.0
2015-09-04T15:41:40.277
16265
2015-09-05T06:07:29.427
2015-09-05T06:07:29.427
2238
8415
question
php
formで得たデータを配列に入れてcsvで出力したい


ほとんど完成しているように見えます。  
ただ単に、ファイルに書き出したいだけであれば、  
confirm_enq.phpの一番したのphpの部分に、数行ファイル操作用のコマンドを書き加えればよいはずです。

具体的には、

[code]

    foreach($_GET["hobby"] as $value){
       echo "{$value}, "; 
    }
    
[/code]

の部分を、下記に変えてください。

[code]

    $myfile = fopen("data.csv", "a") or die("Unable to open file!");
    foreach($_GET["hobby"] as $value){
       $content = "{$value}, ";
       echo $content;
       fwrite($myfile, $content);
    }
    fwrite($myfile, "\n");
    fclose($myfile)
    
[/code]

説明としましては、  
fopenを使用して、ファイルにアクセスする変数(ファイルハンドル=$myfile)を作成します。  
その後、fwriteコマンドを使用し、どのファイルにsaveしたいのか(ファイルハンドル$myfile)を指定し、そのあとに、記入したい内容(ここでは($content)を書いておきます。  
最後にfcloseを使って、ファイルの書き出し終了を指示しています。

補足としては、上記のものでは、書き出すたびにdata.csvの一番下に新しい情報と付け加えていくという形にしています。（たぶんKojimaさんはそのようにしたいのではないかと思いまして。）

しかし、data.csvを毎回書き換えたい(overwrite)したい場合は、

[code]

    変更前:
    fopen("data.csv", "a") //"a"は、"append（書き足し）"
    
    変更後:
    fopen("data.csv", "w") //"w"は、"write(書き出し)"
    
[/code]

に変更すればいいですよ。

良いアンケートフォームができるといいですね。頑張ってください。


CC BY-SA 3.0
2015-09-04T18:51:25.837
16270
2015-09-04T19:01:52.173
2015-09-04T19:01:52.173
11048
11048
16265
answer