dポイントプレゼントキャンペーン実施中!

別ファイルの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~
がエラーになります。。よろしくお願いします。。

A 回答 (3件)

phpではfunctionはあくまで関数です。


オブジェクトではないのです。
// C系に慣れ親しんで居た状態から試行錯誤しているのかな、と邪推しますが・・

>$tql=new tmple();
$tql = tmple();

とすれば正常に動作するかと思います。
newするのであればtmpleはクラスとして宣言されていなければなりません。

----
蛇足

function hairetu(){
$list_data[] = array(
(snip)
);
return $data; // <- $list_data?
}
returnの変数名を間違えてませんか。

この回答への補足

無事に動きました。ありがとうございます。

補足日時:2007/11/06 19:57
    • good
    • 0

sqlとhairetuとtmpleはクラスではなく関数ですよね?


sqlは関数として呼び出しているのに、他の二つはクラスとして呼び出しているように見えますが…
>$sql=sql();
>$list_data=new hairetu();  ←※エラー行
>$tql=new tmple();  ←※エラー行
の三行ですが、並べてみると動くところと動かないところの違いがわかるかと。
    • good
    • 0
この回答へのお礼

newがいらなかったみたいですね。ありがとうございました。

お礼日時:2007/11/06 19:59

「class」の宣言は?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!