- - PR -
phpのユーザ共通ライブラリについて
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-11-24 01:12
お世話になっております。
tuchidaです。 php初心者なために以下の様な質問になってすみません。 ここで、こんなこと聞いていいのかどうかわからないのですが、 お怒りの方がいたらすみません。 php4.4.0で現在ユーザが定義した共通関数を書きたいと考えていますが、 include文やrequire文で取り込んだ外部ファイル内に複数の関数を書いてこの 関数を呼び出すことはできるのでしょうか (色々なファイルから共通の関数として呼び出したいためです。) | ||||||||||||
|
投稿日時: 2007-11-24 01:19
外部ファイルと仰っている「外部」の意味がよくわかりませんが、
同じところに置いてある別のphpファイルをインクルードして、 関数の呼び出しを行いたいってことでしょうか? できますよ。というか、普通によくやりますよ。 | ||||||||||||
|
投稿日時: 2007-11-24 02:02
説明が正しくなくてすみません。 具体的には require('../includes/ComLib.php'); . . . $No = NumGet("AAA"); 以上のコーディングでNumGet()関数はComLib.phpの中にあるのですが NumGet("AAA")の所でエラーとなってしまっています。 | ||||||||||||
|
投稿日時: 2007-11-24 04:39
どんなエラーがでるのでしょうか? また、ComLib.phpの場所は正しいですか? | ||||||||||||
|
投稿日時: 2007-11-24 04:52
[/quote]
どんなエラーがでるのでしょうか? また、ComLib.phpの場所は正しいですか? [/quote] 場所は正しいです。 以下のエラーが発生しました。 Fatal error: Call to undefined function: numget() in /home/XXX/public_html/Order/php/Order.php on line 106 | ||||||||||||
|
投稿日時: 2007-11-24 09:17
うーん・・こんなコード↓で試してみましたが、問題ないですね
前のスレッド(その後進展がないようですが・・)も不思議な現象でしたし、再現可能なミニマムコードを書いてそのまま転記していただけるといいのですが・・・。 [ メッセージ編集済み 編集者: shimix 編集日時 2007-11-24 09:17 ] | ||||||||||||
|
投稿日時: 2007-11-24 09:44
ご心配頂き有難う御座います。
呼んでいる方のプログラムは以下の通りです。 <?php /** * Order.php is Vanish55 OrderSystem Order Sheet Create * * * <ul> */ /*************************************************** require('../includes/DatabaseCommon.inc'); require('../includes/common.inc'); ***************************************************/ $Mail = $_POST["prm01"]; $Yubin1 = $_POST["prm02"]; $Yubin2 = $_POST["prm03"]; $Jyu1 = $_POST["prm04"]; $Jyu2Name = $_POST["prm05"]; $Jyu3Name = $_POST["prm06"]; $Kana = $_POST["prm07"]; $Shimei = $_POST["prm08"]; $TEL = $_POST["prm09"]; $FAX = $_POST["prm10"]; $Count = $_POST["prm11"]; $Tanka = $_POST["prm12"]; $Shokei = $_POST["prm13"]; $Soryo = $_POST["prm14"]; $Total = $_POST["prm15"]; /** Database Update */ /** /* DB Connection */ if(!($conn = mysql_connect("localhost","XXXXX", "XXXXX"))){ print "database Connect Error"; } if(!(mysql_select_db("XXXXXXXX"))){ print "Database SELECT Error"; } if (!( mysql_query("begin;"))){ print "Transaction START Error"; } $OrderNo = NumGet("Order"); <−−−−−−ここです。 $SQL = "INSERT INTO OrderInf ("; $SQL = $SQL . "RecType, Or_OrderNo, Or_AgSel, Or_Agency, Or_Mail, "; $SQL = $SQL . "Or_Yubin1, Or_Yubin2, "; $SQL = $SQL . "Or_Jyu1, Or_Jyu1Name, Or_Jyu2, Or_Jyu2Name, Or_Jyu3, "; $SQL = $SQL . "Or_TEL, Or_FAX, Or_Name, Or_NameKana, "; $SQL = $SQL . "Or_Count, Or_Tanka, Or_Gokei, Or_Soryo, Or_Total, Or_Nebiki, "; $SQL = $SQL . "Or_RequestDay, "; $SQL = $SQL . "SendRecord, Timestamp) "; $SQL = $SQL . "VALUES ("; $SQL = $SQL . "'Or', '" . $OrderNo . "', '0000', '00000000', "; $SQL = $SQL . "'" . $Mail . "', '" . $Yubin1 . "', '" . $Yubin2 . "', "; $SQL = $SQL . "'" . $Jyu1 . "', '" . $Jyu1Name . "', '" . $Jyu2 . "', '" . $Jyu2Name . "', '" . $Jyu3Name . "', "; $SQL = $SQL . "'" . $TEL . "', '" . $FAX . "', '" . $Shimei . "', '" . $Kana . "', "; $SQL = $SQL . $Count . ", " . $Tanka . ", " . $Shokei . ", " . $Soryo . ", " . $Total . ", 0 , "; $SQL = $SQL . "'', '', '');"; if (!(mysql_query($SQL))){ print $SQL . "\\\\\\\\n"; /** print "Order Request INSERT Error"; **/ } if (!( mysql_query("COMMIT;"))){ print "COMMIT Error"; } mysql_close($conn); ?> 呼ばれている方は以下の通りです。 <?php /** * Database common Function * * <Argment Gide> * ArgHostName : Database HostName * ArgDatabase : Database Name * ArgUser : Database UserID * ArgPassword : Database Password * * <return> * return : Database Connect Character * * <Gide> * this is Database initialize Function * * <ul> */ function DBConnect($ArgHostName , $ArgDatabase, $ArgUser, $ArgPassword){ /** Database Connect */ if(!($conn = mysql_connect($ArgHostName, $ArgUser, $ArgPassword))){ print "database Connect Error"; } if(!(mysql_select_db($ArgDatabase))){ print "Database SELECT Error"; } return $conn; } /** * Database Query Function * * <Argment Gide> * ArgSQL : Request SQL * ArgMode : [S] SELECT SQL * : [I] INSERT SQL * : [D] DELETE SQL * : [U] UPDATE SQL * * <return> * * <Gide> * this is SQL Execute Function * * <ul> */ function DBQery($ArgSQL,$ArgMode){ $result = mysql_query($ArgSQL); if (!($result)){ print "DatabaseQuery Err"; print $ArgSQL; die; } return $result; } /** * Database Get Field Function * * <Argment Gide> * ArgSQL : Request SQL * * <return> * * <Gide> * this is SQL Execute Function * * <ul> */ function DBGetField($Result){ $return = mysql_fetch_array($Result,MYSQL_ASSOC); return $return; } /** * Database Close Function * * <Argment Gide> * ArgConn : Database Connect Character * * <return> * * <Gide> * this is Database Close Function * * <ul> */ function DBClose($ArgConn){ mysql_close($ArgConn); } /** * NumberGet Function * * <Argment Gide> * ArgNUMKey : Number Get Key * * <return> * return : Get Number(Length= * * <Gide> * this is Database Close Function * * <ul> */ function NumGet($ArgNumKey){ $W_SQL = "SELECT NUMKBN, Renban, UPDATE "; $W_SQL = $W_SQL . "FROM NumTbl "; $W_SQL = $W_SQL . "WHERE (((NUMKBN)='" . P_Key . "'));"; $res = DBQery($W_SQL); if (!$res) { $W_SQL = "INSERT INTO NUMTBL(NUMKBN,Renban,UpdDate) "; $W_SQL = $W_SQL . "VALUES('" . $ArgNumKey . "',1,'" . date("Y/m/d H:i:s") . "')"; $RetNum = 1; }else{ $row = DBGetField("Renban"); $RetNum = $row["Renban"] + 1; If ($RetNum > 99999999){ $RetNum = 1; } $W_SQL = "UPDATE NUMTBL SET Renban = " . $RetNum . " "; $W_SQL = $W_SQL . "WHERE (((NUMKBN)='" . $ArgNumKey . "'));"; } return $RetNum; } ?> 長くなってすみません。 | ||||||||||||
|
投稿日時: 2007-11-24 10:13
#私は再現可能なミニマムコードと書いたのですが・・。
という質問に対しては「できる」としか答えられません。 問題の切り分けをしていただかないと、回答する側としてもスクリプト全部を検証するわけにはいきません。ライブラリ側にDBConnectなども定義されているようですから、
の部分を
などとしたらどうなりますか? よくあるのは「includes/DatabaseCommon.inc」があちこちの階層に存在している(&保守漏れで微妙に内容が違う)というパターンですが、それはありませんね? [ メッセージ編集済み 編集者: shimix 編集日時 2007-11-24 10:14 ] |