- 締切済み
別ファイルのfunction
別ファイルのfunctionを使いたいのですが3つのfunctionのうちsql()しかつかえません。 まだ作成とちゅうでfunctonがつかえるかの確認中です。共通でつかいたいのできた画面によって表示する項目をかえるためにテンプレートで制御してます。sqlから配列を作ってpagerでリスト表示しようとしてます。 sakusei.php <? //sql作成 function sql(){ $sql = "select * from shop_t where point=4"; $sql = $sql." order by id asc"; return $sql; } //配列作成 function hairetu(){ $list_data[] = array( "id"=>$row["id"], "name"=>$row["name"], "address"=>$row["address"], "tel"=>$row["tel"], "point"=>$row["point"], "a1"=>$row["a1"]); return $data; } //テンプレート選択 function tmple(){ $tpl="./sample.tpl"; return $tpl; } ?> sample.php <?php session_start(); require_once("sakusei.php"); @ini_set('include_path', './includes/Smarty'.PATH_SEPARATOR.ini_get('include_path')); @ini_set('include_path', './includes/'.PATH_SEPARATOR.ini_get('include_path')); require_once("DB.php"); require_once("Pager/Pager.php"); require_once("Smarty/libs/Smarty.class.php"); //新しい画面からきたときの処理 if(isset($_POST[db])){ session_unset(); } if(isset($_SESSION["db"])){ } else { $_SESSION["db"]=$_POST[db]; } if(isset($_SESSION["basyo"])){ } else { $_SESSION["basyo"]=$_POST[basyo]; } //データベースからデータを取得する $datasource = "mysql://root:@localhost/".$_SESSION["db"]; print"$datasource"; $db = DB::connect($datasource ); mysql_query("SET NAMES UTF8"); $basyo=$_SESSION["basyo"]; $sql=sql(); if($_SESSION["sql"]==""){ $_SESSION["sql"]=$sql; } print $_SESSION["sql"]; //クエリ作成 $res = $db->query($_SESSION["sql"]); //データを配列に格納 $list_data=new hairetu(); ←※エラー行 while ($row = $res->fetchRow( DB_FETCHMODE_ASSOC )) { $data_list } //データベース後処理 $res->free(); $db->disconnect(); //Pagerへのデータ割り当て処理 $perPage=3; $params=array("perPage"=>$perPage, "itemData"=>$data_list, "delta"=>5, "altFirst"=>"First", 'firstPageText' => '最初', 'altFirst' => '最初', 'lastPageText' => '最後', 'altLast' => '最後', ); $o_page=Pager::factory($params); foreach($o_page->getPageData() as $item){ $data_list_for_page[]=$item; } //Smartyへの割付処理 $smarty=new Smarty; $smarty->template_dir = "./templates"; $smarty->compile_dir = "./templates_c"; //$smarty->cache_dir = "./cache"; $smarty->assign("list", $data_list_for_page); $navi=$o_page->getLinks(); $smarty->assign("pageNavi", $navi['first'].$navi['all'].$navi['last']); //テンプレート表示 $tql=new tmple(); ←※エラー行 print $tql; $smarty->display("$tpl"); ?> Fatal error: Class 'hairetu' not found in D:\xampp\htdocs\rei\pager\sample.php on line~ Fatal error: Class 'tmple' not found in D:\xampp\htdocs\rei\pager\sample.php on line~ がエラーになります。。よろしくお願いします。。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- wp_
- ベストアンサー率54% (132/242)
phpではfunctionはあくまで関数です。 オブジェクトではないのです。 // C系に慣れ親しんで居た状態から試行錯誤しているのかな、と邪推しますが・・ >$tql=new tmple(); $tql = tmple(); とすれば正常に動作するかと思います。 newするのであればtmpleはクラスとして宣言されていなければなりません。 ---- 蛇足 function hairetu(){ $list_data[] = array( (snip) ); return $data; // <- $list_data? } returnの変数名を間違えてませんか。
- msz1124
- ベストアンサー率39% (11/28)
sqlとhairetuとtmpleはクラスではなく関数ですよね? sqlは関数として呼び出しているのに、他の二つはクラスとして呼び出しているように見えますが… >$sql=sql(); >$list_data=new hairetu(); ←※エラー行 >$tql=new tmple(); ←※エラー行 の三行ですが、並べてみると動くところと動かないところの違いがわかるかと。
お礼
newがいらなかったみたいですね。ありがとうございました。
「class」の宣言は?
補足
無事に動きました。ありがとうございます。