PHP、Smarty、ケータイサイトについて発信中。書籍 「Smarty動的webサイト構築入門」(技術評論社) 好評発売中
RSS icon Home icon
  • [問合せ] 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();

    Smarty動的Webサイト構築入門
    Amazon.co.jpの詳細ページへ

     

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

    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:\xampp\mysql\data\smartybook\cms.MYD
      C:\xampp\mysql\data\smartybook\cms.frm
      C:\xampp\mysql\data\smartybook\cms.MYI
      C:\xampp\mysql\data\smartybook\db.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:\xampp\phpmyadmin\config.inc.php を編集すると、ログインできるかもしれません。
      (2-1) もし、このファイルがなければ、C:\xampp\phpmyadmin\config.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とパスワードの入力画面が表示されました。

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

    Leave a reply