0

このようにブロックされているファイルを更新しようとしています

0,0,5,2,0
0,0,7,0,0
0,2,2,3,0
1,2,2,2,0
0,0,5,2,0
0,1,3,2,1
0,0,3,2,2
0,0,6,1,0

各行は質問で、行の各数字は回答者の数です。ここで、コードは行ごとに移動し、ユーザーが質問ごとに 5 つのラジオ ボタンから選択した回答を確認しようとしています。したがって、形式は次のようになります。

Question 1: Blah              |  1  |  2  |  3  |  4  |  5  | Check one

//Grab user input from survey
$q[1] = $_POST['radio1'];
$q[2] = $_POST['radio2'];
$q[3] = $_POST['radio3'];
$q[4] = $_POST['radio4'];
$q[5] = $_POST['radio5'];
$q[6] = $_POST['radio6'];
$q[7] = $_POST['radio7'];
$q[8] = $_POST['radio8'];

//Use file handle and write to file
$FileName = "results.csv";
$FileHandle = fopen($FileName, 'a+') or die("can't open file!!");


$i = 0;

while($row = fgetcsv($FileHandle)){
    $j = 1;
    for($i = 0; $i<8; $i++){
        if($q[$j] == 1){
            $row[0]++;
        }
        else if($q[$j] == 2){
            $row[1]++;
        }
        else if($q[$j] == 3){
            $row[2]++;
        }
        else if($q[$j] == 4){
            $row[3]++;
        }
        else if($q[$j] == 5){
            $row[4]++;
        }
        $j++;
    }
}   
4

3 に答える 3

1

などのエスケープ シーケンス\nは、一重引用符内で補間されません。

二重引用符を使用する必要があります。

$result = $q1.','.$q2.','.$q3.','.$q4.','.$q5.','.$q6.','.$q7.','.$q8."\n";

また、fputcsv()関数を確認する必要があります。

于 2012-12-16T00:36:24.773 に答える
1

fwrite の代わりに、 fputcsv() を確認してください: http://php.net/manual/en/function.fputcsv.phpこれにより、文字列連結よりもはるかに柔軟になります。

例えば

$q[1] = $_POST['radio1'];
$q[2] = $_POST['radio2'];
$q[3] = $_POST['radio3'];
$q[4] = $_POST['radio4'];
$q[5] = $_POST['radio5'];
$q[6] = $_POST['radio6'];
$q[7] = $_POST['radio7'];
$q[8] = $_POST['radio8'];

fputcsv($FileHandlem $q);
于 2012-12-16T00:40:50.337 に答える
0

これが私の問題に対する私の解決策です。エレガントではないかもしれませんが、うまくいきます。スクリプトは値を取り込み、最後に更新する必要があります。

<?php

//Grab user input from survey
$q[1] = $_POST['radio1'];
$q[2] = $_POST['radio2'];
$q[3] = $_POST['radio3'];
$q[4] = $_POST['radio4'];
$q[5] = $_POST['radio5'];
$q[6] = $_POST['radio6'];
$q[7] = $_POST['radio7'];
$q[8] = $_POST['radio8'];

//Use file handle and write to file
$FileName = "results.csv";
$FileHandle = fopen($FileName, 'r') or die("can't open file!!");

$result = array();

$i = 0;
$j = 1;
while(($row = fgetcsv($FileHandle, 1024, ",")) !== FALSE){

    if($q[$j] == 1){
        $temp[0] = $row[0] + 1;
        $temp[1] = $row[1];
        $temp[2] = $row[2];
        $temp[3] = $row[3];
        $temp[4] = $row[4]; 
    }
    else if($q[$j] == 2){
        $temp[0] = $row[0];
        $temp[1] = $row[1] + 1;
        $temp[2] = $row[2];
        $temp[3] = $row[3];
        $temp[4] = $row[4];
    }
    else if($q[$j] == 3){
        $temp[0] = $row[0];
        $temp[1] = $row[1];
        $temp[2] = $row[2] + 1;
        $temp[3] = $row[3];
        $temp[4] = $row[4];
    }
    else if($q[$j] == 4){
        $temp[0] = $row[0];
        $temp[1] = $row[1];
        $temp[2] = $row[2];
        $temp[3] = $row[3] + 1;
        $temp[4] = $row[4];
    }
    else if($q[$j] == 5){
        $temp[0] = $row[0];
        $temp[1] = $row[1];
        $temp[2] = $row[2];
        $temp[3] = $row[3];
        $temp[4] = $row[4] + 1;
    }
    $result[] = $temp;
    $j++;
}
fclose($FileHandle);

$FileHandle = fopen($FileName, 'w') or die("can't open file!!");


foreach($result as $line){
    fputcsv($FileHandle, $line);
}

fclose($FileHandle);

?>
于 2012-12-16T02:09:33.927 に答える