PHP9(英語辞書アプリの作成)

PHP

DBの準備

1.ここでやったejwordデータベースを使う。未作成の人は作成しておくこと。


2.rootユーザーでアクセスし、joytasユーザーにejwordデータベースを扱えるように権限を与える。

1GRANT ALL PRIVILEGES ON `ejword`.* TO 'joytas'@'localhost';

プロジェクトの作成

3.ドキュメントルート内にejappフォルダを作成する。
4.ejappフォルダの中にユーティリティーを集めるfunctions.phpを以下のように作成する。
●functions.php

1<?php
2function h($str){
3    return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
4}

クラスの作成

5.テーブルの構造に合わせて以下のようにWord.phpを作成する。

1<?php
2class Word{
3  public $id;
4  public $title;
5  public $body;
6}

6.DAOを作成しよう。以下のようにWordDAO.phpを作成する。

01<?php
02require_once('Word.php');
03class WordDAO{
04  private $db;
05   public function __construct(PDO $db) {
06      $this->db = $db;
07   }
08   
09   public function findAll($search){
10     $stt=$this->db->prepare('SELECT * FROM words WHERE title LIKE ?');
11     $stt->bindValue(1,$search);
12     $stt->execute();
13     $words=$stt->fetchAll(PDO::FETCH_CLASS, 'Word');
14     return $words;
15   }
16}

7.index.phpを以下のように作成する。

01<?php
02require_once('functions.php');
03require_once('WordDAO.php');
04$search='';
05$mode='';
06if(count($_POST)>0){
07  $search=$_POST['search'];
08  switch($_POST['mode']){
09    case 'startWith':
10    $searchWord=$search.'%';
11    $mode='startWith';
12    break;
13    case 'full':
14    $searchWord=$search;
15    $mode='full';
16    break;
17    case 'endWith':
18    $searchWord='%'.$search;
19    $mode='endWith';
20    break;
21  }
22  try{
23  $db=new PDO('mysql:host=127.0.0.1;dbname=ejword;charset=utf8','joytas','12345');
24  $dao=new WordDAO($db);
25  $words=$dao->findAll($searchWord);
26  }catch(PDOException $e){
27    echo $e->getMessage();
28  }
29}
30?>
31 <!DOCTYPE html>
32<html>
33<head>
34<meta charset="UTF-8"/>
35<title>EJword</title>
36</head>
37<body>
38<form method="post">
39<input type="text" name="search" value="<?=h($search)?>" placeholder="search">
40<select name="mode">
41<option value="startWith" <?php if($mode==='startWith'){echo 'selected';}?>>で始まる</option>
42<option value="full" <?php if($mode==='full'){echo 'selected';}?>>と一致する</option>
43<option value="endWith" <?php if($mode==='endWith'){echo 'selected';}?>>で終わる</option>
44</select>
45<button type="submit">検索</button>
46</form>
47<?php if(isset($words) && count($words)>0):?>
48<table border="1">
49<?php foreach($words as $word):?>
50<tr><td><?=$word->title?></td><td><?=$word->body?></td></tr>
51<?php endforeach;?>
52</table>
53<?php endif;?>
54</body>
55</html>

実行

8.ブラウザから実行してみよう。以下のように表示されれば成功だ。

コメント

タイトルとURLをコピーしました