PHP プロジェクト: 意見投票アプリケーションの作成

このPHPプロジェクトでは, 世論調査アプリケーションを作成します。

世論調査は 3 つの主要な要素で構成されます。

フロントコントローラー – これは、ロードされる HTML コードを決定するインデックス ページです。 これにより、アプリケーションのエントリ ポイントが XNUMX つになることが保証されます。 これにより、アプリケーションをより詳細に制御できるようになります。

ビジネスの論理 – これには、データベースと対話するための PHP コードが含まれます。 これにより、ビジネス ロジックをプレゼンテーションから分離できるため、アプリケーションの保守が容易になります。

ビュー – これには HTML コードが含まれます。 XNUMX つのページがあります。

  • Opinion.html.php – これには、質問とオプションを含む HTML コードが含まれます
  • results.html.php – これには世論調査の結果を表示する HTML コードが含まれます

行われた仮定

世論調査では次のような質問が行われます –

あなたのお気に入りは Javaスクリプト 図書館?

答えは次のようになります。

  • jQueryの
  • Mooツール
  • YUIライブラリ
  • グロー

アプリケーションを作成する手順は次のとおりです。

ステップ 1) データベース接続

このセクションは、次の知識があることを前提としています。 MySQL これらに精通していない場合は、その管理方法についても説明します。 MySQL、私たちをチェックしてください SQL チュートリアル のセクションから無料でダウンロードできます。

私たちのアプリケーションには、3 つのフィールドを持つテーブルが XNUMX つだけあります。

  • id – 主キーとして数値を自動生成します
  • 選択 – 大統領候補を表す番号
  • ts – 投票のタイムスタンプ

以下のスクリプトは js_libraries テーブルを作成します。

<?php
CREATE TABLE `js_libraries` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `choice` tinyint(4) NOT NULL DEFAULT '0',

  `ts` timestamp NULL DEFAULT NULL,

  PRIMARY KEY (`id`)

);
?>

ステップ 2) アプリケーションをコーディングする

次に、データベース接続を処理するビジネス ロジック レイヤーを作成しましょう。 「opinion_poll_model.php」

<?php

class Opinion_poll_model {

 private $db_handle; private $host = 'localhost'; private $db = 'opinion_poll';private $uid = 'root'; private $pwd = 'melody';

    public function __construct() {

        $this->db_handle = mysqli_connect($this->host, $this->uid, $this->pwd); //connect to MySQL server

        if (!$this->db_handle) die("Unable to connect to MySQL: " . mysqli_error());

        if (!mysqli_select_db($this->db_handle,$this->db)) die("Unable to select database: " . mysqli_error());

    }

    private function execute_query($sql_stmt) {

        $result = mysqli_query($db_handle,$sql_stmt); //execute SQL statement

        return !$result ? FALSE : TRUE;

    }

    public function select($sql_stmt) {

        $result = mysqli_query($db_handle,$sql_stmt);

        if (!$result) die("Database access failed: " . mysqli_error());

        $rows = mysqli_num_rows($result);

        $data = array();

        if ($rows) {

            while ($row = mysqli_fetch_array($result)) {

                $data = $row;

            }

        }

        return $data;

    }
    public function insert($sql_stmt) {

        return $this->execute_query($sql_stmt);

    }

    public function __destruct(){

        mysqli_close($this->db_handle);

    }

}

?>

ここに、

  • 「public function __construct()」は、データベース接続を確立するために使用されるクラス コンストラクター メソッドです。
  • 「public functionexecute_query(…)」は挿入、更新、削除などのクエリを実行するメソッドです。
  • 「public function select」は、 データベース そして数値配列を返します。
  • 「public function insert(…)」は、execute_queryメソッドを呼び出すinsertメソッドです。
  • 「public function __destruct()」は、データベース接続を閉じるクラス デストラクターです。

フロントコントローラーを作成しましょう index.phpを

<?php

require 'opinion_poll_model.php';

$model = new Opinion_poll_model();

if (count($_POST) == 1) {

    echo "<script>alert('You did not vote!');</script>";

}

