DBの準備
1.ここでやったejwordデータベースを使う。未作成の人は作成しておくこと。
2.rootユーザーでアクセスし、joytasユーザーにejwordデータベースを扱えるように権限を与える。
1 | GRANT ALL PRIVILEGES ON `ejword`.* TO 'joytas'@'localhost'; |
プロジェクトの作成
3.ドキュメントルート内にejappフォルダを作成する。
4.ejappフォルダの中にユーティリティーを集めるfunctions.phpを以下のように作成する。
●functions.php
3 | return htmlspecialchars( $str , ENT_QUOTES, 'UTF-8' ); |
クラスの作成
5.テーブルの構造に合わせて以下のようにWord.phpを作成する。
6.DAOを作成しよう。以下のようにWordDAO.phpを作成する。
02 | require_once ( 'Word.php' ); |
05 | public function __construct(PDO $db ) { |
09 | public function findAll( $search ){ |
10 | $stt = $this ->db->prepare( 'SELECT * FROM words WHERE title LIKE ?' ); |
11 | $stt ->bindValue(1, $search ); |
13 | $words = $stt ->fetchAll(PDO::FETCH_CLASS, 'Word' ); |
7.index.phpを以下のように作成する。
02 | require_once ( 'functions.php' ); |
03 | require_once ( 'WordDAO.php' ); |
07 | $search = $_POST [ 'search' ]; |
08 | switch ( $_POST [ 'mode' ]){ |
10 | $searchWord = $search . '%' ; |
18 | $searchWord = '%' . $search ; |
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(); |
34 | <meta charset= "UTF-8" /> |
39 | <input type= "text" name= "search" value= "<?=h($search)?>" placeholder= "search" > |
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> |
45 | <button type= "submit" >検索</button> |
47 | <?php if (isset( $words ) && count ( $words )>0):?> |
49 | <?php foreach ( $words as $word ):?> |
50 | <tr><td><?= $word ->title?></td><td><?= $word ->body?></td></tr> |
実行
8.ブラウザから実行してみよう。以下のように表示されれば成功だ。

コメント