拙著「WordPress Web開発逆引きレシピ」が発売されました。
WordPressの様々なカスタマイズについて、逆引きの形式で取り上げています。
PHP 7.0での動作確認も行っています。
新刊「作って覚えるPHP+MySQLアプリケーション」明日発売
当方の新刊の「作って覚える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を絡めた「グルメブログ」の作成
Movable Typeのプラグイン集「MT Cloud Starter Kit」をぜひご利用ください
のんさん
勉強していくのに分厚くなく、それでいて解説もありさらにブログだけでなく、ショッピングシステムやマッシュアップが作れる勉強ができる思っていた通りの本が見つかった:pp_01.gif:とうれしくなり買ってみました!
張り切って勉強はじめたのですが、どうにもこうにも動かず勉強が止まってしまい困っています。
突然で迷惑だとは思うのですが、ご教授いただけましたらうれしく思います。
今p56のところなのですが、
print("/n");
とかいてある所にエラーが出ます。
上記の記入は本の通りだと思うのですが・・・
MDB2クラスの組み込みやDSNの設定がおかしいのでしょうか?
エラーメッセージは、「Parse error: syntax error, unexpected T_LNUMBER in C:\xampp\htdocs\samp2\test.php on line 67」です。
のんさん
エラーの出るところのtagがおかしかったですすいません。
レコードの内容の表示で
テーブルtagの部分です。
壱からのんさんへの返信
>のんさん
こんにちは。拙著をご購入いただきありがとうございます。
ご質問の件ですが、リストは手で入力されたのでしょうか。
文法エラー(syntax error)のエラーメッセージですので、手で入力されたのだとすれば、入力ミスが考えられます。
なお、p56のリストのサンプルファイルは、「part2」フォルダにある「dbtest.php」です。
のんさん
お返事有難うございます。
入力ミスがあったようでバグを直したら今度は、データベースの接続に失敗しましたと出てきました。。
ディレクトリは自分で違うところにおいたので違っています。ややこしくてすいません。
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ファイルを書き換えていただく必要があります。
ジョーカー
ゴミ箱にあるminiblogを元に戻すしてから、インストール実行をおこなってみたら、インストールは設定済みと表示されました。
adminの画面からアクセスすると上記のエラー表示は消えておりましたが、miniblog.phpに書いてあった管理者のユーザーネームとパスワードを入力してみたところ、ミニブログの表示の下に「データベース接続エラー」と表示されました。
接続できない原因がわかりません。
なにか思いわたるところがあれば、ご指導願いたいのですが
ジョーカーからジョーカーへの返信
>>ジョーカーさん
>こんにちは。
>サンプルのスクリプトは、XAMPP for WindowsをCドライブのxamppフォルダにインストールした場合を想定して作ってあります。
>上記以外のフォルダにインストールしている場合は、本の105ページの「パスの設定」にしたがって、set_path.phpファイルを書き換えていただく必要があります。
コメントが行き違いになってスイマセン
再インストール先はc:¥xamppにしました。
壱からジョーカーへの返信
>ジョーカーさん
こんにちは。
以下のような原因が考えられます。
また、データベースの作成後に、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行目を以下のように書き換えて、エラーメッセージを表示するようにしてみると、何か分かるかも知れません。
山中 智裕
早速のご連絡ありがとうございます。
P.56の4行目を
と書き換えたところ、
「データベースへの接続に失敗しましたMDB2 Error: not found」
と表示されました。
これで何かお分かりでしたら、何卒ご教授くださいますよう
よろしくお願い申し上げます。
壱から山中 智裕への返信
>山中様
こんにちは。
先ほど書き換えた行を、再度以下のように書き換えてみてください。
より詳細なエラーメッセージが表示されると思います。
山中 智裕
先ほど教えていただいたスクリプトに書き換えたところ
次のようなメッセージが表示されました。
「データベースへの接続に失敗しました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ブラウザでアクセスすると、動作を見ることができます。
sugi
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・・・」の行を以下のように書き換えます。
祐介
はじめまして
「作って覚えるPHP+MySQLアプリケーション」を購入し勉強させて頂いてます。
サンプルプログラムのminiblogなのですがinstallが終わり、ログイン後カテゴリの作成をして一覧をクリックしても作成したカテゴリが表示されません。
カテゴリ作成終了時には保存されましたと出て、MySQLを確認するとレコードは登録されています。
カテゴリだけではなく記事や画像、minicartでも同じ結果になります。
お忙しい中申し訳ございませんがご教授の程宜しくお願い申し上げます。
壱から祐介への返信
>祐介さん
こんにちは。
こちらでは現象を再現することができませんでした。
申し訳ありませんが、そちらの環境に固有の問題ではないかと思われます。
仁科から壱への返信
丁寧で素早い対応ありがとうございました。
おそらく、当方のMAMPは様々な教科書によってつぎはぎの設定がなされてしまっているため、異常な反応をしてしまったのでは、と思われます。
ただ、事情があってマックがネットにつながっていないため、今回お示しいただいたMAMP等の新規インストールによる検証はできませんでした。またネットにつながってからご報告させていただきたいと思います。
s.kiyotugu
第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への返信
>s.kiyotuguさん
こんにちは。
ご質問の件ですが、46番のコメントの通りに、各スクリプトの書き換えを行ってください。
s.kiyotuguからs.kiyotuguへの返信
サポートありがとうございます。
下記の様に単純な質問なのですが、合わせて宜しくお願いいたします。
質問
1.エラーメッセージに”C:\xampp\htdocs\sample\miniblog\install.php on line 47
”となってますが、サポートのとおり”46番のコメントの通りに…”で宜しいでしょうか?
2.この件については、第5章及び第6章のinstall.phpについても同じ具合なのですが、もし本の中で記入していましたら、当方のミスのため記入しているページ数を教えて下さい。
ご回答宜しくお願いいたします。
壱からs.kiyotuguへの返信
>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ではエラーにならなかった現象なので、本の中には記述はありません。
s.kiyotuguからs.kiyotuguへの返信
巧くサポートされ無事ログインすることが出来ました。
さすが藤本さんですね。
ありがとうございました。
まんたろう
はじめまして。「作って覚える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に変更しインストールしたところ、うまくいきました。
情報共有致します。
kana
はじめまして。
ご教授頂きたくコメントさせて頂きました。
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への返信
>kanaさん
こんにちは。
エラーメッセージからすると、HTTP/Session2.phpのファイルが見つからなくて、読み込めていない状態です。
本の20ページの手順1~3と10以降に従って、PEARの各ライブラリを正しくインストールしてください。なお、手順4~9は不要です。
kana
お早いご回答ありがとうございました。
ご指摘頂いたとおりにした結果、エラーメッセージも出なくなり、とても助かりました!
度々すみませんが、
ユーザーログイン画面や、管理者の商品登録画面でこういったエラーメッセージが表示されるのですが、これはどこの設定を変えたらよいのでしょうか?
→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への返信
>kanaさん
こんにちは。
ご質問の件ですが、PHPの設定ファイルを修正すれば解決するはずです。
XAMPPだと、Cドライブの「xampp」→「php」フォルダに、「php.ini」ファイルがあると思います。
そのファイルの中で以下の行を検索します。
この行を以下のように書き換えます。
書き換えが終わったらphp.iniファイルを保存し、Apacheを再起動します。
kei
はじめまして。
ご教授頂きたくコメントさせて頂きました。
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への返信
>keiさん
こんにちは。
おそらく、本の105ページのリスト4.1の書き換えで、3行目のSmartyのパスを設定する箇所で、パスの最後の「/」が抜けていると思います。
ご確認ください。
kei
お早いご回答ありがとうございました。
ご指摘頂いたとおりにした結果、エラーメッセージも出なくなり、インストールページが表示されました。助かりました。ありがとうございます。
Smarty3
P89の「random」プラグインを、Smarty3へ設置すると、SmartyCompilerExceptionエラーになります。
(Smarty2)では動きます。
どこを修正すればよいでしょうか?
壱からSmarty3への返信
>Smarty3さん
こんにちは。
まず、メインのスクリプト(93ページのリスト3.67)にタイプミスがありました。申し訳ありません。
8行目を以下のように変えてください(「plugins」の「u」と「g」が逆になっていました)。
修正前:
修正後:
また、Smarty3での仕様変更に伴って、random関数のコードも修正する必要があります。
91ページのリスト3.66で、7行目を以下のように変えてください。
修正前
修正後
なお、上記の「get_template_vars」→「getTemplateVars」のように、Smarty3ではSmartyクラスのメソッド名が大幅に変わっています。
そのため、本書のソースコードをそのままSmarty3で利用することは、実質不可能です(PHPの設定によっては、warningが大量に出力されます)。相当な修正が必要になります。
Smarty3さん
早速のご回答ありがとうございました。
多分、Smarty3以前に出版された本なので、
対応していないのは当然だと承知していたのですが、
他に聞く当てもなく、途方にくれていました。
Smarty3を勉強してみたい、という気持ちもあったので、
丁寧に回答いただいた内容は、大変参考になりましたー
revell
「記事の新規作成」をクリックすると以下のエラーが出るので、解決方法を教えて下さい。
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への返信
>revellさん
こんにちは。
ご質問の件ですが、おそらくSmartyのバージョン3系をお使いなのではないかと思います。
申し訳ありませんが、この本はSmartyのバージョン2系にしか対応していません。
Smartyをバージョン2系に差し替えてください。
kei
こんにちは。ご教授させていただきたくてコメントさせていただきます。
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への返信
>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/");
yamachan
こんにちは山本と申します。
大変参考にさせて頂いております。
早速ですがご教授頂きたくコメントさせて頂きました。
minicartについてですが・・・
初期画面index.phpのログイン画面にて
間違ったIDやパスを入力すると
”ユーザー名かパスワードが正しくありません。”と
表示されるのですが・・・
商品をカートに入れた後レジ画面に進みその後
ログイン画面にて間違ったIDやパスを入力しても
”ユーザー名かパスワードが正しくありません。”という
メッセージは表示されません。
コードを確認しますと
/minicart/templates/shop/login.tpl の7行目には
確かに
{if $login_msg}
{$login_msg}
{/if}
と入っているのでメッセージは出るはずです。
CSSコードが必要なのかなと思い
/* サイドバーのウィジェット */
をDIVで適用させたのですがメッセージは表示されません。
buy_login.php辺りに追記が必要なのかな?と思い
いろいろ試しているのですが素人なものでエラーばかりです。
どこに問題があるのでしょうか?
先生どうぞよろしくお願い致します。
壱からyamachanへの返信
>yamachanさん
こんにちは。
不具合をご指摘いただき、ありがとうございます。
以下の2か所を修正してください。
●minicart/shop/buy_login.phpの8行目付近
・修正前
・修正後
●minicart/shop/buy_comfirm.phpの4行目
・修正前
・修正後
yamachan
先生早速、ご教授頂きましてありがとうございました。
その通りに変更し表示させることができました。
数日この件で悩んでいたので本当にすっきりしました。
又、もしも簡易に設定が可能であればですが・・・
顧客ログイン後、顧客自身が顧客情報の修正(編集)が
できればこのminicartは完璧なのですが・・・
非常に勝手なお願いをしているのは分かっているの
ですが・・・自分なりにあちこちいじって
編集画面を作成しては見たものの・・・
やはり素人ですので、あちこちにエラーが出てしまう
状況です。先生のお時間が許されるようであれば
ご教授頂けると本当に助かります。
shizupi
先日、「作って覚えるPHP+MySQLアプリケーション」を購入させていただきました。
さっそく勉強していたのですがP.55のPHPが上手く表示されませんでした。
都道府県,性別,送信ボタン,の後にわけのわからない文が数十行にわたって表示され、最後の行に「名前,性別,都道府県,住所,電話番号」と表示されているため、データベースの接続には失敗していないようです。
そこでPEARのインストールがされていないのだと考え、P.20を参考にインストールを試みました。以前のコメントにもあるように手順4-9を省き手順10から行いました。
手順10「pear install -f MDB2」を実行するですが、
実行時に最後の行に表示されたのが
ERROR: failed to mkdir C:\php\pear\data\Auth\Auth\Frontend
とエラーになったのでおそらくインストールは正しく行えてないものだと思います。
どうか、その点についてご教授お願いいたします。
壱からshizupiへの返信
>shizupiさん
拙著をお買い求めいただき、ありがとうございます。
ご質問の件ですが、この本は4年以上前の本で、現在とは環境がいろいろと変わっています。
お手数ですが、現在インストールされているXAMPPをアンインストールし、本の当時のXAMPP(バージョン1.6.8)をインストールしてください。以下からダウンロードできます。
http://sourceforge.net/projects/xampp/files/XAMPP%20Windows/1.6.8/xampp-win32-1.6.8-installer.exe/download
また、Smartyはバージョン2.6.27をお使いください。以下からダウンロードできます。
http://www.smarty.net/files/Smarty-2.6.27.zip
shizupiからshizupiへの返信
返信ありがとうございました。
新しいバージョンをアンインストールし、バージョン1.6.8をインストールしテキスト通りに行った結果問題なく表示されました。
ご教授ありがとうございました。
たく
初めまして。
本書でPHPの勉強を頑張っています♪
タイトルと通り、リスト2.45のソースを実行すると以下のようなエラーが出ます。
Warning: require_once(/Applications/XAMPP/xamppfiles/lib/php/pear/MDB2.php) [function.require-once]: failed to open stream: Permission denied in /Applications/XAMPP/xamppfiles/htdocs/study/form1.php on line 21
Fatal error: require_once() [function.require]: Failed opening required 'MDB2.php' (include_path='.:/Applications/XAMPP/xamppfiles/lib/php:/Applications/XAMPP/xamppfiles/lib/php/pear:/Applications/XAMPP/xamppfiles/lib/php/pear') in /Applications/XAMPP/xamppfiles/htdocs/study/form1.php on line 21
いくら調べても解決しません・・・
よろしくお願いします!
壱からたくへの返信
>たくさん
拙著をお買い求めいただき、ありがとうございます。
エラーメッセージからすると、MDB2.phpのパーミッションがないということですので、MDB2.phpのパーミッションを変えて、全ユーザーからアクセスできるようにすれば良いはずです。
なお、MDB2.phpだけでなく、他のファイルでも同様のエラーが出ると思いますので、XAMPPのインストール先全体のパーミッションを変えておくと良いと思います。
たく
素早い対応ありがとうございます!
こちらの他の人のコメント等も参考にしながら、データベースには接続できました。
しかし、表が表示されず以下の様にチェックを入れたところ、「チェック2」と表示されませんでした。
//プリペアド・ステートメントの準備
$sql = 'select * from address where pref=? and sex=?' ;
$type = array('text','text') ;
echo "チェック1" ;
$sth = $mdb2->prepare($sql, $type) ;
echo "チェック2" ;
つまり
$sth = $mdb2->prepare($sql, $type) ;
で止まっています・・・
エラーも表示されないので原因が分かりません。
よろしくお願いします!
壱からたくへの返信
>たくさん
こんにちは。
エラーメッセージが出ずにプログラムが止まるとすると、php.iniの「display_errors」の行が「display_errors=Off」になっていると思います。
XAMPPのインストール先ディレクトリのどこかにphp.iniファイルがありますので、その中の「display_errors=Off」の行を探して、「display_errors=On」に書き換えた後、Apacheを再起動してください。
なお、php.iniファイルの位置を調べるには、以下のようにします。
・http://localhost/のドキュメントルートに対応するディレクトリに、以下の内容のphpファイルを設置します。
<?php phpinfo(); ?>
・Webブラウザで上のphpにアクセスし、phpの情報を表示します。
・情報の先頭の方に「Loaded Configuration File」の欄があり、そこにphp.iniファイルのパスが表示されます。
takeda
勉強させてもらっております。
P54のレコードの変更が伴う場合についてですが、リスト2.42の3行を
dbtest.phpの// プリペアド・ステートメントの準備47から49行目に置き換えて実行したのですがFatal error: Call to a member function fetchRow() on a non-object ・・・dbtest.php on line 63 というエラーが返ってきます。何がおかしいのでしょうか?
壱からtakedaへの返信
>takedaさん
こんにちは。
fetchRowメソッドは、SQLのselect文で読み込んだレコードを、1件ずつ取り出す働きをします。
update文はレコードを更新するだけで、読み込みは行われないので、お書きになったようなエラーになります。
update文を実行した結果を確認したいということであれば、updateしたレコードをselect文で読み込む必要があります。
takedaからtakedaへの返信
早速のお返事ありがとうございます。
いろいろ試してみました。ということは本の通りに変更しただけでは更新はできないということでしょうか?別のページにサンプルがあるのでしょうか?
壱からtakedaへの返信
>takedaさん
こんにちは。
94番のコメントの通り、updateした結果を表示するには、selectを行う必要があります。
なお、サンプルはありません。
あきおS
はじめまして。
本書にて、phpを使ったプログラムを実行しようと試みている者です。
XAMPPなどパソコン環境でのテストは行わず、最初からレンタルサーバにて試しているのですが、タイトルの通り本書のP.55のリスト2.45のスクリプトを実行すると、以下のようなエラーが出ます。
----------
Warning: require_once(MDB2.php) [function.require-once]: failed to open stream: No such file or directory in /home/hakodate-asahiya/www/php_sample/part2/dbtest.php on line 20
Fatal error: require_once() [function.require]: Failed opening required 'MDB2.php' (include_path='/home/hakodate-asahiya/pear/PEAR') in /home/hakodate-asahiya/www/php_sample/part2/dbtest.php on line 20
----------
PEARは自分で設置しました。
また、MDB2やそのライブラリは、ターミナルから "pear install MDB2" などで確認しましたが、"already installed" と出ましたのでインストールはされていると思っておりました。
ところが、findコマンドで "MDB2.php" を検索すると、見つかりませんでした。
その後、ルートディレクトリから検索すると、"/usr/local/php/5.2.17/lib/php" にあるようでしたので、スクリプトの絶対パスを、
require_once('/usr/local/php/5.2.17/lib/php/MDB2.php');
…にして実行してみましたが、
データベースへの接続に失敗しましたMDB2 Error: insufficient permissions
…と表示されてしまいました。
"MDB2.php" の置き場所などに、問題があるのでしょうか?
なお、レンタルしているサーバは、さくらインターネットになります。
ご回答、よろしくお願い致します。
壱
>あきおSさん
拙著をお買い求めいただき、ありがとうございます。
ご質問の件ですが、「権限が不十分」というエラーです。
DSNで指定しているユーザーに対して、MySQL側に権限を与えていないものと思われます。
phpMyAdmin等を使って、MySQL側でユーザーに権限を与えれば解決できると思います。
あきおSから壱への返信
ご回答ありがとうございました。
phpMyadminにて確認したところ、databaseの名前が若干違ったようです。
修正したところ、先に進みました。
その後、以下のようなエラーが出てしまいました。
----------
Fatal error: Call to undefined method MDB2_Error::execute() in /home/hakodate-asahiya/www/php_sample/part2/dbtest.php on line 57
----------
ネットを参考に、以下の数行(2)をデバッグ用に1行ずつ挿入し確認したところ、(1)の行でエラーが出ているようで、(3)のようなメッセージが出てきました。
(1)の行に関しては、特に変更しておりません。
現在、いろいろ調べておりますが、できれば対処方法を教えていただければ幸いです。
----------
(1)
$sth = $mdb2->prepare($sql, $type);
----------
(2)
if (PEAR::isError($sth)){
echo $sth->getDebugInfo();
exit();
}
----------
(3)
_doQuery: [Error message: Could not execute statement] [Last executed query: PREPARE MDB2_STATEMENT_mysql_fcf44816d8e764f518f6556bf39e393a FROM MDB2 Error: not found] [Native code: 1064] [Native message: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MDB2 Error: not found' at line 1]
----------
壱
>あきおSさん
こんにちは。
エラーメッセージに「You have an error in your SQL syntax」とあることから、SQL文に文法上の間違いがあると思われます。
SQLを見直してみてください。
あきおSから壱への返信
ご回答ありがとうございます。
リスト2.45の「プリペアド・ステートメントの準備」のセクション以降、テキストのままであるのに、上手く動作しないということは、そもそもさくらインターネット上に設置してあるMDB2がプリペアド・ステートメントに対応してない…などの問題があるのでしょうか?
あるいは、クオートの打ち方などに工夫が必要でしょうか?
念のため、リスト2.45の該当部分を掲載します。
No.99の書き込みの、デバッグ用の(2)は、下記★部分に挿入しました。
----------
// プリペアド・ステートメントの準備
$sql = 'select * from address where pref = ? and sex = ?';
$type = array('text', 'text');
$sth = $mdb2->prepare($sql, $type);
★
// プリペアド・ステートメントの実行
$data = array($_POST['pref'], $_POST['sex']);
$res = $sth->execute($data);
if (PEAR::isError($res)) {
exit('selectに失敗しました');
----------
ヤギ
PHPの勉強させてもらっています。
XAMPP、smartyとも最新バージョンで動かそうとしてます。
P105の
http://localhost/sample/miniblog/install.php
を実行すると
Notice: Undefined index: submit in C:\xampp\htdocs\sample\miniblog\install.php on line 28
Notice: Undefined index: header_insert in C:\xampp\htdocs\sample\miniblog\templates_c\admin\10a26daa88975dd0e07b0182f6d4fefcfec63579.file.header.tpl.php on line 38
Notice: Trying to get property of non-object in C:\xampp\htdocs\sample\miniblog\templates_c\admin\10a26daa88975dd0e07b0182f6d4fefcfec63579.file.header.tpl.php on line 38
ミニブログ
インストール
Notice: Undefined index: show_menu in C:\xampp\htdocs\sample\miniblog\templates_c\admin\10a26daa88975dd0e07b0182f6d4fefcfec63579.file.header.tpl.php on line 49
Notice: Trying to get property of non-object in C:\xampp\htdocs\sample\miniblog\templates_c\admin\10a26daa88975dd0e07b0182f6d4fefcfec63579.file.header.tpl.php on line 49
と表示されます。何が原因でしょうか?
よろしくお願いいたします。
壱からヤギへの返信
>ヤギさん
拙著をお買い求めいただき、ありがとうございます。
ご質問の件ですが、この本は出版してから5年近く経過していています。現在のPHPやSmartyでは5年前と変わっているところが多々ありますので、そのままで動作させるのは無理だと思います。
申し訳ありませんが、XAMPPは本の執筆時点のもの(バージョン1.6.6a)、Smartyはバージョン2系(最新版は2.6.27)をお使いください。
ヤギからヤギへの返信
了解です。
別のPCにご指摘のバージョンのものをインストールして実行しました。
ただし、同じものがなく近いバージョンを使用しました。
XAMPP 1.6.8
Smarty 2.6.27
miniblogのインストールスクリプトまではうまくいきましたが、
admin.phpで以下のエラーとなりました。
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
Fatal error: require_once() [function.require]: Failed opening required 'Auth/Auth.php' (include_path='admin;lib;c:/xampp/php/PEAR;.;C:\xampp\php\pear\') in C:\xampp\htdocs\sample\miniblog\admin.php on line 13
すみませんが、お教えください。
よろしくお願いいたします。
>>ヤギさん
>拙著をお買い求めいただき、ありがとうございます。
>
>ご質問の件ですが、この本は出版してから5年近く経過していています。現在のPHPやSmartyでは5年前と変わっているところが多々ありますので、そのままで動作させるのは無理だと思います。
> 申し訳ありませんが、XAMPPは本の執筆時点のもの(バージョン1.6.6a)、Smartyはバージョン2系(最新版は2.6.27)をお使いください。
壱からヤギへの返信
>ヤギさん
こんにちは。
Pearのライブラリインストールがうまくいっていないと思います。
本の20ページの手順に沿って、Pearのライブラリをインストールしてください。
なお、現状のAuthのライブラリでは、以下のフォルダをあらかじめ作っておかないと、正しくインストールできないようです。
Cドライブ→「php」フォルダ→「pear」フォルダ→「Auth」フォルダ→「Auth」フォルダ→「Frontend」フォルダ
やまぐち
作って覚えるphp+mysqlアプリケーションを書店で購入した者です。
55ページのコードを実行すると都道府県と性別のテキストボックスの中に「
Notice: Undefined index: pref in C:\xampp\htdocs\sample\part2\dbtest.php on line 10
」
と表示されます。
このエラーはどのように回避すればよいでしょうか?
ちなみにこのテキストボックスの中を削除し、都道府県「東京都」、性別「男」と入力し検索ボタンを押すと本書の通りの結果になります。
壱からやまぐちへの返信
>やまぐちさん
こんにちは。
dptest.phpの10~11行目を以下のように書き換えてください。
・変更前
・変更後
やまぐちからやまぐちへの返信
さっそく返信ありがとうございます。
都道府県" /> 性別"/>そのままコピペし、実行してみましたが、画面が真っ白になりました。
ちなみにタグで囲んでしまってよかったでしょうか??
壱からやまぐちへの返信
>やまぐちさん
こんにちは。
htmlspecialchars関数の閉じかっこが重複していました。申し訳ありません。
以下のように修正してください。
やまぐちからやまぐちへの返信
さきほどのP55の件はおかげさまで解決しました。ありがとうございました。
今度はP105のミニブログでつまずいてしまいました。
install.phpをブラウザで実行したところ次のエラーが表示されてしまいました。
Notice: Undefined index: submit in C:\xampp\htdocs\soshi-sample\miniblog\install.php on line 27
Notice: Undefined index: header_insert in C:\xampp\htdocs\soshi-sample\miniblog\templates_c\admin\10a26daa88975dd0e07b0182f6d4fefcfec63579.file.header.tpl.php on line 38
Notice: Trying to get property of non-object in C:\xampp\htdocs\soshi-sample\miniblog\templates_c\admin\10a26daa88975dd0e07b0182f6d4fefcfec63579.file.header.tpl.php on line 38
ミニブログ
インストール
Notice: Undefined index: show_menu in C:\xampp\htdocs\soshi-sample\miniblog\templates_c\admin\10a26daa88975dd0e07b0182f6d4fefcfec63579.file.header.tpl.php on line 49
Notice: Trying to get property of non-object in C:\xampp\htdocs\soshi-sample\miniblog\templates_c\admin\10a26daa88975dd0e07b0182f6d4fefcfec63579.file.header.tpl.php on line 49
送信ボタン
Notice: Undefined index: show_menu in C:\xampp\htdocs\soshi-sample\miniblog\templates_c\admin\91b04329a6a5287c4f0597cb7cb463ea5cf24347.file.footer.tpl.php on line 29
Notice: Trying to get property of non-object in C:\xampp\htdocs\soshi-sample\miniblog\templates_c\admin\91b04329a6a5287c4f0597cb7cb463ea5cf24347.file.footer.tpl.php on line 29
初心者のためどこをどのように修正したらよいかわからず困っております。
ご教示いただきたいです。
やまぐち
さきほど質問しましたが、過去ログを見ましたところ同じご質問をされている方がいましたので、そちらを参考に考えてみます。
佐々木
作って覚えるPHP+MySQLを購入させて頂きました。素人です。レンタルサーバーを利用しています。minicartを設置したいのですが、install.phpの後、管理画面にログインできません。以下のエラーが出ます。19pのマジッククォートもオフにしています。Smarty2係を使用しています。何が原因なのでしょうか?
Warning: include(templates_c/%%88^882^88279A9A%%minicart.php.php) [function.include]: failed to open stream: No such file or directory in /home/lost/kinshi/Smarty/libs/plugins/function.config_load.php on line 109
Warning: include() [function.include]: Failed opening 'templates_c/%%88^882^88279A9A%%minicart.php.php' for inclusion (include_path='admin:lib:/home/lost/kinshi/PEAR/:.;/usr/local/lib/php:/home/lost/kinshi/PEAR/php') in /home/lost/kinshi/Smarty/libs/plugins/function.config_load.php on line 109
Warning: include(templates_c/%%95^954^9541A83B%%minicart.php%7CLogin.php) [function.include]: failed to open stream: No such file or directory in /home/lost/kinshi/Smarty/libs/plugins/function.config_load.php on line 109
Warning: include() [function.include]: Failed opening 'templates_c/%%95^954^9541A83B%%minicart.php%7CLogin.php' for inclusion (include_path='admin:lib:/home/lost/kinshi/PEAR/:.;/usr/local/lib/php:/home/lost/kinshi/PEAR/php') in /home/lost/kinshi/Smarty/libs/plugins/function.config_load.php on line 109
Warning: include(templates_c/%%BC^BC9^BC9B6E40%%minicart.php%7CDatabase.php) [function.include]: failed to open stream: No such file or directory in /home/lost/kinshi/Smarty/libs/plugins/function.config_load.php on line 109
Warning: include() [function.include]: Failed opening 'templates_c/%%BC^BC9^BC9B6E40%%minicart.php%7CDatabase.php' for inclusion (include_path='admin:lib:/home/lost/kinshi/PEAR/:.;/usr/local/lib/php:/home/lost/kinshi/PEAR/php') in /home/lost/kinshi/Smarty/libs/plugins/function.config_load.php on line 109
壱
>佐々木さん
こんにちは。
拙著をお買い求めいただき、ありがとうございます。
ご質問の件ですが、「config_load.phpファイルが見つからない」というエラーが出ています。
このファイルはSmartyに含まれているファイルなので、おそらくSmartyのアップロードが正しくできていない状態だと思います。
佐々木
早速の返信ありがとうございます。再度、Smarty-2.6.26をダウンロードしてフォルダごとレンタルサーバーにアップロードしました。付属のpart3/sanmple1/sample.phpを実行すると、ちゃんと時刻も表示されたのですが、minicartのみ上記エラーが出てログインできません。
/Smarty/libs/plugins/function.config_load.phpはちゃんと入っています。
いったい何が問題なのでしょうか?
壱から佐々木への返信
>佐々木さん
こんにちは。
minicartディレクトリにあるadmin.phpの9行目を、以下のように変えてみてください。
佐々木
minicartのsendmailがレンタルサーバーでは使用できません。send_mail.phpをPHPメールフォームに簡単に変更できないでしょうか?仮登録などのメールが届く設定になっているので、ただのPHPメールフォームではこの本を買った意味がなくなってしまいます。なんとかminicartを活かしたいのですが方法はないでしょうか?
壱
>佐々木さん
「レンタルサーバーでは使用できません」とのことですが、具体的にどのような状況でしょうか。
PHP標準のmail関数を使ってメール送信しているので、メール送信ができないとなると、レンタルサーバー側の設定の問題だと思われます。
他のレンタルサーバーに変えてみてください。