リスト項目等々を表示させたい場合地道にhtmlコードを書いて書くのが一般的ですがプログラムで簡略化、再利用コードを考察します。
使い慣れたエディターでコーディングすることも可能です。
使い慣れたエディターでコーディングすることも可能です。
1 2 3 4 |
私の場合は Mac Coda2 を愛用しています。 wordpress上のエディターは補完もしてくれないし(プラグインである?) emmetやスニペットも利用できない。(これもプラグインである?) リアルタイムでブラウザで変更を確認したい。等々 |
- function.phpで phpファイルをインクルードして 定義した関数を利用する。
- 記事から呼び出す為にショートコードを利用する。
- 今回はデータをSQLiteをりようしたデータを WordPress上の投稿記事から呼び出し一連に HTML文を表示させる。
- サンプルとして phpのマニュアル日本語サイトの関数リストを SQLite に登録してみました。
1234567891011// データ本体$sql = "CREATE TABLE sqlitecommand (" ."id integer primary key,"."pe_id integer,"."cmd text,"."explain text,"."url text);";// データ分類$sql_kind = "CREATE table ctype (" ."id integer primary key,"."class_name text);"; - phpの SQLite3 のクラスライブラリーを使います。
ここではデータを初期化するためのデータをソースに埋め込んでしまいました。
(本来ならCSVファイル等に保存し読み取るようにしておくべきでしょうか。
DBファイルの作成場所は この例ではワードプレスのルートディレクトリーになります。
サーバーアプリはApacheを使用しています。Apacheが書き込める権限にしておきましょう。
以下が拡張したクラスのソースです。123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263class MyDB extends SQLite3{var $cmds = array("SQLite3::busyTimeout"=> array(1,"接続がビジー状態のときのハンドラを設定する","http://php.net/manual/ja/sqlite3.busytimeout.php" ),"SQLite3::changes"=> array(1,"直近の SQL 文で変更 (あるいは挿入、削除) された行の数を返す","http://php.net/manual/ja/sqlite3.changes.php" ),. /* この部分は長くなるので省略 */..);var $ctypes = array(1 => "SQLite3 — SQLite3 クラス",2 => "SQLite3Stmt — SQLite3Stmt クラス ",3 => "SQLite3Result — SQLite3Result クラス ");// コンストラクターfunction __construct(){if( !file_exists('./mysqlitedb.db')){$this->open('./mysqlitedb.db');$sql = "CREATE TABLE sqlitecommand (" ."id integer primary key,"."type_id integer,"."cmd text,"."explain text,"."url text);";$this->exec( $sql );$sql_kind = "CREATE table ctype (" ."id integer primary key,"."class_name text);";$this->exec( $sql_kind );$this->init();echo "$sql";}else{$this->open('./mysqlitedb.db');}}function init(){while( list( $key,$cmd ) =each( $this->cmds ) ){$insert ="INSERT INTO sqlitecommand (cmd,type_id,explain,url) "."VALUES('{$key}','{$cmd[0]}','{$cmd[1]}','{$cmd[2]}');";$this->exec( $insert );}while( list( $key,$value ) = each( $this->ctypes ) ){$insert = "INSERT INTO ctype (id,class_name) VALUES ({$key},'{$value}');";$this->exec( $insert );}}}} - データベースの表示サンプルです。
123456789101112131415161718function sqlite_dump(){$db = new MyDB();$sql = "select ctype.class_name as cname,sqlitecommand.* from sqlitecommand outer left join ctype on sqlitecommand.type_id = ctype.id;";$result = $db->query($sql);$line = '';while($row = $result->fetchArray(SQLITE3_ASSOC)){if( !$line ){$ret .= "<h2>{$row["cname"]}</h2>\n<table><tbody>\n";}else if( $line != $row["cname"] ){$ret .= "</tbody></table>\n<h2>{$row["cname"]}</h2>\n<table><tbody>";}$line = $row["cname"];$ret .= "<tr><td>{$row["cmd"]}</td><td><a target=\"_blank\" href=\"{$row["url"]}\">{$row["explain"]}</a></td></tr>\n";}$ret .="</tbody></table>";} - functions.php を編集してphpファイルをインクルードします。
関数の呼び出し等々はショートコードを使います。1234567// ----------- SQLite ---------------------------------require_once ( dirname(__FILE__) . '/xxx/shortcode_sqllite.php' );// function sqlite_dump(){}function sqlite_reference(){return sqlite_dump();}add_shortcode('sqliterefer', 'sqlite_reference');
実際のサンプルです。
詳細部分は phpドキュメントサイト にリンクがしてあります。
SQLite3 — SQLite3 クラス
SQLite3::busyTimeout | 接続がビジー状態のときのハンドラを設定する |
SQLite3::changes | 直近の SQL 文で変更 (あるいは挿入、削除) された行の数を返す |
SQLite3::close | データベースとの接続を閉じる |
SQLite3::__construct | SQLite3 オブジェクトを作成し、SQLite 3 データベースをオープンする |
SQLite3::createAggregate | SQL の集約関数として使用する PHP 関数を登録する |
SQLite3::createCollation | Registers a PHP function for use as an SQL collating function |
SQLite3::createFunction | SQL のスカラー関数として使用する PHP 関数を登録する |
SQLite3::enableExceptions | Enable throwing exceptions |
SQLite3::escapeString | 適切にエスケープされた文字列を返す |
SQLite3::exec | 指定したデータベースに、結果を返さないクエリを実行する |
SQLite3::lastErrorCode | 直近で失敗した SQLite リクエストの結果コードを数値で返す |
SQLite3::lastErrorMsg | 直近で失敗した SQLite リクエストについての英文テキストの説明を返す |
SQLite3::lastInsertRowID | 直近の INSERT 文でデータベースに追加された行の ID を返す |
SQLite3::loadExtension | SQLite 拡張ライブラリを読み込む |
SQLite3::open | SQLite データベースをオープンする |
SQLite3::openBlob | Opens a stream resource to read a BLOB |
SQLite3::prepare | 実行する SQL 文を準備する |
SQLite3::query | SQL クエリを実行する |
SQLite3::querySingle | クエリを実行し、単一の結果を返す |
SQLite3::version | SQLite3 ライブラリのバージョンを、文字列定数と数値で返す |
SQLite3Stmt — SQLite3Stmt クラス
SQLite3Stmt::bindParam | パラメータを変数にバインドする |
SQLite3Stmt::bindValue | パラメータの値を変数にバインドする |
SQLite3Stmt::clear | 現在バインドされているすべてのパラメータをクリアする |
SQLite3Stmt::close | プリペアドステートメントを閉じる |
SQLite3Stmt::execute | プリペアドステートメントを実行し、結果セットオブジェクトを返す |
SQLite3Stmt::paramCount | プリペアドステートメント内のパラメータの数を返す |
SQLite3Stmt::readOnly | Returns whether a statement is definitely read only |
SQLite3Stmt::reset | プリペアドステートメントをリセットする |
SQLite3Result — SQLite3Result クラス
SQLite3Result::columnName | n 番目のカラムの名前を返す |
SQLite3Result::columnType | n 番目のカラムの型を返す |
SQLite3Result::fetchArray | 結果の行を、連想配列あるいは数値添字配列あるいはその両方で取得する |
SQLite3Result::finalize | 結果セットを閉じる |
SQLite3Result::numColumns | 結果セットのカラム数を返す |
SQLite3Result::reset | 結果セットを最初の行に戻す |