
画面内に付箋を貼るようなUIの掲示板を作れるPHP&jQueryなサンプルプログラム:phpspot開発日誌を改良しつつこのブログに設置してみました。
日本語もOK!Ajaxとphp,JQueryで作る付箋メモシステム「Sticky Notes With AJAX, PHP & jQuery」 | DesignDevelopでも紹介されていますね。
動作は以下からご確認下さい。
⇒ペタペタ掲示板
2011/01/11追記
削除対応版の記事書きました。
設置にあたってデフォルトからカスタマイズした点は以下の通りです。
- 表示条件
- 日本語化
- 書き込み時にメール送信
それでは設置の手順を紹介して行きたいと思います。
全体の流れ兼目次
必要ファイルの入手
まずはAJAX-enabled Sticky Notes With PHP & jQuery - Tutorialzineから必要なファイルをDLします。
DLしたzipファイルを解凍すると
- ajax
- post.php(追加処理php)
- update_position.php(位置情報処理php)
- fancybox
- fancyboxファイル群、jQueryもここにあります。
- img
- 画像ファイル群
- add_note.html(fancyboxで呼び出される追加用HTML)
- connect.php(DB接続情報)
- demo.php(表示用php)
- script.js
- styles.css
- table.sql(MySQLへのINSERT文)
こんな構成になっています、それぞれが何をやっているファイルなのかも書いておきました。
まずはデータベースを作成
データベースを作成します。
これはお使いのサーバにより手法は異なると思いますが、エックスサーバの場合で記述して行きますので、適宜読み替えて下さい。
[サーバパネル]→[MySQL設定]より[MySQLの追加]へ遷移します。
次のページで「MySQLデータベース名」「文字コード」を指定します。

