当方の新刊の「作って覚えるPHP+MySQLアプリケーション」が明日(6月24日)発売されます。
PHP+MySQL+Smartyを組み合わせて、ブログ/ショッピングサイト/マッシュアップのシステムを作るといった内容です。
版元はソシムで、定価は2,310円(税込み)です。
PHP+MySQLの組み合わせは、WordPressやXOOPSをはじめとして、いまやWebアプリケーションを作る際の「定番」と言えます。
本書では、この組み合わせに、さらに汎用テンプレートエンジンの「Smarty」を組み合わせて、ロジックとデザインを分離したWebアプリケーションを開発する事例を紹介しています。
サンプルプログラム(ブログ/ショッピングサイト/マッシュアップ)のソースコードは、付録のCD-ROMに収録してあります。
また、開発環境としてXAMPP for Windows/Macをインストールし、その上で動作させることができるようになっています。
本書の大まかな構成は以下の通りです。
- 第1章 開発環境を整える
XAMPPのインストールや、PEARのライブラリのインストールなど - 第2章 MySQLの基本とPHPからの利用
SQLの書き方や、phpMyAdminを使った操作、PHPからSQLを実行する手順など - 第3章 Smartyでロジックとデザインを分離する
Smartyの基本、よく使うテンプレートタグ、プラグインの作り方など - 第4章 ミニブログのシステムを作る
ログインの処理、記事やカテゴリーの管理、画像のアップロード、ブログの表示など - 第5章 ショッピングサイトのシステムを作る
商品の管理、ショッピングカート、会員管理など - 第6章 マッシュアップWebアプリケーションを作る
ミニブログにホットペッパーWebサービス/Googleマップ/Ajaxを絡めた「グルメブログ」の作成





