サポート » 使い方全般 » データベースからデータをwordpressで表示などする方法

  • wordpressでクイズサイトを作りたいです。
    問題番号と問題文と解説を保存するデータベースのテーブルを作り、ユーザがフォームから入力した値と、データベースから取得した正しい答えが一致しているか調べて正誤表示させる、ということを実現したいです。
    データベースから正しい答えの値を取得するのでphpを使う必要があると思い、ショートコードを使ってやろうと考えています。
    その場合、functions.phpファイルに定義する関数は、
    ①フォームからラジオボタンで入力されたユーザが選択した値を関数に渡す。
    ②渡された値とデータベースから取得した正しい答えを比較する。
    ③比較した結果一致すれば正解、違うなら不正解の表示。
    簡単にこれくらいにしても、初心者だと問題山積みなのですが、まず①をwordpressでする場合、
    <form>タグのaction属性で指定するのはfuntions.phpになるのでしょうか?
    <form>タグのaction属性で指定したファイルでは$_GET変数を使うことで入力された値を取得することができるのでしょうか?
    ショートコードで引数を渡す方法として[shortcode_1 id=’○○’]のようにするようなのですが、フォームからの入力値を関数に渡したい場合上記のようにショートコードで引数を渡すのかと思っていたのですが、そうではなくて、ラジオボタンのname属性の値が$_GET変数に入るので、$_GET変数を使ってやることになるのでしょうか?またそうである、あるいは違う、いずれにしても具体的にどうすればよいのか教えてください。あと、phpの勉強をするのに、入門サイトなどの内容は理解できるが、php.netのリファレンスに書かれていることが理解できないレベルの人がリファレンスで勉強できるようになるためのわかりやすい書籍などありましたら教えてください。

    例えばwordpressの投稿欄に

    <form action='xxxx.php' method='get'>
     <input type='text' name='name' size='40'>
     <input type='submit' value='送信!!!!'>
     </form>

    と記述し、xxxx.phpに

    <html>
     <head>
     <text></text>
     </head>
     <body>
     <?php
     echo 'Hello ' . htmlspecialchars($_GET["name"]) . '!';
     ?>
     </body>
     </html>

    のように記述すればユーザから入力された値(文字列)を表示することは出来るのですが、この場合送信ボタンを押すとwordpressから出てしまい別のページで表示されます。これを参考にwordpressのページに、ユーザからの入力値を表示したり、比較してその結果により正誤を表示したりしたいのですが、うまくいきません。やり方がよくわかりません。どういう方法になるでしょうか?

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • ざっくりとした 回答になりますが ご了承ください

    こちらの質問に対して
    網羅する回答ではないです

    —————————————————————————————————-

    まず はじめに フォームから送信されたデータを 受け取る方法について ですが
    自分自身に データを 渡す方法はいかがでしょうか??

    <?php if( isset( $_POST['answer'] ) ) {
      echo( $_POST['answer'] );
    } else { ?>
      <form action="" method="post">
        <input type="text" name="answer" id="input_1" size="40">
        <input type="submit" name="submit" value="送信">
      </form>
    <?php } ?>

    —————————————————————————————————-

    次に 問題文 正解 解説 を 表示させる関数について ですが
    ショートコードにする 理由がわからないので なんとも言えませんが
    単純に 関数を作り 対応する という 方法を取られてはいかがでしょうか??


    <?php
    if( !function_exists( 'quiz' ) ) {
      function quiz( $id = null, $answer = null ) {
    
        $quiz = array();
    
        if( is_null( $id ) ) return false;
    
        if( is_null( $answer ) ) {
    
          // ID から 問題 解答 解説 を 取得して 配列で返す
          $quiz = array(
            'quiz'       => '問題',
            'answer'     => '解答',
            'commentary' => '解説',
          );
    
        } else {
    
          // ID から 問題 を 取得して 配列で返す
          $quiz = array(
            'quiz'       => '問題',
          );
    
        }
    
      }
    }
    ?>

    —————————————————————————————————-

    質問のIDを選択方法について
    add_query_arg を 使用して URLパラメータとして IDを 渡す方法はいかがでしょうか??

    —————————————————————————————————-

    上記のことが ひと通り理解できたら

    例えば

    /quiz/?id=5 に アクセスしたら
    質問IDが 5 の 質問 と 回答用のフォーム が表示されて
    回答を 投稿 すると 回答と 解答 を 比較して 正否 を 決め 解説を 表示する

    と いうことができるかと思います

    いかがでしょうか??

    公式ディレクトリにクイズ向けプラグインが幾つかあるので、まず一度試してみて、イメージに合うものがあればプラグインのコードを読んでみてはどうでしょう。
    https://wordpress.org/plugins/

    少し言葉足らずでした。検索キー quiz を入れてプラグインを探すと出てきます。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「データベースからデータをwordpressで表示などする方法」には新たに返信することはできません。