ぞんちボードPHP版サンプル

2007年01月16日 | PHP+DB
大体できたようなので、サンプルをお見せしますね(PHPになってることは、拡張子(.php)以外わからないかぁ?)。
PCページ
携帯ページ

出来るのは、読み・書き・1階層までの返信です。基本これで十分でしょう。
書き込みフォームは、掲示板の先頭でも別ウィンドウ(単独画面)でもお好みで行けるように両方に入れてあります。テンプレートに入れているだけですので、使いたい方を残していらない方を削るだけです。

テンプレートは、こちらでご確認ください。

削除は、管理人にのみ許されています。管理者ページはこちらです。
管理者ページ

初回のみログイン画面が出ますが、2度目からはオートになります。パスワードは、「zonch」です。

各発言につけられた「削除」リンクのクリックで削除画面を呼び出します。選択した返信の削除、あるいは発言そのものの削除(返信も全て一緒に削除されます)のどちらかを選択可能です。

修正には対応してませんので、必要な方はカスタマイズにて対応させていただきます。

といった感じでしょうか。リリースは・・・いつになるでしょうね。まだわかりませんが、これをベースにしたカスタマイズ製品につきましてはリリース前でもご提供可能ですので、ご希望の方がいらっしゃいましたら、おふぃす・ぞんちまでお気軽にご相談くださいませ!

ぞんちボードPHP版

2007年01月12日 | PHP+DB
現在、ぞんちボードのPHP版を制作中です。PHPの掲示板が欲しいというご依頼はこれまで何度かいただいているのですが、ベースのものが何もないと高く付きますからね。CGI版同様、掲示板としての基本的な機能は押さえてありますので、これをベースにカスタマイズしていただければというつもりで作っています。

作業の方はだいたい終わってますので、あとは調整と動作確認の後リリースということになります。近いうちにこの場でお見せできると思います。

お楽しみに~。

mb_send_mailで添付メール

2006年12月28日 | PHP+DB
たまには開発日記らしいことも書かないと「タイトルに偽りあり!」って言われそうなので、書いておきますかぁ。プログラムやらない人にはちんぷんかんぷんでしょうから、どうかなとも思うのですが・・・。

先日、PHPのmb_send_mailで添付メールを送るスクリプトを作ろうとしたときのこと。具体的にどうするかはググっていただければいくつか出てくると思うので省略しますが、mb_send_mailでは無理と書いている方もいらっしゃいました。これは、ほぼイエスですがノーでもあります。結論的には、受け手の環境によるということです。

問題はヘッダです。mb_send_mailは、関数自身が作成するヘッダの後にこちらが付けたいヘッダを付け加えます。ファイルを添付するには、

Content-Type: multipart/mixed;・・・・

というヘッダにする必要があるのですが、mb_send_mailは通常のメールと同様

Content-Type: text/plain;・・・・

を入れてしまうんですよね。つまり、2つのContent-Typeヘッダが

Content-Type: text/plain;・・・・
Content-Type: multipart/mixed;・・・・

の順に送られることになります。これを(おそらく最初のは無視して)multipart/mixedと解釈してくれるメールソフトなら添付ファイルとして認識してくれます。MacOS XのMailとか私が以前使っていたMusashiというメールソフトはOKでした。でも、WinのOutlookはNGです。Winで出来ないものを世間では出来るとは言わないので(笑)、そういう意味ではmb_send_mailで添付ファイルは無理ということになりますね。

で、結局どうするかといいますと、mb_send_mailではなくmailという関数を使います。mb_send_mailが勝手にやってくれる処理を自分で行う必要がありますが(必要なヘッダは自分で付けないとなりませんし、本文をJISに変換してから渡さないと文字化けします)、これで問題なく添付ファイルが送れることになります。

インテルへの道3の2

2006年12月16日 | PHP+DB
最近、投稿直後に一斉に付くトラックバックがウザイんですけどっ!もちろん、何の関係もないもの(スパム)ばっかりね。

インテルへの道4のつもりだったけど、3の続き・・・PHP&DBは、その後も特に問題なく順調に動いとります。ただ、htmlとかphpのファイルを置くディレクトリは、デフォルトでは、/Applications/MAMP/htdocsになってるけど、これはMAMPフォルダの外に変えた方がいいね。最新版にアップデートしようとMAMPフォルダごとうっかり上書きしてしまったら、大事なデータが消えてしまいますので・・・青ざめる前に変えておきましょう。

インテルへの道3

2006年12月15日 | PHP+DB
まずは、データベースのデータを移動。phpMyAdminで書き出してインテルMacのMySQLにインポート。読み込みファイルの文字セットにEUCがないので、utf8に変換してから読み込ませるとすんなり行ったかな。
続いて移したデータを使うスクリプトを起動してみる・・・噂通り文字化け。ページそのものが化けてるんじゃなくて差し込まれたデータのところだけが「???」と化けてます。