![Hardcore Will Never Die, But You Will [Bonus Tracks] Hardcore Will Never Die, But You Will [Bonus Tracks]](http://userserve-ak.last.fm/serve/34s/67192634.jpg)



コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
勉強していくのに分厚くなく、それでいて解説もありさらにブログだけでなく、ショッピングシステムやマッシュアップが作れる勉強ができる思っていた通りの本が見つかった
とうれしくなり買ってみました!
張り切って勉強はじめたのですが、どうにもこうにも動かず勉強が止まってしまい困っています。
突然で迷惑だとは思うのですが、ご教授いただけましたらうれしく思います。
今p56のところなのですが、
print("/n");
とかいてある所にエラーが出ます。
上記の記入は本の通りだと思うのですが・・・
MDB2クラスの組み込みやDSNの設定がおかしいのでしょうか?
エラーメッセージは、「Parse error: syntax error, unexpected T_LNUMBER in C:\xampp\htdocs\samp2\test.php on line 67」です。
>のんさん
こんにちは。拙著をご購入いただきありがとうございます。
ご質問の件ですが、リストは手で入力されたのでしょうか。
文法エラー(syntax error)のエラーメッセージですので、手で入力されたのだとすれば、入力ミスが考えられます。
なお、p56のリストのサンプルファイルは、「part2」フォルダにある「dbtest.php」です。
エラーの出るところのtagがおかしかったですすいません。
レコードの内容の表示で
テーブルtagの部分です。
お返事有難うございます。
入力ミスがあったようでバグを直したら今度は、データベースの接続に失敗しましたと出てきました。。
ディレクトリは自分で違うところにおいたので違っています。ややこしくてすいません。
cdにあるフォルダを
ほんの通り
htdocsの中にsamleフォルダをコピーしてローカルホストの/sample/part2/dbtest.phpをIEで見たら同じ状況「データベースへの接続に失敗しました。」
データベース名も違う名前をつけていたので、ソレも「testdb」で作り直したのですが
考えられる原因は何でしょうか
>のんさん
こんにちは。
55ページのリスト中の「DSNの設定」の箇所を、そちらでお使いの環境に合わせて書き換えることが必要です(ユーザー名やパスワードなど)。
なお、書き換えているのに動かないとなると、申し訳ありませんがそちらの環境でデバッグしてみないと原因は分からないです。
デバックの仕方を調べてみます。
なんどもお手数をおかけしてすいませんでした。
xamppを以前インストールしていたので、インストールのページを飛ばしてまして・・・・・
MDB2が機能していないんだと思い本をちゃんと読んでみて、mdb2をインストールしていない事を知りました。。。
p20のPEARのインストールをしたら上手くいきました。
本当に申し訳ありませんでした。
飛ばさず前からきちんと読みます(反省)
今日この本を買わせて頂きました。まったくの入門者です。
そして、xampp-win32-1.7.1-installer.exeをネットから落としインストールしました。
p13に、xampp→apache→binフォルダのphp.iniファイルを書き換えろ。
とありますが、このフォルダにphp.iniファイルはなく、phpフォルダにphp.iniファイルがありました。これにはどう対応したらいいでしょうか? あと、この本の正誤表はないのでしょうか?
>木野さん
拙著をお買い求めいただき、ありがとうございます。
ご質問の件ですが、XAMPP 1.7.1では、php.iniはxampp→phpフォルダにありますので、そのフォルダにあるphp.iniを書き換えてください。
また、申し訳ありませんが、正誤表はありません。
なお、初版を執筆した時点では、XAMPPのバージョンは1.6.6aでした。
また、一度増刷しましたが、その時のXAMPPのバージョンは1.6.8でした。
XAMPPのバージョンが上がると、ご質問いただいたように、XAMPPの設定方法が変わることがあります。
ちなみに、XAMPPの1.6.6aおよび1.6.8は、それぞれ以下のアドレスからダウンロードすることができます。
http://www.apachefriends.org/download.php?xampp-win32-1.6.6a-installer.exe
http://www.apachefriends.org/download.php?xampp-win32-1.6.8-installer.exe
>No.9 壱さん
了解しました、有り難うございます。
また何かありましたらよろしくお願いします。
僕のは初版だったので、前のは削除し、改めて1.6.6aをインストールしました。20ページの
C:\xampp\php>pear install mdb2
ここまではうまく行ったのですが、
C:\xampp\php>pear install mdb2_driver_mysql
これを実行すると、
pear/Archive_Tar requires PEAR Installer (version >= 1.5.4), installed version i
s 1.4.11
pear/PEAR requires package "pear/Archive_Tar" (recommended version 1.3.3)
pear/MDB2 requires package "pear/PEAR" (version >= 1.3.6)
pear/MDB2_Driver_mysql requires package "pear/MDB2" (version >= 2.4.1)
No valid packages found
install failed
とエラーになります。 これにはどう対応したらいいでしょうか?
>木野さん
こんにちは。
以下のコマンドを入力してPEARをアップデートしてから、本の20ページの手順を行ってください。
pear upgrade -f PEAR
pear install Archive_Tar
>No.12 壱さん
うまく行きました、ありがとうございます。
先日、「作って覚えるPHP+MYSQLアプリケーション」を購入させていただいたジョーカーです。
本書のP105にあるインストールスクリプトの実行ですが
スクリプトが起動しません。
エラーとして
Warning: require_once(c:/xampp/php/smarty/Smarty.class.php) [function.require-once]: failed to open stream: No such file or directory in C:\xampp3\htdocs\sample\miniblog\install.php on line 12
Fatal error: require_once() [function.require]: Failed opening required 'c:/xampp/php/smarty/Smarty.class.php' (include_path='admin;lib;c:/xampp/php/PEAR;.;C:\xampp3\php\pear\') in C:\xampp3\htdocs\sample\miniblog\install.php on line 12
尚、C:xmapp3というのは最初xmappにインストおよびアンインストールを3回くらいくりかえしたが上記のようなエラーがでてしまうのでインストールとアンインストール一回繰り返すごとにインストール先をxmapp~xmapp2~xmapp3へと変えてやってみたのですが結果はかわらず上記のエラーが出てしまいます。
実行環境として、
OS windows vista
xmapp 1.7.1 installer.exe
smarty 2.6.26
です
本書にはFAXにてと書いてありましたが、FAXが自宅にありませんので、本ページを拝見し、ペンをとった次第であります。
お忙しいところ申し訳ございませんがご教授の程宜しくお願い申し上げます。
>ジョーカーさん
拙著をお買い求めいただき、ありがとうございます。
現在外出中で、本が手元にないので完全にはお答えできませんが、エラーメッセージからすると、Smarty.class.phpをc:/xampp/php/smartyフォルダから探そうとしているのに、ファイルが存在しない状況になっています。
cドライブ→xamppフォルダ→phpフォルダ→smartyフォルダにSmarty.class.phpが存在するように、Smarty一式をフォルダ構造ごとコピーすれば、動作するようになるはずです。
ご教授有難うございました。
ミニブログのシステム全般の設定の画面が表示されました。
さて、データベースをあらかじめ作り、各項目を入力したのですが、どうしてもデータベースに接続できません。
考えられる原因があればご教授いただきたいのですが
急がないのでいつでもかまいません
宜しくお願い申し上げます。
PEARのインストールにて MDBに関係のあるところだけ 再度インストールしてみたらデータベースに接続できるようになりました。
メニューに記事の新規作成をして、保存ボタンを押してみたらタイトル、およびカテゴリー、本文、追記の部分に???????????というふうに表示されるようになり、既存の記事の編集ができないということになりました。
どうすればよいのでしょうか
宜しくお願い申し上げます。
再度記事の新規作成の画面にトライしてみようかと思い「miniblog」
フォルダーのadmin.phpにアクセスしたら、IDとパスワードの入力画面が出てきたのですが、IDとパスワードを控えていなかったため、忘れてしまいエントリーできません。どうしたらよいのでしょうか。
>ジョーカーさん
こんにちは。
まず文字化けの件ですが、データベースの文字コードが正しくないと思われます。
いったんミニブログ用のデータベースを削除して、作り直してください。
本の25ページにデータベースの一般的な作成方法があります。
そこに書いてある通り、データベースの文字コードを「utf8_unicode_ci」にする必要があります。
この設定をデフォルトのままにすると、データベースの文字コードが「utf8_general_ci」になり、文字化けが起こります。
それから、データベースを作成しなおすことによって、ミニブログのインストールもやり直す必要があります。
miniblogフォルダ→configフォルダに「miniblog.php」というファイルがありますが、それを削除すれば、インストールを再度行うことができます。
また、この「miniblog.php」ファイルの中に、ユーザー名とパスワードの情報もあります。
データベースの文字コードを「utf8_unicode_ci」にしてやってみたのですが、再び文字化けが起こりましたので、再度、XMAppをインストールしなおし、pearのインストールなどやり直してみました。
(データベースも作りなおしています)
またインストールスクリプトの実行でまたデータベースに接続できない状況となってしまいました。
前回と同様にPEARのインストールを試みましたが、今度はalready installedという反応にて原因はこれではないようです。
ミニブログインストールのエントリー画面を表示してみたのですが
Warning: Smarty error: unable to read resource: "miniblog.php" in C:\xampp\php\smarty\Smarty.class.php on line 1093
という表示がされておりました
データベースに接続できないのが上記が原因とは思えないですが
一応表示してみました。
接続できない原因がわかりません。
なにか思いわたるところがあれば、ご指導願いたいのですが
>ジョーカーさん
こんにちは。
サンプルのスクリプトは、XAMPP for WindowsをCドライブのxamppフォルダにインストールした場合を想定して作ってあります。
上記以外のフォルダにインストールしている場合は、本の105ページの「パスの設定」にしたがって、set_path.phpファイルを書き換えていただく必要があります。
>>ジョーカーさん
>こんにちは。
>サンプルのスクリプトは、XAMPP for WindowsをCドライブのxamppフォルダにインストールした場合を想定して作ってあります。
>上記以外のフォルダにインストールしている場合は、本の105ページの「パスの設定」にしたがって、set_path.phpファイルを書き換えていただく必要があります。
コメントが行き違いになってスイマセン
再インストール先はc:¥xamppにしました。
ゴミ箱にあるminiblogを元に戻すしてから、インストール実行をおこなってみたら、インストールは設定済みと表示されました。
adminの画面からアクセスすると上記のエラー表示は消えておりましたが、miniblog.phpに書いてあった管理者のユーザーネームとパスワードを入力してみたところ、ミニブログの表示の下に「データベース接続エラー」と表示されました。
接続できない原因がわかりません。
なにか思いわたるところがあれば、ご指導願いたいのですが
>ジョーカーさん
こんにちは。
以下のような原因が考えられます。
また、データベースの作成後に、miniblog.phpをゴミ箱から戻す方法では、正しいインストールを行うことができません(データベースにテーブルが作成されないため)。
miniblog.phpが「miniblog」→「config」フォルダにない状態で、インストールスクリプトを再度実行して、ユーザー名等の設定をやり直してください。
なお、miniblogフォルダのadmin.phpの77行目を以下のように書き換えると、接続時のエラーメッセージを表示することができます。
書き換え前
$smarty->assign('errmsg', 'データベースに接続することができませんでした。');
書き換え後
$smarty->assign('errmsg', 'データベースに接続することができませんでした。' . $mdb2->getMessage());
install.phpにadmin.phpと同じような記述がありましたので
エラーログを吐き出させるため、書き変えてみましたが、
「データベースに接続することができませんでした。MDB2 Error: connect failed」
というメッセージが出てきました。
pear mdb2はすでにインストール済みだし原因は上記のエラーではわかりません。
>ジョーカーさん
こんにちは。
そのエラーメッセージからすると、MySQLに接続するための設定(ユーザー名/パスワード/データベース名/ホスト名)のどれかが正しくないと思われます。
なお、これらの設定が全部正しいのに接続できないということだと、申し訳ありませんが、これ以上は原因を推測することができません。
はじめまして。
miniblogをレンタルサーバーへインストール後、/sample/miniblog/admin.phpが開けません。
ローカルでは、問題なく出来るのですが。
作業の流れ
1.miniblogをレンタルサーバーへUP
2.set_path.phpを書き換え
3.P105のパーミッションの設定を変更
4.インストールスクリプトの実行
5.ミニブログの設定が完了しました。 こちらからログインすることができます。
以上
上記までは進むのですが、こちら(sample/miniblog/admin.php)をクリックすると次の画面のソースは以下の通りです。
何が問題なのでしょうか?
よろしくお願いします。
はじめまして。
197ページのリスト5.10についてお尋ねします。
// 個数が1未満ならエラーにする
if($num $cart['cart_msg'] = '個数を1個未満にすることはできません。';
}
の部分ですが、
「個数を1個未満にすることはできません。」が表示されません。
HTTP_Session2::set('cart', $cart);
を付け加えると表示されます。
これは正しい対策でしょうか?
私の認識では、PHPの変数$cart['cart_msg']は、
リスト5.10の後ろにある、
header("location: {$self}?mode=${now_mode}");
によって変数は渡されないので、
HTTP_Session2::set('cart', $cart);
によって変数をセッション変数に格納しなければならないのではないかと思います。
この認識は間違っているでしょうか?
お手数ですがよろしくお願いします。
>たっちゃんさん
拙著をお買い求めいただき、ありがとうございます。
また、不具合をご指摘いただき、ありがとうございました。
ご指摘の通り、変数をセッションに格納してくださるようお願いします。
迅速な回答ありがとうございます。
「作って覚えるPHP+MySQLアプリケーション」
を購入して半年あまりになりますが、大変勉強になり感謝しています。
私にとっては、内容のメリハリ(冗長にならず、かつ分かりにくいところは丁寧)があって分かりやすい書籍です。(その分初心者にはわかりづらいかもしれません。どのレベルの読者を対象にするかで内容は変わりますから、その判断は難しいですね)
内容以上に、私は、本のレイアウトが大好きで、中身をパラパラとめくってこれはよさそうだと思って買いました。
とりあえずは、お礼と感想まで。
「作って覚えるPHP+MySQLアプリケーション」を購入し勉強させていただいております。
xamppをDドライブ直下にインストールしておりますので、
p.55の「$pear_path = 'c:\xampp\php\PEAR';」を
「$pear_path = 'd:\xampp\php\PEAR';」に変更し、
DSNの設定も現在使用しているユーザー名、パスワード、
データベース名に変更して実行したところ、
「データベースへの接続に失敗しました」と表示されて
それ以上先に進めません。
環境の構築も本の通りに進めておりますので特に問題はないかと
思います。
どのような原因が考えられるでしょうか?どうかお教え下さい。
>山中様
拙著をお買い求めいただき、ありがとうございます。
ユーザー名/パスワード/データベース名を正しく書き換えているにも関わらず、接続がうまくできないとなると、申し訳ありませんが原因の特定は難しいです。
とりあえず、56ページの上から4行目を以下のように書き換えて、エラーメッセージを表示するようにしてみると、何か分かるかも知れません。
exit('データベースへの接続に失敗しました' . $mdb2->getMessage());早速のご連絡ありがとうございます。
P.56の4行目を
exit("データベースへの接続に失敗しました" . $mdb2->getMessage());と書き換えたところ、
「データベースへの接続に失敗しましたMDB2 Error: not found」
と表示されました。
これで何かお分かりでしたら、何卒ご教授くださいますよう
よろしくお願い申し上げます。
>山中様
こんにちは。
先ほど書き換えた行を、再度以下のように書き換えてみてください。
より詳細なエラーメッセージが表示されると思います。
exit('データベースへの接続に失敗しました' . $mdb2->getMessage() . ' : ' . $mdb2->getUserInfo());先ほど教えていただいたスクリプトに書き換えたところ
次のようなメッセージが表示されました。
「データベースへの接続に失敗しましたMDB2 Error: not found : unable to find package 'MDB2_Driver_mysql' file 'MDB2\Driver\mysql.php'」
よろしくお願い致します。
>山中様
こんにちは。
いただいたメッセージからすると、MDB2のMySQLのドライバファイルを読み込めていないようです。
本の20ページを参照いただき、MDB2_Driver_mysqlをインストールしなおしてみてください。
pear uninstall MDB2_Driver_sql で一旦アンイストールし、
pear install MDB2_Driver_sqlでインストールし直しましたが
改善されませんでした。
他の方法はございますでしょうか?本当にお手数をお掛けして
申し訳ございません。
また明日にでも試してみますので、ご連絡お待ちしております。
>山中様
MDB2_Driver_mysqlを再インストールしてもダメとなると、申し訳ありませんが、解決方法は思いつきません。
別の方法を試してみます。
お手数をお掛けして申し訳ございませんでした。
お世話になっております
本を買って勉強させて頂いています
非常に初歩的な質問で申し訳ありませんが
p48に書いてあるコードはどこに入力すればよいのでしょうか?
>初心者さん
こんにちは。
拙著をお買い求めいただき、ありがとうございます。
48ページのコードは、MDB2でデータベースにアクセスするコードのひな型で、それ単体で使うものではありません。
55ページに具体的なコードの例があります。このコードは、サンプルファイルの「part2」フォルダにあります(「dbtest.php」ファイル)。
XAMPPのhtdocsフォルダの中にdbtest.phpファイルを入れて、Webブラウザでアクセスすると、動作を見ることができます。
XAMPP for MacOSXでMacOSX上にPHP+MySQLの環境を作る(16ページ)でXAMPPの起動(6)Applications/xmapp/xmapppfiles/mampp startdでmamppがありません(xmappならあります)どうしたよいですか
>sugiさん
拙著をお買い求めいただき、ありがとうございます。
本を書いた時点と現在とで、XAMPP for Mac OS Xのバージョンが異なるため、本とは違うところが出ています。
現在のXAMPP for Mac OS Xでは、アプリケーションフォルダのXAMPPアイコンをダブルクリックすると、XAMPPのコントロールパネルを起動することができるようになっています。
コントロールパネルで、ApacheとMySQLの起動/終了を行うことができます。
ジョーカーです。グルメブログのGoogleマップのAPIの取得のところで
つまずいています。(本書 P.213ページ)利用規約に同意して
websiteの指定をして(http://localhost)API生成のボタンをクリックしたところ 「要求されたページは無効です」のメッセージが出てそれから前には進めません。
お忙しいところ申し訳ありませんが、ご教授の程宜しくお願い申し上げます。
>ジョーカーさん
こんにちは。
現在では、Google MapsのAPIキーを取得するには、Googleにログインしてから作業する必要があります。
ログインしていない状態でAPIキーを取得しようとすると、「要求されたページは無効です」のエラーになります。
Googleのアカウントを取得して、ログインしてから、Google MapsのAPIキーを取得してください。
はじめまして
「作って覚えるPHP+MySQLアプリケーション」を購入し、MACOSX&MAMP上で勉強させていただいております。
第3章までは問題なくクリアできたのですが、miniblogのインストールで躓いてしまいました。インストールを実行すると、以下のメッセージが返されます。
「'mysql', 'username' => $dbuser, 'password' => $dbpass, 'hostspec' => $dbhost, 'database' => $database, );
// オプションの設定 $options = array( 'portability' => MDB2_PORTABILITY_ALL, );
// 接続 $mdb2 =& MDB2::connect($dsn, $options); if (!PEAR::isError($mdb2)) {
// 初期化 $sql = 'set names utf8'; $res =& $mdb2->query($sql); $mdb2->setFetchMode(MDB2_FETCHMODE_ASSOC); } return $mdb2; } ?>」
minicartのインストール時も同様です。
ご多忙中申し訳ありませんが、どのようなケースが考えられるか御教授いただけると幸いです。
>仁科様
拙著をお買い求めいただき、ありがとうございます。
ご質問の件ですが、サンプルのPHPファイルの中うち、以下の12個のファイルで、先頭の行の「<?」を「<?php」に置換してください。
素早いレスポンス、ありがとうございます。
無事、インストールはクリアしたようなのですが、今度はadmin.phpによる初期画面が真白になりました。miniblogもminicartも同じです。
あと、気になるのがP175のパーミッション設定で、「templates_c」ディレクトリの中には、「admin」と「shop」しかありません。テキストのとおりに「blog」「common」のディレクトリを新たに作るべきでしょうか?なお「templates」ディレクトリの中は、「admin」「shop」「common」です。
お忙しい中とは思いますが、サポートをよろしくお願いいたします。
>仁科さん
こんにちは。
おそらく、何らかのエラーが起こっている状態です。
MAMPの初期設定だと、エラーメッセージを表示しないようになっていて、エラーがあると白紙のページが表示されます。
以下の手順で、エラーメッセージが表示されるようにしてみてください。
1.「アプリケーション」→「MAMP」→「conf」→「php5.3」フォルダを開きます。
2.1.のフォルダにある「php.ini」というファイルを編集する状態にします。
3.「display_errors = Off」になっている行を検索し、その行を「display_errors = On」に書き換えて、php.iniファイルを保存します。
4.MAMPのサーバをいったん停止し、再度起動します。
5.miniblogの管理画面にログインし、エラーメッセージを調べます。
サポートのとおりエラー情報を表示するように設定したところ、以下のメッセージが出力されました。
ご指導をよろしくお願いします。なお、Auth.phpファイルはPEAR/Command/下にあります。
Warning: require_once(Auth/Auth.php) [function.require-once]: failed to open stream: No such file or directory in/Applications/MAMP/htdocs/phpmysqlsample/miniblog/admin.php on line 13
Fatal error: require_once() [function.require]: Failed opening required 'Auth/Auth.php' (include_path='admin:lib:/Applications/MAMP/bin/php5/lib/php/PEAR:.:/Applications/MAMP/bin/php5/lib/php') in/Applications/MAMP/htdocs/phpmysqlsample/miniblog/admin.php on line 13
>仁科さん
こんにちは。
こちらで試したところ、以下の手順でMAMP 1.9(2010年4月16日リリース)でminiblogを動作させることができました。
1.ターミナルを起動します。
2.以下のコマンドを順に入力します。なお、「sudo su」の入力後にパスワードの入力を求められますので、自分のパスワードを入力します。
3.「アプリケーション」→「MAMP」→「conf」→「php5.3」フォルダを開きます。
4.3.のフォルダにある「php.ini」というファイルを編集する状態にします。
5.「error_reporting = E_ALL」になっている行を検索し、その行を以下のようにに書き換えて、php.iniファイルを保存します。
6.MAMPのサーバをいったん停止し、再度起動します。
7.miniblogのset_path.phpの「$pearpath・・・」の行を以下のように書き換えます。
丁寧で素早い対応ありがとうございました。
おそらく、当方のMAMPは様々な教科書によってつぎはぎの設定がなされてしまっているため、異常な反応をしてしまったのでは、と思われます。
ただ、事情があってマックがネットにつながっていないため、今回お示しいただいたMAMP等の新規インストールによる検証はできませんでした。またネットにつながってからご報告させていただきたいと思います。
はじめまして
「作って覚えるPHP+MySQLアプリケーション」を購入し勉強させて頂いてます。
サンプルプログラムのminiblogなのですがinstallが終わり、ログイン後カテゴリの作成をして一覧をクリックしても作成したカテゴリが表示されません。
カテゴリ作成終了時には保存されましたと出て、MySQLを確認するとレコードは登録されています。
カテゴリだけではなく記事や画像、minicartでも同じ結果になります。
お忙しい中申し訳ございませんがご教授の程宜しくお願い申し上げます。
>祐介さん
こんにちは。
こちらでは現象を再現することができませんでした。
申し訳ありませんが、そちらの環境に固有の問題ではないかと思われます。
第4章以降に説明されている”インストールスクリプトの実行”について「http://localhost/sample/miniblog/install.php」を実行すると下記エラーが出て、回避できません。
エラー内容
「'mysql', 'username' => $dbuser, 'password' => $dbpass, 'hostspec' => $dbhost, 'database' => $database, ); // 繧ェ繝励す繝ァ繝ウ縺ョ險ュ螳・ $options = array( 'portability' => MDB2_PORTABILITY_ALL, ); // 謗・邯・ $mdb2 =& MDB2::connect($dsn, $options); if (!PEAR::isError($mdb2)) { // 蛻晄悄蛹・ $sql = 'set names utf8'; $res =& $mdb2->query($sql); $mdb2->setFetchMode(MDB2_FETCHMODE_ASSOC); } return $mdb2; } ?>
Fatal error: Call to undefined function initDB() in C:\xampp\htdocs\sample\miniblog\install.php on line 47
」なにが起こったのでしょうか?
この件で1週間つまずいています。教えて下さい。
>s.kiyotuguさん
こんにちは。
ご質問の件ですが、46番のコメントの通りに、各スクリプトの書き換えを行ってください。
サポートありがとうございます。
下記の様に単純な質問なのですが、合わせて宜しくお願いいたします。
質問
1.エラーメッセージに”C:\xampp\htdocs\sample\miniblog\install.php on line 47
”となってますが、サポートのとおり”46番のコメントの通りに…”で宜しいでしょうか?
2.この件については、第5章及び第6章のinstall.phpについても同じ具合なのですが、もし本の中で記入していましたら、当方のミスのため記入しているページ数を教えて下さい。
ご回答宜しくお願いいたします。
>s.kiyotuguさん
こんにちは。
>1.エラーメッセージに”C:\xampp\htdocs\sample\miniblog\install.php on line 47
>”となってますが、サポートのとおり”46番のコメントの通りに…”で宜しいでしょうか?
「・・・ ファイル名 line 行番号」と表示されたからと言って、必ずしもその位置にエラーがあるとは限りません。
他の行のミスが原因で、別の位置でエラーになることもあります。
今回の問題だと、init_db.phpの先頭行が「<?」となっているためにPHPのスクリプトと認識されず、それが原因でinitDB関数が未定義になるために、install.phpの47行目でエラーになっています。
なお、本書執筆時点のXAMPPでは「<?」~「?>」で囲まれた部分がPHPのスクリプトとして認識されましたが、現在のXAMPPでは「<?php」~「?>」で囲む必要があるようになっています。
>2.この件については、第5章及び第6章のinstall.phpについても同じ具合なのですが、もし本の中で記入していましたら、当方のミスのため記入しているページ数を教えて下さい。
上で述べたように、本書執筆時点のXAMPPではエラーにならなかった現象なので、本の中には記述はありません。
巧くサポートされ無事ログインすることが出来ました。
さすが藤本さんですね。
ありがとうございました。
はじめまして。「作って覚えるPHP+MySQLアプリケーション」で勉強しています。
第4章の”システムにログインする”でつまづいています。ログインを試みると、下記エラーが発生します。
Warning: require_once(Auth/Auth.php) [function.require-once]: failed to open stream: No such file or directory in C:\xampp\htdocs\sample\miniblog\admin.php on line 13
admin.phpの13行目はrequire_once('Auth/Auth.php')となっていますが、Auth内にAuth.phpは存在しません。
Zend内に存在した為、試しにrequire_once('Zend/Auth.php')と修正しましたが、今度は下記エラーが発生します。
Fatal error: Class 'Auth' not found in C:\xampp\htdocs\sample\miniblog\admin.php on line 57
'Zend/Auth.php'にはAuthクラスは存在せず、またadmin.phpの57行目以降で使用されているメンバ関数も存在しません。
なにか設定方法がおかしいのでしょうか・・・。
前に進めず困っています。
>まんたろうさん
こんにちは。
何らかの原因で、Auth.phpが正しくインストールされていないようです。
正しくインストールされていれば、C:\xampp\php\PEAR\AuthフォルダにAuth.phpがあるはずです。
本の20ページの「XAMPP for Windowsでのライブラリのインストール」の手順をもう一度行ってみてください。
なお、現状のXAMPP(1.7.3)では、go-pearを行う必要はありません。したがって、20ページの手順の4~9は不要です。
早速のご回答ありがとうございます。
XAMPPのVerは1.7.3です。
また、P20の手順を試してみましたが、(4)で下記エラーが発生します。
「'go-pear'は内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
XAMPPを再インストールするしかないのでしょうか。。。
宜しくお願いいたします。
こんにちは。
繰り返しになりますが、20ページの手順4~9(go-pear)は不要です。
1~3と10以降を行ってください。
なるほど、ごめんなさい意味を履き違えていました。。。
指示通りインストールを行ったところ、無事admin.phpを実行出来ました!
ありがとうございました。
引き続き勉強に励みます。
先日「作って覚えるPHP+MySQLアプリケーション」を購入し勉強させて貰ってます。
minicartのユーザー登録を行うと、「ユーザー名かパスワードが正しくありません。」のMSGが出力されて登録情報の保存が失敗します。
商品の登録は問題なく行えるので、SQL側には問題ないと思われるのですが、原因はどのあたりが考えられますでしょうか。
※eclipseにてデバック等を行い、自分で調べようとしたのですが、スキルが足りず、質問させて頂きました。
ご教授願います。
>まさよしさん
拙著をお買い求めいただき、ありがとうございます。
これまでには、同様の質問を受けたことがありません。
そちらの環境に依存する問題のように思われ、申し訳ありませんが、解決方法は不明です。
先日、質問させて頂いた。
minicartのユーザー登録を行うと、「ユーザー名かパスワードが正しくありません。」のMSGが出力されて登録情報の保存が失敗する件。
install.phpのcustomerテーブル設定「registered」と「password」のnull項目をNOT NULL → default NULLに変更しインストールしたところ、うまくいきました。
情報共有致します。
はじめまして。
ご教授頂きたくコメントさせて頂きました。
XAMPPのVerは1.7.3です。
P.177のユーザー向けのページのログインのところで
http://localhost/sample//minicart/index.phpにアクセスしたところ、
Warning: require_once(HTTP/Session2.php) [function.require-once]: failed to open stream: No such file or directory in C:\xampp\htdocs\sample\minicart\index.php on line 11
Fatal error: require_once() [function.require]: Failed opening required 'HTTP/Session2.php' (include_path='shop;lib;c:/xampp/php/PEAR;.;C:\xampp\php\PEAR') in C:\xampp\htdocs\sample\minicart\index.php on line 11
と表示され先に進めないでいます。
初心者ですが、よろしくお願いいたします。
>kanaさん
こんにちは。
エラーメッセージからすると、HTTP/Session2.phpのファイルが見つからなくて、読み込めていない状態です。
本の20ページの手順1~3と10以降に従って、PEARの各ライブラリを正しくインストールしてください。なお、手順4~9は不要です。
お早いご回答ありがとうございました。
ご指摘頂いたとおりにした結果、エラーメッセージも出なくなり、とても助かりました!
度々すみませんが、
ユーザーログイン画面や、管理者の商品登録画面でこういったエラーメッセージが表示されるのですが、これはどこの設定を変えたらよいのでしょうか?
→Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for '9.0/no DST' instead in C:\xampp\htdocs\sample\minicart\index.php on line 156
仕事でショッピングサイトを作ることになってしまい、あまり勉強する時間もとれずに何度も質問させて頂いてる次第です。
お手数おかけ致しますが、お時間ございます時にでもご教授下さい。
よろしくお願いいたします。
>kanaさん
こんにちは。
ご質問の件ですが、PHPの設定ファイルを修正すれば解決するはずです。
XAMPPだと、Cドライブの「xampp」→「php」フォルダに、「php.ini」ファイルがあると思います。
そのファイルの中で以下の行を検索します。
この行を以下のように書き換えます。
書き換えが終わったらphp.iniファイルを保存し、Apacheを再起動します。
はじめまして。
ご教授頂きたくコメントさせて頂きました。
P176ページのminicartのインストールでつまずいています。
Webブラウザ上にminicartのinstall.phpを実行すると次のようなエラーがでます。
Warning: require_once(/Applications/MAMP/bin/php5.2/lib/php/smartySmarty.class.php) [function.require-once]: failed to open stream: No such file or directory in /Applications/MAMP/htdocs/sample/minicart/install.php on line 12
Fatal error: require_once() [function.require]: Failed opening required '/Applications/MAMP/bin/php5.2/lib/php/smartySmarty.class.php' (include_path='admin:lib:/Applications/MAMP/bin/php5.3/lib/php/PEAR:.:/Applications/M
AMP/bin/php5.2/lib/php') in /Applications/MAMP/htdocs/sample/minicart/install.php on line 12
ちなみにminiblogの方は、インストールページが表示されたので、miniblog設定を参考にしてminicartも設定したので、設定の方は間違ってないと思うのですが、ご教授願います。
また私の環境についてですが、
XAMPPではなくMAMPを使っております。
>keiさん
こんにちは。
おそらく、本の105ページのリスト4.1の書き換えで、3行目のSmartyのパスを設定する箇所で、パスの最後の「/」が抜けていると思います。
ご確認ください。
お早いご回答ありがとうございました。
ご指摘頂いたとおりにした結果、エラーメッセージも出なくなり、インストールページが表示されました。助かりました。ありがとうございます。
P89の「random」プラグインを、Smarty3へ設置すると、SmartyCompilerExceptionエラーになります。
(Smarty2)では動きます。
どこを修正すればよいでしょうか?
>Smarty3さん
こんにちは。
まず、メインのスクリプト(93ページのリスト3.67)にタイプミスがありました。申し訳ありません。
8行目を以下のように変えてください(「plugins」の「u」と「g」が逆になっていました)。
修正前:
$smarty->plguins_dir = array("./plugins");修正後:
$smarty->plugins_dir = array("./plugins");また、Smarty3での仕様変更に伴って、random関数のコードも修正する必要があります。
91ページのリスト3.66で、7行目を以下のように変えてください。
修正前
修正後
なお、上記の「get_template_vars」→「getTemplateVars」のように、Smarty3ではSmartyクラスのメソッド名が大幅に変わっています。
そのため、本書のソースコードをそのままSmarty3で利用することは、実質不可能です(PHPの設定によっては、warningが大量に出力されます)。相当な修正が必要になります。
早速のご回答ありがとうございました。
多分、Smarty3以前に出版された本なので、
対応していないのは当然だと承知していたのですが、
他に聞く当てもなく、途方にくれていました。
Smarty3を勉強してみたい、という気持ちもあったので、
丁寧に回答いただいた内容は、大変参考になりましたー
「記事の新規作成」をクリックすると以下のエラーが出るので、解決方法を教えて下さい。
Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "./templates/admin\edit_entry.tpl" on line 34 "{entries}" unknown tag "entries"' in C:\xampp\php\smarty\sysplugins\smarty_internal_templatecompilerbase.php:441 Stack trace: #0 C:\xampp\php\smarty\sysplugins\smarty_internal_templatecompilerbase.php(263): Smarty_Internal_TemplateCompilerBase->trigger_template_error('unknown tag "en...', 34) #1 C:\xampp\php\smarty\sysplugins\smarty_internal_templateparser.php(2356): Smarty_Internal_TemplateCompilerBase->compileTag('entries', Array) #2 C:\xampp\php\smarty\sysplugins\smarty_internal_templateparser.php(2846): Smarty_Internal_Templateparser->yy_r38() #3 C:\xampp\php\smarty\sysplugins\smarty_internal_templateparser.php(2946): Smarty_Internal_Templateparser->yy_reduce(38) #4 C:\xampp\php\smarty\sysplugins\smarty_internal_smartytemplatecompiler.php(51): Smarty_Internal_Templateparser->doParse(11, '??') #5 C:\xampp\php\smarty\sysplugins\smarty_internal_templatecompilerbase.php(82): Smar in C:\xampp\php\smarty\sysplugins\smarty_internal_templatecompilerbase.php on line 441
>revellさん
こんにちは。
ご質問の件ですが、おそらくSmartyのバージョン3系をお使いなのではないかと思います。
申し訳ありませんが、この本はSmartyのバージョン2系にしか対応していません。
Smartyをバージョン2系に差し替えてください。
こんにちは。ご教授させていただきたくてコメントさせていただきます。
P63のスクリプトの作成の際にこんなエラーが出ます。どうやったらエラーがなおるでしょうか?
ちなみに、私はMAMPをつかっており、MacOSXでつかってます。
Warning: require_once(XAMPP:/Applications/MAMP/bin/php5.2/lib/php/smarty/Smarty.class.php) [function.require-once]: failed to open stream: No such file or directory in /Applications/MAMP/htdocs/sample/part3/sample1/sample.php on line 3
Fatal error: require_once() [function.require]: Failed opening required 'XAMPP:/Applications/MAMP/bin/php5.2/lib/php/smarty/Smarty.class.php' (include_path='.:/Applications/MAMP/bin/php5.2/lib/php') in /Applications/MAMP/htdocs/sample/part3/sample1/sample.php on line 3
>keiさん
こんにちは。
エラーメッセージからすると、おそらく「/Applications/MAMP/bin/php5.2/lib/php/smarty」のディレクトリにSmartyのファイルを入れられたのではないかと思います。
そうであれば、64ページのリスト3.3の2行目を以下のように書いてください。
define("SMARTY_DIR", "/Applications/MAMP/bin/php5.2/lib/php/smarty/");