質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.46%
PHP

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

1378閲覧

php (またはjqueryでも可) / クイズのwebサイトで連続正解数を表示したい

cambodia

総合スコア12

PHP

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

2クリップ

投稿2020/08/24 12:06

<現状>
プログラミング初心者です。
わかりにくい説明かもしれませんが、どうぞよろしくお願いいたします。
phpで作成中ですが、jqueryの方がやり易いようであればjqueryでのやり方でもご教授頂けると幸いです。

ひらがなをカタカナで当てる4択クイズをphpとデータベースmysqlでプログラミング作成中です。
スマホ用です。
phpファイルは、2つです。(katakana_mondai.php と katakana_kotae.php)

■katakana_mondai.php

  • 問題と4択の選択肢を表示しています
  • 問題と選択肢は、データベースからselectしたものをランダムに表示するようにしています

■katakana_kotae.php

  • 答え合わせのページです
  • katakana_mondai.phpからPOST送信された結果と答えを照らし合わし、

  if文を使って正解、不正解を表示しています

  • 一番下に、「次の問題」ボタンを設置していて、クリックするとまたkatakana_mondai.phpに

  飛ぶようになっています。


<やりたいこと>
連続正解した時に、katakana_kotae.php(答え合わせのページ)で、「○問連続正解!」と表示させたいです。
例えば、
2問連続で正解した時は、「2問連続正解!」
3問連続で正解した時は、「3問連続正解!」というように、
連続正解したら、その数だけ表示したいです。
10問連続で正解した時は、「10問連続正解!」というように。

そして、もし1回でも間違えたら、連続正解はリセットされる仕組みにしたいです。

これを、上記2ファイルのみで行いたいです。

※可能であれば、katakana_mondai.phpのページでも、
「○問連続正解中」と表示できればなお良いです。


<試してみたこと>
katakana_kotae.phpファイルに、以下のコードを書きました。
自分なりに、こうかな、と思ったやり方は、
(1)正解したら、変数に1を加算していく
(2)変数はSESSION関数で、katakana_mondai.phpとkatakana_kotae.phpの
両ページで保持させる

katakana_kotae.php <?php $rs = ""; //$rsを定義する if($choice == $answer){ //正解の場合は、 if(!empty($rs)){ //もし$rsの中身が空でなければ $rs = $rs+1; //$rsに1を加算して$rsに格納 $rs = $rs."もん れんぞく せいかい!"; //$rsに文字列を付け足して$rsに格納 } }else{ $rs = ""; //不正解の場合は、$rsを空にする } $_SESSION['rs'] = $rs; //$rsをkatakana_mondai.phpに引き継ぐためにSESSIONで保持する ?> <!--連続正解の時のphpスクリプト 終--> <!--連続正解の表示 始--> <div class = "row"> <div class = "col-md-12"> <p><?php if ($choice == $answer){ //正解の場合は、 echo $rs; //$rsを表示する }else{  //不正解の場合は表示しない } ?></p> </div> </div> <!--連続正解の表示 終-->

そして、katakana_mondai.phpでは、以下の記述をしています。

katakana_mondai.ph <?php $rs = ($_SESSION['rs']); $_SESSION['rs'] = $rs; ?>

以上よろしくお願いいたします!

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

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

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

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

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

guest

回答2

0

ベストアンサー

katakana_kotae.phpでsession_startするとして、

PHP

1$rs = 0; 2if ($choice == $answer) { 3 if (isset($_SESSION['rs'])) { 4 $rs = $_SESSION['rs']; 5 } 6 $rs++; 7} 8if ($rs) { 9 $_SESSION['rs'] = $rs; 10} else { 11 unset($_SESSION['rs']); 12} 13if ($rs >= 2) { 14 echo $rs."もん れんぞく せいかい!"; 15}

katakana_mondai.phpではsessionの操作は不要です。

投稿2020/08/26 02:00

tabuu

総合スコア2456

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

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

cambodia

2020/08/26 21:20

期待していた通りの動作になりました! 本当にありがとうございました! <勉強になったこと> $rsの値に0を代入しておく if文を3つに分けて実行する 1.選択肢と答えが一致していた時のSESSION['rs']の動き(変数格納と加算) 2.$rsの動き(SESSION['rs']への格納とunset関数による変数の中身削除) 3.$rsの値が2以上だった時の動き 今回ご教授いただいたことで、if文の使い方とSESSIONの使い方についてまた理解が深まりました。本当に助かりました。 ちなみに、 お教えいただいたスクリプトにコメントをつけてみました。 このような理解で合ってますでしょうか? もしコメントの理解が違っていればご指摘頂けると幸いです。 特に、 if($rs) という書き方を知らなかったです。これは、 $rsに値があれば、 という意味になりますでしょうか? いろいろすみません。 <?php $rs = 0; //0を$rsに格納する if($choice == $answer){ //もし、選択肢と答えが一致していたら、 if(isset($_SESSION['rs'])){ //もし、$_SESSION['rs']の中に値がセットされていたら、 $rs = $_SESSION['rs']; //$_SESSION['rs']の値を$rsに格納する } $rs++; //$rsの値に1ずつ加算していく } if($rs){ //もし、$rsに値があれば、 $_SESSION['rs'] = $rs; //$rsの値を$_SESSION['rs']に格納する }else{ //それ以外は($rsに値がなければ)、 unset($_SESSION['rs']); //$_SESSION['rs']の値を削除する } if($rs >= 2){ //もし、$rsが2以上なら、 echo $rs."もん れんぞく せいかい!"; } ?>
guest

0

質問が何かわかりませんが、$_SESSIONが使用したいのであれば、session_start();が必要です。

投稿2020/08/24 21:35

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

cambodia

2020/08/24 21:59

ご回答ありがとうございます。 説明が足りずすみません。 この投稿で聞きたかったことは、 「どうやって連続正解数を表示できるのかが知りたい」 です。 session_start();は、両ファイルの一番上に記述しておりますが、これだけだと連続正解の表示ができないので、今のところお手上げ状態です。
退会済みユーザー

退会済みユーザー

2020/08/24 22:03

ページをまたいだデータの伝達はそれほど選択肢はありません。 一般論としては ・POST/GET ・session ・cookie を使用します。 何をやって、どのような結果を求め、どうなったのかが正しく書かれていない以上、ここから先は、回答者はお手上げ状態です。
cambodia

2020/08/25 12:39

コメントありがとうございます。 んー、難しいですね。 質問の仕方が難しいですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問