MySQLデータベース名は任意で構いません。
文字コードはUTF-8を指定して下さい。
作成出来たら、自分のユーザーにアクセス権を与えます。
SQLファイルをインポート
続いてphpMyAdminにログインして、先ほど作成したデータベースを選択します。
選択後、インポートタブをクリックして、先ほどDLしたtable.sqlをインポートします。
![]()
これで、必要なテーブルがデータベースに作成されました。
DB接続情報の編集-connect.php
データベースが出来上がったところで、接続情報の編集を行います。
テキストエディタなんかでconnect.phpを開き、以下を修正します。
$db_host = '';//接続先ホスト名、phpMyAdminの上部に出ています $db_user = '';//先ほどアクセス権を与えたユーザー $db_pass = '';//↑のパスワード $db_database = '';//先ほど作成したデータベース名
MTをお使いの方は見慣れているかも知れません。mt-config.cgiに書いているものと同じ項目です。
ここまで完了して、全てのファイルをサーバにアップロードすると一応動作します。
jQueryの素晴らしさを感じます。
とりあえず色々書き込みしてみましょう。
以下からはカスタマイズです。
表示条件を変更する-demo.php
DB上ではこんな構成になっています。これを踏まえて以下見て行って下さい。
デフォルトの表示条件はdemo.php内の以下箇所で指定されています。
// Removing notes that are older than an hour:
mysql_query("DELETE FROM notes WHERE id>3 AND dt<SUBTIME(NOW(),'0 1:0:0')");
$query = mysql_query("SELECT * FROM notes ORDER BY id DESC");
id3番以上で追加日(dt)が一時間以内なら表示、となっています。(多分・・・MySQLとか初心者なので間違っていたらご指摘下さい><)
そんな条件だと、何も表示されていない時ばっかになっちゃいそうなので表示条件を考えます。
今回は直近20件に変更してみようと思います。
phpMyAdminを利用してSQL文を書き直す
表示条件を変更するにはSQL文を書き直す必要がありますが、分からなくても大丈夫です。
![]()
↑の画像のように、phpMyAdmin上で実際に表示したい条件を指定します。
表示結果を確認して問題無ければ[PHP コードの作成]を押します。
これでSQL文が分かっちゃうのです!
$sql = 'SELECT * FROM `notes` ORDER BY `notes`.`id` DESC LIMIT 0, 20 ';
これをdemo.phpの該当箇所に埋め込みます。
// Removing notes that are older than an hour:
//mysql_query("DELETE FROM notes WHERE id>3 AND dt<SUBTIME(NOW(),'0 1:0:0')");
//↑はもう要りません
//↓にさっきの右辺部分を埋め込みます
$query = mysql_query("SELECT * FROM `notes` ORDER BY `notes`.`id` DESC LIMIT 0, 20 ");
これで表示条件の変更が完了です。
このエントリー長くね?って場合
さて、ここら辺であなたは、このエントリー長いなと思っているころでしょう。
とりあえず
ブクマして、あとで読むにでもしておいて下さいw
日本語化する
まずは、付箋追加時に出るエラーメッセージを日本語に置き換えます。
エラーメッセージの日本語化
これはscript.js内で指定されています。
alert("The note text is too short!")
↓
alert("もっと長いコメントが欲しいです!")
alert("You haven't entered your name!")
↓
alert("お名前を教えてください!名無しでもOK!")
としてあげます。これだけだと文字化けするのでdemo.phpの方で
<script type="text/javascript" src="script.js" charset="Shift_JIS"></script>
script.jsの文字コードを指定します。
付箋追加用HTMLの日本語化
これは単純に文字列を置き換えるだけでいけるのかな、なんて思っていましたが文字化けしました。
解決方法ですが、ファイルの文字コードを変換出来るエディタなんかでUTF-8に変換してあげる事で解決しました。
私は秀丸エディタで変換しましたが、シェアウェアなので微妙ですね。
ただ、他のエディタの事は良く分からないのでファイル 文字コード 変換 - Google 検索等から探してみて下さい。
PHPで書き込みがあったらメールを送る
書き込みがあったら、多分もの凄い嬉しいので一刻も早く知りたいなと思い、メールを送信するようにしました。
追加時にAJAXで呼び出されるpost.phpの以下箇所にメール送信Scriptを埋め込みます。
/* Inserting a new record in the notes DB: */
mysql_query(' INSERT INTO notes (text,name,color,xyz)
VALUES ("'.$body.'","'.$author.'","'.$color.'","0x0x'.$zindex.'")');
//↑こいつがDBに書き込みしてるので、その時に
//メール送信
$mailto="caraldok@gmail.com,";
$result=$body;
$subject="掲示板書き込みがありました";
$subject=mb_convert_encoding($subject, "EUC-JP","auto");
$result=mb_convert_encoding($result, "EUC-JP","auto");
mb_send_mail($mailto, $subject, $result);
こんな感じでメールが飛んでくるようになります。
総括
このブログでは、CSSをいじるのが面倒だったのでMTのインデックステンプレートを新規作成し、全体をiframeで読み込む形にしています。
↑一部本音を隠しました。
こんな感じで全て公開されていると、実装は簡単な上に、読み解いているだけで勉強になりますね。
非常に楽しかったです。
なんかコメントとか下さいw
⇒ペタペタ掲示板
10/01/25追記
掲示板の方で、
ふと疑問。これってブラウザを開いている限りSQLの接続繋ぎっぱなしなのかな?コメンター
と、ご指摘頂きました。確かになんか危うそう。
なので切断方法調べて
mysql_close($link);
の記述をメインのPHPへ追加しました。
これでDBへの接続は切れてるはずです。
ありがとうございました。
このエントリーのトラックバックURL:
Posted by ; うずら : 2011年3月31日 12:34
>うずら様
返信が遅くなってすいません。見落としていました。
設置されているURLを見てみましたが、付箋の描画はされているようですので
MySQLへは接続出来ている様に見えます。
付箋追加画面がうまく出てきませんので何ともいえませんが、直接MySQLに値を入れてみて描画されたら、post.phpでMySQLに接続出来ているか、script.jsとバッティングしているファイルは無いか、を確認してみると良いかも知れません。
なんだか中途半端な事しか言えず申し訳ないです。
Posted by ; 管理人 : 2011年4月13日 12:29
はじめまして。静岡県は静岡市に在住しております MC6800 と申します。
iPhone にも対応しそうな掲示板を Google 検索で探していてこちらのサイトを拝見いたしました。
付箋掲示板は以前から知ってはいましたが、こちらのサイトを拝見させていただき iPhone でも機能しそうな感じがしたのでセットアップしました。
セットアップまでの手順がとても分かりやすく解説されていて、おかげさまで無事にセットアップできました。ありがとうございます。
削除機能の追加はとても素晴らしいと思いました。が、誰でもどれでも削除できるんですね。^^;
ペタペタ掲示板に貼ってあった二つの貼り付けを誤って消してしまったのは、実は当方です。すみませんです。><
なにはともあれ、おかげさまで楽しい掲示板をセットアップできて嬉しいです^^。
ありがとうございました。m(__)m
うずら様へ
当方もサイトを拝見させていただきましたが、管理人様が仰る通り投稿窓の内容が表示されませんでした。(Firefox5.0)
どこが原因なんだろと思い、うずら様側のHTMLやJavaScriptの内容を当方側のHTML及びJavaScriptへコピペしたりして試しましたが、当方の環境では正常に投稿内容が表示されてしまうので皆目原因が掴めません。
只気になる事が一点ありまして、メインページのドメイン名が”simcode.info”となっていますが、投稿フォームは”www.simcode.info”のドメインで呼び出されています。
おそらくこれが原因ではないかと思いますが、当方側で確認できないので何とも言えませんです。
長々と失礼いたしました。m(__)m
Posted by ; MC6800 : 2011年7月27日 12:11
- Web [83]
- スマートフォン [29]
- デザインツール [13]
- Fireworks [4]
- Illustrator [1]
- Photoshop [6]
- パソコン [33]
- プログラミング [49]
- JavaScript [25]
- MovableType [24]
- PHP [9]
- 個人的ななにか [58]







こんにちわ。こちらの内容を参考にさせて頂きstickynotesを設置させて頂きました。設置まではできたのですが、何故か書込みが反映されません。考えられる原因は何かございますでしょうか。サーバーはsixcore mysqlバージョンは5.0.77になります。ご教授頂けると幸いです。よろしくお願い致します。