🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1354閲覧

MySQLのランキングの仕方について

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1グッド

1クリップ

投稿2019/10/24 21:51

編集2019/10/25 08:17

前提・実現したいこと

MySQLでJavaScriptゲームの成績を管理し、HTMLページに上位5位を表示したいです。

タイピングゲームを作成しています。ゲーム成績としてクリアタイムをランキング化したいのです。サーバーへの書き込みが必要であることからPHPでなくてはならないということは以前学んだのですが、具体的なMySQLとの情報を授受する仕方がわかりませんでした。

どなたかわかる方、お願いします。

該当のソースコード

html

1<script> 2var r=[ 3['59:59.95','abc'], 4['59:59.96','xyz'], 5['59:59.97','ijk'], 6['59:59.98','aaa'], 7['59:59.99','zzz'], 8]; 9var qs=[ 10'baby' 11]; 12const viewRank=()=>{ 13document.querySelector('#rank span').innerHTML=r.map(x=>x.join(" ")).join("<br>"); 14}; 15window.addEventListener('DOMContentLoaded',()=>{ 16viewRank(); 17document.querySelector('#start').addEventListener('click',e=>{ 18const t1=e.target; 19const t2=document.querySelector('#a'); 20t1.disabled=true; 21t2.disabled=false; 22const name=prompt("お名前を入力してください。");//promptにユーザー名の登録 23if(name=="") name="UnKnown";//無記入の場合、Unknownとして登録 24(async()=>{ 25const s=new Date().getTime();//開始時刻取得 26for(var i=0;i<qs.length;i++){ 27const qStr=qs[i]; 28document.querySelector('#q span').textContent=qStr; 29t2.value=""; 30t2.focus(); 31await new Promise(resolve=>{ 32const timerId=setInterval(()=>{ 33if(t2.value==qStr){ 34clearInterval(timerId); 35resolve(); 36} 37},10); 38}); 39} 40const e=new Date().getTime(); 41const diff=e-s; 42const str=(10000+diff/1000).toString(); 43const time=str.substr(1,2)+":"+ 44str.substr(3,5); 45r.push([time,name]); 46r=await r.sort((x,y)=>x[0]>y[0]?1:-1).splice(0,5); 47viewRank(); 48t1.disabled=false; 49t2.disabled=true; 50})(); 51}); 52}); 53</script> 54<input type="button" value="ゲーム開始!" id="start"> 55<font size="5"><div id="q">Q:<span>ここに問題が表示されます。</span></div></font><div>A:<input type="text" id="a"></div> 56<br> 57<br> 58<br> 59<table border="1"> 60<tr> 61<td> 62<div id="rank">現在のランキングトップ5<br> 63<center><span></span></center> 64</div> 65</td> 66</tr> 67</table>

試したこと

MySQL・PHPに関しては初めてなので、いろいろ探してみました。

MySQLで上位ランキング5位を表示する

MySQL

1SELECT * FROM `SampleTable` ORDER BY `LastUpdate` LIMIT 10;

PHPでMySQLからデータを取得する

PHP

1<?php 2 3$link = mysql_connect('localhost', 'testuser', 'testuser'); 4if (!$link) { 5 die('接続失敗です。'.mysql_error()); 6} 7 8print('<p>接続に成功しました。</p>'); 9 10$db_selected = mysql_select_db('uriage', $link); 11if (!$db_selected){ 12 die('データベース選択失敗です。'.mysql_error()); 13} 14 15print('<p>uriageデータベースを選択しました。</p>'); 16 17mysql_set_charset('utf8'); 18 19$result = mysql_query('SELECT id,name FROM shouhin'); 20if (!$result) { 21 die('クエリーが失敗しました。'.mysql_error()); 22} 23 24while ($row = mysql_fetch_assoc($result)) { 25 print('<p>'); 26 print('id='.$row['id']); 27 print(',name='.$row['name']); 28 print('</p>'); 29} 30 31$close_flag = mysql_close($link); 32 33if ($close_flag){ 34 print('<p>切断に成功しました。</p>'); 35} 36 37?>

サーバー環境

サーバーはXREAを使っています。
※XREAサーバーはMySQLがシステム化されており、
ネット上にいろいろあるコマンドを入力して行うものではありませんでした。
仕様が違うのでMySQLの設定の仕方も異なると思います。
コチラに関しても教えていただきたいです。

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

PHP7環境であればmysql系関数は既に削除されているので利用不可能です。
そうでなくてもリンク先の通りPHP5.5時点で非推奨になっているので使わないようにすべきです。

PDOを利用してください
PHPでデータベースに接続するときのまとめ

あとは以前の質問の回答の後半に書いてあることを読んでください。

投稿2019/10/24 22:01

編集2019/10/25 00:41
m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

用意できるPHPとMySQLのバージョンを確認するところから
またPHPとMySQLを接続する仕組みは多数あります。
環境が整ってからやり方は再確認ください
m.ts10806さんのご助言の通りPDOが賢明だと思います

なおランキング処理は並べ替えて上から順に処理をする方法は
簡易的なもので、同順位が処理できません。
きちんとやるなら自分より上の人が何人いるかカウントして
その数に1足すのが自分の順位です

投稿2019/10/25 00:56

yambejp

総合スコア116694

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2019/10/25 08:54

ちょうどjsだけでやったロジックを説明した回答を下ばかりなので参照ください https://teratail.com/questions/218487 jsの集計でできることはSQLなら高速にできます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問