LoginSignup
0
0

More than 3 years have passed since last update.

【PHP+SQLite3】ping-tのコマンド問題ライクなページ1 --ボタン表示切り替えに難問が!!--

Last updated at Posted at 2019-12-21

1.コマンド問題選択画面{改修前}

下記のようなカテゴリー毎に、問題が選べる画面を作る。

linux_command_test1_cate2.jpg

前回、下記の記事を作成した。

【PHP+SQLite3】linuxコマンド登録ツール

コマンドとコマンドの解説を格納するデータベースを作成したので、このデータベースを利用して
問題を出題するページの作成にトライする。

(1)全てのカテゴリーを表示して、いくつ出題するかを選んで、スタートボタンを押す。
(2)選んだカテゴリーと、出題数分問題が入力欄付きで表示される。
回答に対して、確定ボタン(正答率を表示する頁に遷移)と戻るボタン(最初の画面に戻る)
ただし、選んだカテゴリーに対して問題や回答が登録されていない時は、戻るボタンのみ表示。

linux_command_test1.php
<!DOCTYPE html>
<html lang="ja">
<meta charset="utf-8">
<form action="linux_command_test2.php" method="post">
<title>データ送信テスト</title>
<h1>データ送信テスト</h1>
カテゴリー:
    <select name="l_category">
        <option>1capacity_planning</option>
        <option>2Linux_Kernel</option>
         <option>3Boot_System</option>
        <option>4Device_FileSystem</option>
        <option>5Raid_Lvm</option>
        <option>6Network</option>
        <option>7Mentenance</option>
        <option>8DNS</option>
        <option>9WebServer</option>
        <option>10Samba_NFS</option>
        <option>11dhcp_ldap</option>
        <option>12mailService</option>
        <option>13SystemSecurity</option>
    </select>
    <br>
問題数:
    <select name="l_num">
        <option>5</option>
        <option>10</option>
        <option>15</option>
    </select>
    <br>  
<input type="submit" value="スタート" name="btn1">

<br>
</form>
</html>

2.苦しみは突然に!!

これは、数十年前のトレンディドラマのタイトルではない。

前述の「確定ボタンの表示/非表示」の切り替えが、今世紀最大の苦しみになってしまった。

  • submitボタンにパラメータによってdisabled属性をつけてみる。

——->この属性があるだけで、非表示。

  • submitボタンにパラメータによってvisibility属性(none|visible)をつけてみる。

——->切り替えが上手くいかない。

JavaScriptでは、じゃんじゃん解決法が出ているが、
phpからではform部品の表示・非表示の切り替えが出来ないらしい事がわかった。

3.どうすればいいのか。

どのカテゴリーに対して、問題やコマンドが存在するのか確認してみる。

「SELECT DISTINCT category0 from tbl_linux」

DBbrowserで上記sqlを投げると
2つのカテゴリーが表示された。
この2つのカテゴリーがselectboxに表示されるように
すればいいのだ。

linux_command_test1_cate.jpg

4.改修後

linux_command_test1.php
<!DOCTYPE html>
<html lang="ja">
<meta charset="utf-8">
<form action="linux_command_test2.php" method="post">
<title>linuxコマンド問題(カテゴリー選択)</title>
<h1>linuxコマンド問題(カテゴリー選択)</h1>
<?php 
    //問題登録しているカテゴリーの種類
    $query_cate0 = "SELECT DISTINCT category0 from tbl_linux";

    $db_name='linux_quiz3.db';
    $db1 = new PDO('sqlite:'.$db_name);

    $result_a=$db1->prepare($query_cate0);
    $result_a->execute();
 ?>
カテゴリー:
    <select name="l_category">
        //カテゴリーを配列に格納し、セレクトボックスに表示
        <?php while($select_data=$result_a->fetch(PDO::FETCH_ASSOC)){ ?>
        <option><?php echo $select_data['category0']; ?></option>
        <?php } ?>
    </select>
    <br><br>
問題数:
    <select name="l_num">
        <option>5</option>
        <option>10</option>
        <option>15</option>
    </select>
    <br><br>
<input type="submit" value="スタート" name="btn1">
<br>
</form>
<?php 
    //データベースを閉じる。
    $db1=null;
 ?>
</html>

なんとか完成。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0