[問合せ] PHP4で、4章6を正しく表示できない

問合せ
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();

 

コメント

  1. 山本浩 より:

    初めまして、書店で手に取りやりたいことが「まさに書かれていた!」ので購入させていただきました。

    サンプルを実行すると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の中身を確認すると文字化けしているなどの理由からです。

  2. 青木 より:

    ご質問ありがとうございます!

    (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とパスワードの入力画面が表示されると思います。

  3. 山本浩 より:

    アドバイスありがとうございます!
    (1)については、アドバイス通り
    $CONFIG[‘dsn’] = ‘mysql://root:xxxx@localhost/smartybook’
    と書き換えたところ正常に表示されました。ありがとうございました。
    (2)については、未確認です。(仕事が休みのときにでも確認してみます)

    ありがとうございました。取り急ぎお礼まで

  4. 山本浩 より:

    追加です。
    (2)についてもアドバイス通り
    $cfg[‘Servers’][$i][‘auth_type’] = ‘cookie’;
    と変更すると正常にユーザIDとパスワードの入力画面が表示されました。

    ありごとうございました。

タイトルとURLをコピーしました