ブラウザ上で、SQLiteに変更を加える時は、パーミッションに注意する。
とりあえず、707でいけました。
ブラウザ上で、SQLiteに変更を加える時は、パーミッションに注意する。
とりあえず、707でいけました。
ブラウザで条件を指定して、その条件に合うデータだけを、SQLiteで取得して、表示する方法。
いくつかの以前書いた記事を組み合わせれば、完成です。
html
<select id=”image“>
<option value=”beautiful”>きれい</option>
<option value=”pretty”>かわいい</option>
<option value=”cool”>かっこいい</option>
</select>
js
$params = array(
‘color‘ => $_GET['color'],
‘image‘ => $_GET['image']
);
$dbs = “hoge.db”; //接続先
$user = “”;
$pass = “”;
$dbh = new PDO($dbs,$user,$pass);//DBへの接続
$sql = <<< SQL
SELECT *
FROM site
WHERE color=’$params[color]‘ and image=’$params[image]‘
SQL;
$stmt = $dbh->query($sql);//SQLの実行
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);//データの取得(意味は考えず丸暗記する。)
//結果をJSON形式で出力
print(json_encode($result));
?>
次にphpは、送られてきたGETのデータで、パラメータを作ります。
この辺は、http://blog.jokerstyle.org/archives/10を参考。
次に、SQLiteに接続する時に、WHEREで、値を指定する。
この辺は、http://blog.jokerstyle.org/archives/145を参考。
取得したデータを、json_encodeしてprintすればOK。
この取得したデータは、元をたどれば、htmlのselectタグの中の、optionのvalueの値が条件となったデータになる。
うーん、文章にすると表現が難しい。後で読んだ時、解るかな?
やっと、解りやすく説明してあるサイトを発見。
http://www.feedsoft.net/access/sql/sql26.html
どうやら、WHEREで、複数の条件を指定したい時は、
WHERE name=”dog” and color=”black”
こんな漢字で、andで繋ぐらしい。
php
ただ、青線の部分は、若干注意。変数を展開するのに、「’」で括るのは、珍しい気もする。
この「’」の意味は、もともとnameに指定するべき文字列は、「’」で括る必要があるから、書いている。
つまり、「name=$hoge」だと、展開すると、「name=dog」になってしまう。「name=’dog’」にしたいから、name=’$hoge’と、「’」で括っている。
ちなみにこれは、ヒアドキュメント内の変数は展開されるルールによるもの。参考はこちら。
以前、疑問が残っていた記事:http://blog.jokerstyle.org/archives/143
<?php
//SQLの作成(ヒアドキュメント)
$sql = <<< SQL
SELECT *
FROM abc
WHERE name=’dog’
SQL;
//SQLの実行
$dbs = “sqlite:{ここに、dbのパスを書く}”; //接続先
$user = “”;//ユーザー
$pass = “”;//パスワード
$dbh = new PDO($dbs,$user,$pass);//DBへの接続
$stmt = $dbh->query($sql);//SQLの実行
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);//データの取得
//結果をJSON形式で出力
print(json_encode($result));
?>
大体が、以前書いた、http://blog.jokerstyle.org/archives/58と一緒だが、赤字の、WHERE name=’dog’を追加する。この場合、nameの項目が、dogの物だけヒットする。
WHERE {項目名}={指定したいもの}
多分こんな感じ。明日、もっときちんと調べよう。
ちなみに、{指定したいもの}に、漢字を入れたら動かなかった。動いたのは、半角英数字のみ。ひらがな、カタカナは、調べてません。(多分無理でしょう。)
その辺も、明日調べよう。
追記 2009/8/18
フォローアップ記事はこちら。http://blog.jokerstyle.org/archives/145
今日使っていたら、やたらとforefoxが重くなった。
使っていないアドオンを削除したり、一旦無効化したら、とりあえず直ったっぽい。
使わないものは、捨てるに限る。
ついでに、firefoxを軽くするアドオンをインストール。
SQLite Optimizerというアドオン。
どうやら、firefoxは、クライアントの情報をSQLiteで管理しているらしく、そのdbを最適化してくれるらしい。設定で、firefoxを閉じる度に、最適化してくれるようにしてみた。
若干軽くなったのは、そのせいかな。
一応メモっておこう。