の形で呼ぶ。
//
// anchor_idはフレームを使う場合最低限各フレームごとに設定。お互い他のフレームを書換えたときにへんな干渉をさけるため。
// その他ページの種別毎などで変えてもよいが、あまり小分けにするとcookieが増える。
// 同じanchor_idで保存されるcookieは1セットのみ。でも単独ページ表示のサイトなら概ねこれで充分。
anchor_id = "anc_main";
noanchor = false; // bodyにanchorをしかけたときなど場合によって一時無効にするためのフラグ。
// アンカーの記憶。
function anchor_save(object_id, page_id) {
if(noanchor) { anchor_erase(); return; }
get_scroll();
setcookie(anchor_id+"_pid", page_id, 0);
setcookie(anchor_id+"_st", scroll_top, 0);
setcookie(anchor_id+"_sl", scroll_left, 0);
if(object_id) {
object_top = scroll_top + get_object_top(object_id);
object_left = scroll_left + get_object_left(object_id);
setcookie(anchor_id+"_oid", object_id, 0);
setcookie(anchor_id+"_ot", object_top, 0);
setcookie(anchor_id+"_ol", object_left, 0);
} else {
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
}
// アンカーの適用。
function anchor_apply(page_id) {
if((saved_page_id = getcookie(anchor_id+"_pid")) && page_id != saved_page_id) { return; }
get_scroll();
if((anchor_st = getcookie(anchor_id+"_st")) != "" && (anchor_sl = getcookie(anchor_id+"_sl")) != "") {
anchor_st = parseInt(anchor_st);
anchor_sl = parseInt(anchor_sl);
} else {
anchor_st = scroll_top;
anchor_sl = scroll_left;
}
if((object_id = getcookie(anchor_id+"_oid"))
&& (anchor_ot = getcookie(anchor_id+"_ot")) != ""
&& (anchor_ol = getcookie(anchor_id+"_ol")) != "") {
offset_top = (scroll_top + get_object_top(object_id)) - parseInt(anchor_ot);
offset_left = (scroll_left + get_object_left(object_id)) - parseInt(anchor_ol);
} else {
offset_top = offset_left = 0;
}
window.scrollTo(anchor_sl + offset_left, anchor_st + offset_top);
}
// アンカー消去。あえてとっておく必要がなければanchor_apply()後すぐ消去が望ましい。
function anchor_erase() {
setcookie(anchor_id+"_pid", "", -1);
setcookie(anchor_id+"_st", "", -1);
setcookie(anchor_id+"_sl", "", -1);
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
//-->
倉金家ホームページ
趣味の部屋/サーバー構築メモ その2
CentOS5のphpではなぜかSQLiteが使えませんでした。 できるだけ簡単な方法で使えるようにと検討し、成功! |
|
|
centOS5.5のphpではなぜか従来のSQLite関連の関数 sqlite_....() が使えません。 PDOを使えということのようですが、そうすると従来のプログラムをすべて書換えなければなりません。 phpをビルドしなおせばいいのでしょうがバージョンアップの度にやり直すのもめんどうだし、なるべく簡単に従来のSQLite関数のみをインストールすることにしました。
|
まずphpのソースをゲット。 # wget http://ftp.riken.jp/Linux/centos/5.5/os/SRPMS/php-5.1.6-27.el5.src.rpm 続いて # rpm -ivh php-5.1.6-27.el5.src.rpm ユーザ名不一致の警告が出るが気にしない。
次に、rpm/SOURCES に入ると、php-5.1.6.tar.gz があるので展開してしまいます。 # cd rpm/SOURCES # tar zxvf php-5.1.6.tar.gz
php-5.1.6 なるフォルダができます。さらに中へと... #cd php-5.1.6/ext/sqlite
コンパイル # phpize # ./configure --enable-sqlite-utf8 # make
|
|
どうやらうまいことコンパイルできたようです。
インストール # make install
|
|
インストール成功。
仕上げに /etc/php.d に sqlite.ini をつくり、 ; Enable sqlite extension module extension=sqlite.so と書き込みます。
|
httpd を再起動。 # service httpd restart
さっそく適当なサイトのデータベースをSQLiteに切り替えて表示してみます。 結果、見事に文字化けしています。 現行サーバーのEUC-JPのSQLiteデータをそのままコピーしてあるためのようです。 (MySQLはUTF-8で保存するがSQLiteはEUC-JPでそのまま保存するみたい。)。 いったんMySQLに戻し、ホームページプログラム"IRORIBATA"のバックアップ機能を使いUTF-8でSQLiteにデータをバックアップ。 再度SQLiteに切り替えると今度は文字化けもなく完璧! CentOS5.5でSQLite関数が使えるようになりました。
プログラムはそのうちPDOを使って書き直そう。SQLite3はPDOを使わないとだめなようだし。 でもいったんフォローした機能は継続してフォローしてほしいなあ。バージョンアップしたとたんに全部動かなくなるんじゃたまんない。
|
|
|