DBの準備
1.ここでやったejwordデータベースを使う。未作成の人は作成しておくこと。
ejword
1 ファイル 4.98 MB
2.rootユーザーでアクセスし、joytasユーザーにejwordデータベースを扱えるように権限を与える。
GRANT ALL PRIVILEGES ON `ejword`.* TO 'joytas'@'localhost';
プロジェクトの作成
3.ドキュメントルート内にejappフォルダを作成する。
4.ejappフォルダの中にユーティリティーを集めるfunctions.phpを以下のように作成する。
●functions.php
<?php function h($str){ return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); }
クラスの作成
5.テーブルの構造に合わせて以下のようにWord.phpを作成する。
<?php class Word{ public $id; public $title; public $body; }
6.DAOを作成しよう。以下のようにWordDAO.phpを作成する。
<?php require_once('Word.php'); class WordDAO{ private $db; public function __construct(PDO $db) { $this->db = $db; } public function findAll($search){ $stt=$this->db->prepare('SELECT * FROM words WHERE title LIKE ?'); $stt->bindValue(1,$search); $stt->execute(); $words=$stt->fetchAll(PDO::FETCH_CLASS, 'Word'); return $words; } }
7.index.phpを以下のように作成する。
<?php require_once('functions.php'); require_once('WordDAO.php'); $search=''; $mode=''; if(count($_POST)>0){ $search=$_POST['search']; switch($_POST['mode']){ case 'startWith': $searchWord=$search.'%'; $mode='startWith'; break; case 'full': $searchWord=$search; $mode='full'; break; case 'endWith': $searchWord='%'.$search; $mode='endWith'; break; } try{ $db=new PDO('mysql:host=127.0.0.1;dbname=ejword;charset=utf8','joytas','12345'); $dao=new WordDAO($db); $words=$dao->findAll($searchWord); }catch(PDOException $e){ echo $e->getMessage(); } } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> <title>EJword</title> </head> <body> <form method="post"> <input type="text" name="search" value="<?=h($search)?>" placeholder="search"> <select name="mode"> <option value="startWith" <?php if($mode==='startWith'){echo 'selected';}?>>で始まる</option> <option value="full" <?php if($mode==='full'){echo 'selected';}?>>と一致する</option> <option value="endWith" <?php if($mode==='endWith'){echo 'selected';}?>>で終わる</option> </select> <button type="submit">検索</button> </form> <?php if(isset($words) && count($words)>0):?> <table border="1"> <?php foreach($words as $word):?> <tr><td><?=$word->title?></td><td><?=$word->body?></td></tr> <?php endforeach;?> </table> <?php endif;?> </body> </html>
実行
8.ブラウザから実行してみよう。以下のように表示されれば成功だ。
コメント