まぁ、ここからあれこれ格闘したわけですが、結論から言いますと、データベースに接続した後、set names ujisというクエリーを実行させるならそれだけでOKのようです。

$con = mysql_connect($hostname, $user_id, $password);
mysql_select_db($dbname);

$sql = "set names ujis";
$rs = mysql_query($sql);

ってな感じ?

結論はそうであっても、これを解決策とするならすべてのスクリプトに手を入れなければならないわけでして・・・そんなことはできる限りしたくないわけです。

で、これをサーバの方で必ずやってくれるような設定があるとのこと。それが、my.cnfの[mysqld]のところに

init-connect='SET NAMES ujis'

と書くというやつです。ちなみに、my.cnfなんてファイルはいくら探しても見つかりません。/library/share/mysqlにmy-small.cnfとかmy-medium.cnfとかmy-large.cnfとかありますんで、自分の環境にあったものを選んでmy.cnfとリネームした後、/db/mysqlに置けばいいようです。MAMPなら書き換えも移動も面倒なことがないんで嬉しいよね。

さて、my.cnfを置いてみる・・・変化なし。またまた調査の旅へ・・・すると、super権限のあるユーザーの場合はinit-connectが効かないんで、mysqldの起動オプションで指定しないとダメなんて記述を見つける。/bin/startMysql.shの起動オプションに

--init-connect='SET NAMES ujis'

を足してみる・・・これでも変わらず。

人がうまくいったというページの通りやってうまく行かないと凹むよね・・・いろいろ悩んだあげくsuperユーザーであること自体がいかんのかいなと思い、ほかのユーザーを作ってそのユーザーで接続してみる・・・出来た!文字化けしないよ~!

結局必要だったのは、my.cnfにinit-connect='SET NAMES ujis'を書き入れて、アクセス用のユーザーを作っただけ。これだけで今のところは問題ないように見えます。default-character-setの設定とか、skip-character-set-client-handshakeがどうとかいう話もあったけど、今のところなくても問題ないようです。まぁあとは、問題があればその時また考えることにしよう。その方が、今訳もわからず設定しておくより、どの設定が何に対処したものかがより実感を持ってわかるから。

と言うわけで、PHPおよびMySQLの移行はひとまず完了ということになりました。さて、次回は・・・

インテルへの道2

2006年12月13日 | PHP+DB
MySQLのバージョンをどうしようかといろいろ調べてあれこれ悩む・・・5.0にするのは結構チャレンジングなんて書いてる人もいるし(笑)・・・。えっ?ソースから入れれば好きなバージョン入れられるって?そんなこと喜んでやるくらいならMacユーザーなんて長年やってません(笑)!

でまぁ、5.0にするなら、いっそのこと「MAMP」にしちゃった方がよさそうな感じ。MAMPっていうのは、ApacheとMySQLとPHPがセットになって簡単に利用できるようにしたパッケージで、何がいいって

1,専用のポートで動かすのが標準になってるから、OS X標準のApacheとぶつかることなく動かせる!
 これがもう決定的です。標準の環境でトラブってしまえば面倒なことになるかも知れないので(だからこそ、入れる前にこうして慎重に悩んでるわけですが)、全く別というのは気軽にお試しできるという点でも非常に嬉しい。

2,インストールはアプリケーションフォルダにMAMPを入れるだけ。
 入れるのがこれだけってことは、アンインストールもMAMPを削除するだけ、アップデートもフォルダを入れ替えるだけってことで、これまた試してダメなら他を考えようかって軽~い気持ちで試せます。インストーラでどこに何入れたかわかんないものだと、ホントに元の状態に戻ってるもんだか不安になるからね。

3,PHPは4か5選んで動かせる
 なかなか気が利くじゃないの~!

というわけで、入れてみました。PHP5はあっさり動きました。で、PHP4に切り替えて・・・と思ったら、切り替えできないじゃないの・・・何これ?バグ?

ひとまずPHPは5で行くとして、あとはMySQLの文字化けとの戦いだな。まぁ覚悟はしてたけど。つづく・・・。

インテルへの道

2006年12月10日 | PHP+DB
三度目の正直・・・三台目のiMacがやってきました。今度はソフマップ(.com)で購入。特に問題ない模様(ほっ)。

で、週末を利用して今環境構築中。もちろん、仕事に関するところからね。今のマシンから自動移行という手もあるけど、PPC to インテルだし、まめにアップデートしたりしてないので古い環境が引き継がれたりしてもイヤなので、今回は手作業で構築中。
まぁ、どっちみち、CGIだのPHPだのデータベースだの仕事に関する部分は自動で移してくれないのは経験済みなので、その点ではどちらでも変わりません。