if (count($_POST) > 1) {

    $ts = date("Y-m-d H:i:s");

    $option = $_POST['vote'][0];

    $sql_stmt = "INSERT INTO js_libraries (`choice`,`ts`) VALUES ($option,'$ts')";

    $model->insert($sql_stmt);

    $sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries;";

    $choices_count = $model->select($sql_stmt);

    $libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow");

    $table_rows = '';

    for ($i = 1; $i < 5; $i++) {

        $sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries WHERE choice = $i;";

        $result = $model->select($sql_stmt);

        $table_rows .= "<tr><td>" . $ libraries [$i] . " Got:</td><td><b>" . $result[0] . "</b> votes</td></tr>";

    }

    require 'results.html.php';

    exit;

}

require 'opinion.html.php';

?>

ここに、

  • 「'opinion_poll_model.php' が必要です;」 ビジネスロジッククラスをロードします
  • 「$model = 新しい Opinion_poll_model();」 ビジネス ロジック クラスのインスタンスを作成します
  • 「if (count($_POST) == 1)…」はデータの検証を実行し、 Java候補者に投票されていない場合にメッセージ ボックスを表示するスクリプト。
  • 「if (count($_POST) > 1)…」は、$_POST 配列内の項目の数を数えることによって、投票が選択されたかどうかを確認します。 項目が選択されていない場合、$_POST には送信項目のみが含まれます。 候補者が選択されている場合、$_POST 配列には送信項目と投票項目の XNUMX つの要素が含まれます。 このコードは、新しい投票レコードを挿入し、結果ページを表示するためにも使用されます。
  • 「exit;」は、結果が表示された後にスクリプトの実行を終了し、世論調査フォームが表示されないようにするために使用されます。
  • 「'opinion.html.php' が必要です;」 何も選択されていない場合は、意見調査フォームが表示されます。

次にビューを作成しましょう。 意見.html.php

<html>
    <head>
        <title>JavaScript Libraries - Opinion Poll</title>
    </head>
    <body>

        <h2>JavaScript Libraries - Opinion Poll</h2>

        <p><b>What is your favorite JavaScript?</b></p>

        <form method="POST" action="index.php">

            <p> <input type="radio" name="vote" value="1" />JQuery

                <br /><input type="radio" name="vote" value="2" />MooToolsl

                <br /><input type="radio" name="vote" value="3" />YUI Library

                <br /><input type="radio" name="vote" value="4" />Glow

            </p>

            <p><input type="submit" name="submitbutton" value="OK" /></p>

        </form>

    </body>

</html>

結果.html.php

<html>

    <head>

        <title>JavaScript Libraries Poll Results</title>

    </head>

    <body>

        <h2>Opinion Poll Results</h2>

        <p><b>What is your favorite JavaScript Library?</b></p>

        <p><b><?php echo $choices_count[0]; ?></b> people have thus far taken part in this poll:</p>

        <p>
<table>

            <?php echo($table_rows); ?>
        </table>
</body>
</html>

ステップ 3) アプリケーションをテストする

ファイルを Opinionpoll フォルダーに保存していると仮定して、URL http://localhost/opinionpoll/ を参照します。

世論調査アプリケーションのテスト

JS ライブラリを選択せず​​に [OK] ボタンをクリックすると、次のメッセージ ボックスが表示されます。

世論調査アプリケーションのテスト

JSライブラリを選択し、「OK」ボタンをクリックします。 以下に示すような結果ページが表示されます。

世論調査アプリケーションのテスト

まとめ

  • アプリケーションをビジネス ロジック、フロント コントローラー ビュー レイヤーに分割することは、アプリケーション設計の優れた実践です
  • Javaスクリプトはクライアント側の検証を実行するのに役立ちます
  • HTML と HTML の両方を含むファイルには file.html.php を使用することをお勧めします。 PHP コード
  • 世論調査アプリケーションは、前のレッスンで学んだ知識をどのように組み合わせて、データベース バックエンドを備えた実用的なアプリケーションを開発できるかを示します。