やりたいこと
Webアプリケーションとしてランキング形式のゲームをJavaScriptとPHPを用いて作成しているのですがゲームで得た得点をサーバー上でJavaScriptファイルやPHPファイルと同じ階層にテキストファイルでデータとして保存し、追加されたデータをランキング形式で表示させたいと考えております。
発生している問題
ゲームを実行した後にサーバー上の保存ファイルを確認しても何もデータが残っていない。また当然のことだとは思いますが、データをHTMLファイルに表示することができていない。
該当のソースコード
JavaScript
1//index.js 2var basicinfo = { 3 name: name, 4 scoreNum: scoreNum 5}; //ここのnameとscoreNumはゲーム上の値 6 7$.ajax({ 8 url:'./record_maker.php', //送信先 9 type:'POST', //送信方法 10 data:basicinfo 11}).fail(function(XMLHttpRequest, textStatus, errorThrown) { 12 alert("error"); 13}) 14 15getData(); 16 17function getData(){ 18 $.ajax({ 19 type: "POST" 20 , url: "./record_echo.php" 21 , data: { id: $("#scorebord").val() } 22 }).fail(function() { 23 // 取得エラー 24 alert('取得エラー'); 25 }); 26 return false; 27}
PHP
1//record_maker.php 2<?php 3 $name=$_POST['name']; 4 $scoreNum=$_POST['scoreNum']; 5 $text = $name.",".$scoreNum.";"; 6 $fp = fopen("./message.txt", 'a'); 7 fwrite($fp,$text); 8 fclose($fp); 9?>
PHP
1//record_echo.php 2<?php 3 $handle = fopen("./message.txt", "r"); 4 while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) { 5 $data[] = array( 'name'=>$row[0] ,'scoreNum'=>$row[1]); 6 } 7 fclose($handle); 8 9 foreach ($data as $key => $row) { 10 $name[$key] = $row['name']; 11 $scoreNum[$key] = $row['scoreNum']; 12 } 13 14 array_multisort($name, SORT_ASC, $scoreNum, SORT_DESC, $data); 15 16 for( $i=0 ; $i<20 ; $i++ ) { 17 $html .= "$name[$i] $scoreNum[$i] <br>\n"; 18 } 19 echo $html; 20?>
HTML
1<!--index.html--> 2<!doctype> 3<html> 4 5<head> 6 <meta charset="UTF-8"> 7 <script src="js/jquery.min.js"></script> 8</head> 9 10<body> 11 <p id="scorebord"></p> 12</body> 13 14</html>
試したこと
スコアを保存する
このページを主に参考にしてテキストファイルへのデータの保存をしようと思ったのですがうまく反映させることができませんでした。
PHPでランキングの作り方
主にこのサイトを用いてランキングの作成しました。
Ajaxを使いPHPからデータを取得
再びJavaScriptファイルにデータを戻す際にこちらを参考にデータを表示させようと考えております。
追記
ゲーム自体は動いているのでそこに関わる部分は省略して載せました。そのゲームはindex.js内に書かれております。よろしくお願いいたします。
あなたの回答
tips
プレビュー