問合せ
PHP4で、4章6の193ページを正しく表示できません。
回答
原因
chapter4_6/SortNavigator.class.phpで、http_build_query関数を呼んでいます。しかし、この関数はPHP5以降のため、PHP4ではエラーになります。
対策
php5func.zip をダウンロード、解凍して、chapter4_6/php5func.php にコピーしてください。
次に、chapter4_6/index.php を修正します。
(修正前)
require_once( './config.php' ); $smarty = new Smarty();
を、次のように赤太字の部分を挿入してください。
(修正後)
require_once( './config.php' );
if ( PHP_VERSION < "5" ) {
require_once( './php5func.php' );
}
$smarty = new Smarty();
コメント
初めまして、書店で手に取りやりたいことが「まさに書かれていた!」ので購入させていただきました。
サンプルを実行するとDB Error: connect failedと表示されます。
解決策をアドバイス願えれば幸いです。
【現象】
p193のサンプルを、次のように実行
–>http://localhost/smartybook/chapter4_6/index.php
エラーメッセージ
–>DB Error: connect failed
【私なりに考えたこと】
1.mysqlにパスワードが設定されているで拒否された(以前、設定したので)
パスワードはxxxxです。
2.データベースへの接続パスが適切でないので拒否された
調べていくとp192の解説にある
$CONFIG[‘dsn’] = ‘mysql://root@localhost/smartybook’;
を自宅PC環境に合わさなければいけないように思います。
【自宅PC環境】
自宅PC環境でsmartybookデータベースを作成すると次のようなファイルが4つ出来ました。
C:xamppmysqldatasmartybookcms.MYD
C:xamppmysqldatasmartybookcms.frm
C:xamppmysqldatasmartybookcms.MYI
C:xamppmysqldatasmartybookdb.opt
お忙しいところすみませんが、アドバイス願えれば幸いです。
※【追加情報】
関係ないとは思いますが、解説書とことなることをしたのでご報告です。
http://localhost/phpmyadmin/ を実行すると
エラーメッセージ
MySQL サーバに接続しようとしましたが拒否されました。config.inc.php のホスト、ユーザ名、パスワードが MySQL サーバの管理者から与えられた情報と一致するか確認してください
#1045 – Access denied for user ‘root’@’localhost’ (using password: NO)になりました。
よって、別のソフト(SQL Buddy)を使いデータを作成しました。
smartybookデータベースのcmsテーブルへのデータ追加は手入力で行いました。
理由は、インポートは正常に完了(9件)するが実際にデータが存在しない
data.csvの中身を確認すると文字化けしているなどの理由からです。
ご質問ありがとうございます!
(1) 推測のとおり、rootのパスワードを設定しているためだと思います。パスワードをxxxxとすると、
$CONFIG[‘dsn’] = ‘mysql://root@localhost/smartybook’
を
$CONFIG[‘dsn’] = ‘mysql://root:xxxx@localhost/smartybook’
としてください。
(2) phpmyadminでログインできない件ですが、C:xamppphpmyadminconfig.inc.php を編集すると、ログインできるかもしれません。
(2-1) もし、このファイルがなければ、C:xamppphpmyadminconfig.sample.inc.php をコピーして、config.inc.php を作ってください。
(2-2) config.inc.phpをテキストエディタで開いてください。
$cfg[‘Servers’][$i][‘auth_type’] = —省略 —
の行を探してください。この行を
$cfg[‘Servers’][$i][‘auth_type’] = ‘cookie’;
としてください。ユーザIDとパスワードの入力画面が表示されると思います。
アドバイスありがとうございます!
(1)については、アドバイス通り
$CONFIG[‘dsn’] = ‘mysql://root:xxxx@localhost/smartybook’
と書き換えたところ正常に表示されました。ありがとうございました。
(2)については、未確認です。(仕事が休みのときにでも確認してみます)
ありがとうございました。取り急ぎお礼まで
追加です。
(2)についてもアドバイス通り
$cfg[‘Servers’][$i][‘auth_type’] = ‘cookie’;
と変更すると正常にユーザIDとパスワードの入力画面が表示されました。
ありごとうございました。