SQLite | memo-memo Skip to content

memo-memo

web制作に便利そうな情報をメモるブログ

Archive

Tag: SQLite

ブラウザ上で、SQLiteに変更を加える時は、パーミッションに注意する。

とりあえず、707でいけました。

ブラウザで条件を指定して、その条件に合うデータだけを、SQLiteで取得して、表示する方法。

いくつかの以前書いた記事を組み合わせれば、完成です。

html


<select id=”color“>
<option value=”red”>赤</option>
<option value=”orange”>オレンジ</option>
</select>

<select id=”image“>
<option value=”beautiful”>きれい</option>
<option value=”pretty”>かわいい</option>
<option value=”cool”>かっこいい</option>
</select>


次に、javascript

js


var params ={
color” : $(“#color“).val(),
image” : $(“#image“).val()
};
$.getJSON(“hoge.php”, params ,function(json){
alert(json);
});


次にphp


<?php

$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));

?>


まずは、htmlのselectタグの中の、valueの値を、javascript(jQuery使用)で取得し、配列paramsに連想配列で格納します。で、そのパラメータをphpにGETで送ります。

次に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


$hoge=”dog”;
$num=160;
//SQLの作成(ヒアドキュメント)
$sql = <<< SQL
SELECT *
FROM bmi
WHERE name=’$hoge’ and height=$num
SQL;


上記の様に、変数を使って指定する事も出来ました。

ただ、青線の部分は、若干注意。変数を展開するのに、「’」で括るのは、珍しい気もする。

この「’」の意味は、もともと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を閉じる度に、最適化してくれるようにしてみた。

若干軽くなったのは、そのせいかな。

一応メモっておこう。