【PHP】phpでDB不要のアンケート機能を作成する
ファイルから取得したPHPの値をjavascriptに渡す
前回はこちら
phpの変数をjavascriptで受け取る。
その方法はこれ。
受け渡すデータが「$data」の場合。
var array = <?php echo json_encode($data, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT); ?>;
これをfile.phpに追加
■file.php
<?php // テキストファイルの名前 $fileName = "test.dat"; $errMessage = "エラーが発生しました。"; // フォームから送られてきた値 $answer = $_POST['hidden-btn']; //header("Content-Type: text/plain; charset=UTF-8"); // キャッシュ削除 clearstatcache(); // test.txtが存在するか確認 // 存在すればtrue $isExist = file_exists($fileName); if($isExist){ // 値を取得 // 取得できない場合はfalseが返るので、初期値設定 $array = unserialize(file_get_contents($fileName)); //var_dump($array); if(!$array){ $data = [0,0,0]; } else { // 取得できた値を使う $data = $array; } /****** ↓共通化できそう *****/ if($answer == "1"){ // 元々の値を上書き $ansResult = $data[0]; $ansResult++; $data[0] = $ansResult; } else if ($answer == "2") { // 元々の値を上書き $ansResult = $data[1]; $ansResult++; $data[1] = $ansResult; } else if ($answer == "3") { // 元々の値を上書き $ansResult = $data[2]; $ansResult++; $data[2] = $ansResult; } else { // 想定外の値 echo $errMessage; exit(); } //var_dump($data); // $dataでファイルの中身を置き換える。(排他制御) file_put_contents($fileName, serialize($data), LOCK_EX); /****** ↑共通化できそう *****/ } else { // 存在しない場合は新しく作成 $result = touch($fileName); if(!$result){ // 作成失敗 echo $errMessage; exit(); } // [0,0,0]の配列を作成 $data = [0,0,0]; /****** ↓共通化できそう *****/ // 結果を加算 if($answer == "1"){ // 元々の値を上書き $ansResult = $data[0]; $ansResult++; $data[0] = $ansResult; } else if ($answer == "2") { // 元々の値を上書き $ansResult = $data[1]; $ansResult++; $data[1] = $ansResult; } else if ($answer == "3") { // 元々の値を上書き $ansResult = $data[2]; $ansResult++; $data[2] = $ansResult; } else { // 想定外の値 echo $errMessage; exit(); } // ファイルに保存 file_put_contents($fileName, serialize($data), LOCK_EX); /****** ↑共通化できそう *****/ } // キャッシュ削除 clearstatcache(); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>アンケート</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> </head> <body> <h1>どれが好き?</h1> <p><?php echo $answer; ?></p> </body> <script> // phpからの値を受け取る var array = <?php echo json_encode($data, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT); ?>; // 受け取った値をコンソール出力 console.log(array); </script> </html>
次回は4、phpの値をjavascriptで受け取って、Chart.jsでグラフ描画【円グラフ】
全体目次
1、form外のボタンをクリックしてsubmitさせる方法
2、フォームデータをファイルに書き込む/出力する。
3、ファイルから取得したPHPの値をjavascriptに渡す
4、phpの値をjavascriptで受け取って、Chart.jsでグラフ描画【円グラフ】
5、アンケートに答えた内容をグラフにすぐ反映する
6、LocalStorageを使って一回しか投票できないようにする