CGIの設定は何度とかなくやってるので、すんなり終了。続いて、PHPとMySQLを入れるところでどれを入れようかと悩み中。今まで入れていたのは、PHP4とMySQL4.0なんだけど、バイナリパッケージだとインテルマック用には最近のものしかないのよね。
PHPは5しかないようなので、悩むこともないか。MySQLは4.1、5.0,5.1だな。移行にに大きな溝(文字化け問題とかね)があったのは4.0 to 4.1のはずなので、4.1にするくらいならいっそ5にしてしまっても変わりないんでしょうか・・・う~ん、もうちょっと考えよう。仕事もしないとならないし。

DB版スケジュールメーカー2

2006年07月11日 | PHP+DB
ワールドカップ終了。今日からちゃんと寝よう・・・ジダ~~ン・・・・(悲)。

スケジュール編集は、カテゴリ毎編集が基本となります(MySQL PostgreSQL)。プロフィールメーカー同様、カテゴリ毎の編集が独立しているので、カテゴリ毎に別管理人が編集といった用途のベースに出来るようにもなっています。こうなるともう操作感は、PHPやCGIのスケジュールメーカーを一つずつ設置したのと変わらないですね。

表示期間は、本日から1週間って希望もあるかと思いますが、ここでは更新日から1週間にしてます。なぜって、そうしないと1週間に1度は更新しないとすぐに「予定無し」になっちゃうから!少なくともサンプルでそんなんやってられんでしょ(MySQL PostgreSQL)?

更新日はね・・・カテゴリが完全に独立扱いならそれぞれ別で管理すべきなんでしょうけど、今はそこまで使い方を限定してないんで、全体で1つの更新日として扱ってます。例えばカテゴリ1で更新して、その後カテゴリ2で更新したら、カテゴリ1は更新されてないけど更新日だけは更新されちゃうってことです。もちろん、表示期間もカテゴリ2を更新した日時に合わせて1週間の表示となるんで、日付が変わっていればその分カテゴリ1の予定表も進むってことね。

DB版スケジュールメーカー1

2006年07月05日 | PHP+DB
中田引退か・・・・中田のプレイに惚れたことはないな。一度も。そんな私は松井ファン(大輔ね。ルマンのね)。

今日からは、DB版スケジュールメーカーの話にしましょうかね。
まず最初に悩んだのは、スケジュールメーカーで使うプロフィールデータね。CGIやPHPのスケジュールメーカーの場合は、プロフィールメーカーと併用した場合でも別に入力するようになってますが、これはそうでないとスケジュールメーカーだけの単独使用が出来なくなるからです。併用する方にとっては二度手間になることは百も承知なんですけどね(プロフィールメーカーとのデータ共有はご希望に応じてカスタマイズで対応しております)。

で、DB版で同じことをしますと・・・何万件だか何十万件だかあるデータを二度手間で入力ですか・・・あり得ない、あり得ない!

と言うわけで、DB版スケジュールメーカーは、DB版プロフィールメーカーとの連携使用が前提で、プロフィールメーカーで入力されたデータを元にスケジュールを作成します。つまり、プロフィールメーカーが「親」でスケジュールメーカーが「子」という関係ですね。
スケジュールメーカーのトップ(MySQL PostgreSQL)では、プロフィールメーカーで作成したカテゴリが読み込まれていることがわかると思います。

DB版プロフィールメーカー4【検索】

2006年06月28日 | PHP+DB
そろそろ、必死になって攻めるブラジルが見たいな・・・・怒濤の攻めってやつ?余裕ありすぎでドキドキせんわい。

管理画面では、編集するデータを選び出すための検索がついてます(MySQL PostgreSQL)。カテゴリ、名前、ID、血液型で絞れるようにはなってますが、これは単なる例ですので、これだけあったら大丈夫なんて意味では決してありません。カテゴリ、名前、IDは、わかっている条件に応じて使うことはあるでしょうけど、血液型で絞るなんてケースがあるかというとまずないでしょうね。「入力されたデータであれば何でも検索対象に出来ますよ~」という意味で一つ入れてあるだけですので、あとはカスタマイズされる方それぞれが必要とされる条件を決めていただければと思います。

プロフィール検索(公開するページ)の方も同じような構成になってます(MySQL PostgreSQL)。もちろん、結果として表示されるものは違いますけど。こちらは、管理ページと違って血液型で絞るなんて十分ありでしょうね。IDが一番使われなさそうかな。まぁ、こちらも検索条件は例ですので、あとはお好みでってことで。