""){ session_cache_limiter('private_no_expire'); } elseif ($_POST[dl1] <>""){ session_cache_limiter('private_no_expire'); } elseif ($_POST[dl2] <>""){ session_cache_limiter('private_no_expire'); } elseif ($_POST[dl3] <>""){ session_cache_limiter('private_no_expire'); } elseif ($_POST[kubun] <>""){ session_cache_limiter('private_no_expire'); } elseif ($_POST[dls] <>""){ session_cache_limiter('private_no_expire'); } elseif ($_POST[dls2] <>""){ session_cache_limiter('private_no_expire'); } session_start(); function title() { global $systemname,$userdata,$noprint; echo "".$systemname." for ".$userdata["gname"]."\n"; ?> "OFF") { ?> \n"; //$val = trim($val); //$val=str_replace("'","",$val); //$val=str_replace("\"","",$val); //$val=str_replace("\\","",$val); //$val = htmlspecialchars($val); //$val = str_replace("\t"," ",$val); //echo "\n"; } echo "アクセス制御コードcketoken2=".$_SESSION[cketoken]."
"; echo "
$"."userdata
"; var_dump($userdata); echo "
SCRIPTNAME=".$_SERVER['SCRIPT_NAME']; // echo "
$"."companydata
"; // var_dump($companydata); echo "
$"."centerdata
"; var_dump($centerdata); echo "
$"."gyotaidata
"; var_dump($gyotaidata); // echo "
$"."makerdata
"; // var_dump($makerdata); // echo "
$"."tenpodata
"; // var_dump($tenpodata); echo "
$"."settingdata
"; var_dump($settingdata); } } /*------------------------------------------------------------ * 関数名 : IsInt() * 返却値 : TRUE/FALSE * 引数 : (1) i: 調べたい変数 * 説明 : ※正の整数のみOKとする *------------------------------------------------------------ */ function IsInt($var) { if ( !strlen($var) ) { return( FALSE ); } return( ereg( "[^0-9]", $var ) ? FALSE : TRUE ); } /*------------------------------------------------------------ * 関数名 : IsHankaku() * 返却値 : TRUE/FALSE * 引数 : (1) i: 調べたい変数 * 説明 : 文字列が半角英数か調べる * 説明 : 全部半角英数のみOKとする *------------------------------------------------------------ */ function IsHankaku($str) { if ( !strlen($str) ) { return( FALSE ); } return( ereg( "[^\x20-\x7E]", $str ) ? FALSE : TRUE ); } /*------------------------------------------------------------------- * 関数名 : dbselect() * 返却値 : select結果格納エリア(配列) * 引数 : カラム(文字列・全部*) * : テーブル(文字列) * : where句(文字列)(指定無し:-1) * : order句(文字列)(指定無し:-1) * : 読みこみサイズ (全レコード:-1) * 説明 : データをDBより取得して、配列に入れる *------------------------------------------------------------------- */ function dbselect( $cln , /*clumn*/ $tbl , /*table*/ $strwhere , /*where*/ $strorder , /*where*/ $recordsize) /*サイズ*/ { global $my_con; global $strsqldbselect; $strsql ="select ".$cln." from ".$tbl; if ($strwhere!=-1) { #echo "strwhere=".$strwheree."
\n"; $strsql .= " where ".$strwhere; } if ($strorder!=-1) { #echo "strorder=".$strorder."
\n"; $strsql .= " order by ".$strorder; } if ($recordsize!=-1) { #echo "recordsize=".$recordsize."
\n"; $strsql .= " limit ".$recordsize; } //echo " ------------------\n".$strsql."\n--------------------- \n"; $strsqldbselect = " ------------------\n".$strsql."\n--------------------- \n"; $result=@mysql_query($strsql,$my_con); mysql_sql_log2($strsql,$_SERVER['SCRIPT_NAME'].":".__LINE__); $row=@mysql_num_rows($result); $i=0;$j=0; while ($i<$row) { $data=@mysql_fetch_row($result); $cnt=sizeof($data); while ($j<$cnt) { $list[$i][$j] = $data[$j]; $j++; } $j=0; $i++; } return $list; } /*------------------------------------------------------------ * 関数名 : PrintSelectList() * 返却値 : なし * 引数 : (1) i: プルダウンリストの配列 * [i][0]表示文字列[i][1]value コード値は2番目 * : (2) i: リストの中でどれをSelectedにするか(配列要素番号) * : (3) i: 行頭スペース数 * 説明 : 指定されたものをSelectedにしてプルダウン表示 *------------------------------------------------------------ */ function PrintSelectList( $list, $selected, $spaceNo ) { for($space=" ", $pi=1; $pi < $spaceNo; $pi++) { $space .= " "; } $n = sizeof($list); if($n>0) { for ($pi = 0; $pi < $n; $pi++) { $str = $space."\n"; echo $str; } } else { echo ""; } } /*------------------------------------------------------------ * 関数名 : PrintSelectList2() * 返却値 : なし * 引数 : (1) i: プルダウンリストの配列 * [i][0]表示文字列[i][1]value コード値は2番目 * : (2) i: リストの中でどれをSelectedにするか(配列要素番号) * : (3) i: 行頭スペース数 * 説明 : 指定されたものをSelectedにしてプルダウン表示(コード表示付) * 用法 : echoでなく、変数で戻したい場合は$intPrintSelectList2 = 1で設定する *------------------------------------------------------------ */ function PrintSelectList2( $list, $selected, $spaceNo ) { global $intPrintSelectList2; for($space=" ", $pi=1; $pi < $spaceNo; $pi++) { $space .= " "; } $n = sizeof($list); if($n>0) { for ($pi = 0; $pi < $n; $pi++) { $str = $space."\t\t 12) { $str2 = mb_strcut($list[$pi][1],0,6)." ".mb_strcut($list[$pi][1],6,4)." ".mb_strcut($list[$pi][1],10,100); } elseif(mb_strlen($list[$pi][1]) > 6) { $str2 = mb_strcut($list[$pi][1],0,6)." ".mb_strcut($list[$pi][1],6,100); } else { $str2 = $list[$pi][1]; } $str .= ">[".$str2."] ".$list[$pi][0]."\n"; if ($intPrintSelectList2 == 1) { $strHTML .= $str; } else { echo $str; } } } else { // echo "\t\t\n"; } if ($intPrintSelectList2 == 1) { return $strHTML ; } else { } } /*------------------------------------------------------------ * 関数名 : PrintSelectList3() * 返却値 : なし * 引数 : (1) array: プルダウンリストの配列 * [i][0]表示文字列[i][1]value コード値は2番目 * : (2) int: リストの中でどれをSelectedにするか(配列要素番号) * : (3) int: 0:コード表示をOFF 1:ON * : (4) str: 表示ONOFFリスト 0:OFF 1:ON * : (5) yobi: 予備 * 説明 : 指定されたものをSelectedにしてプルダウン表示(コード表示付)表示ONのみList表示 * 用法 : echoでなく、変数で戻したい場合は$intPrintSelectList2 = 1で設定する *------------------------------------------------------------ */ function PrintSelectList3( $list, $selected, $intcodedisp, $strdisplay, $yobi ) { global $intPrintSelectList2; $n = sizeof($list); if((strstr(substr($strdisplay,1,20),"1")) and ($n>0)) { for ($pi = 0; $pi < $n; $pi++) { if(substr($strdisplay,$pi,1) == 1) { $str = $space."\t\t\n"; if ($intPrintSelectList2 == 1) { $strHTML .= $str; } else { echo $str; } } } } elseif(!(strstr(substr($strdisplay,1,20),"1"))) { $str = $space."\t\t\n"; if ($intPrintSelectList2 == 1) { $strHTML .= $str; } else { echo $str; } } else { $strHTML .= "\t\t\n"; } if ($intPrintSelectList2 == 1) { return $strHTML ; } else { } } /*------------------------------------------------------------ * 関数名 : PrintSelectPageset() * 返却値 : なし(HTML) * 引数 : 初期制御数 * 説明 : 画面に表示するページ数のSELECT文を発行する * 用法 : *------------------------------------------------------------ */ function PrintSelectPageset( $selected) { $list = array(10,20,30,50,100,200); echo "\n"; echo "表示件数
\n"; echo "\n"; echo "
\n"; } /*------------------------------------------------------------ * 関数名 : PrintList() * 返却値 : なし * 引数 : (1) i: プルダウンリストの配列 * [i][0]表示文字列[i][1]value * : (2) i: リストの中でどれをSelectedにするか(配列要素番号) * : (3) i: 行頭スペース数 * 説明 : 指定されたものPRINT表示 *------------------------------------------------------------ */ function PrintList( $list, $selected, $spaceNo ) { for($space=" ", $i=1; $i < $spaceNo; $i++) { $str .= " "; } $n = sizeof($list); for ($i = 0; $i < $n; $i++) { if($list[$i][1] == $selected) { $str .= $list[$i][0] ; echo $str; break; } } } /*------------------------------------------------------------ * 関数名 : PrintList2() * 返却値 : なし * 引数 : (1) i: プルダウンリストの配列 * [i][0]表示文字列[i][1]value * : (2) i: リストの中でどれをSelectedにするか(配列要素番号) * : (3) i: どの配列何番目か 0以上 * 説明 : 指定されたものPRINT表示 * 使用例 : PrintList2($companydata,$data["invoice_company"],9) *------------------------------------------------------------ */ function PrintList2( $list, $selected, $num ) { $n = sizeof($list); for ($i = 0; $i < $n; $i++) { if($list[$i][1] == $selected) { $str .= $list[$i][$num] ; echo $str; break; } } } /*------------------------------------------------------------ * 関数名 : PrintList3() * 返却値 : なし * 引数 : (1) i: プルダウンリストの配列 * [i][0]表示文字列[i][1]value * : (2) i: リストの中でどれをSelectedにするか(配列要素番号) * : (3) i: 行頭スペース数 * 説明 : 指定されたものPRINT表示(コードつき) *------------------------------------------------------------ */ function PrintList3( $list, $selected, $spaceNo ) { for($space=" ", $i=1; $i < $spaceNo; $i++) { $str .= " "; } $n = sizeof($list); for ($i = 0; $i < $n; $i++) { if($list[$i][1] == $selected) { $str .= $list[$i][0] ; echo $str." (".$list[$i][1].")"; break; } } } /*------------------------------------------------------------ * 関数名 : GetList() * 返却値 : 選択文字列 * 引数 : (1)array: プルダウンリストの配列 * [i][0]表示文字列[i][1]value * : (2) i: リストの中でどれを返却するか。value値 * 説明 : 指定された文字列で返却 *------------------------------------------------------------ */ function GetList( $list, $selected) { return GetListData($list,$selected,0); } /*------------------------------------------------------------ * 関数名 : GetList2() * 返却値 : 選択文字列 * 引数 : (1)array: プルダウンリストの配列 * [i][0]表示文字列[i][1]value * : (2) i: リストの中でどれを返却するか。value値 * 説明 : 指定された文字列で返却・無い場合は元値を返却 *------------------------------------------------------------ */ function GetList2( $list, $selected) { if (GetListData($list,$selected,0)) { return GetListData($list,$selected,0); } else { return $selected; } } /*------------------------------------------------------------ * 関数名 : GetListData() * 返却値 : 選択文字列 * 引数 : (1) array: プルダウンリストの配列 * [i][0]表示文字列[i][1]value,[i][2]value,[i][3]value.... * : (2) i: リストの中でどれを返却するか。value値 * : (3) j: リストの中でどれの項目を返却するか。 * 説明 :(3)で指定された値 *------------------------------------------------------------ */ function GetListData( $list, $selected, $no) { $n = sizeof($list); for ($i = 0; $i < $n; $i++) { if($list[$i][1] == $selected) { return $list[$i][$no] ; break; } } } /*------------------------------------------------------------ * 関数名 : CheckEmail * 返却値 : true - 正しいメールアドレスの場合 * false - 正しくないメールアドレスの場合 * 引数 : (1) i:文字列 * 説明 : メールアドレスチェックを行なう。 *------------------------------------------------------------ */ function CheckEmail($str) { #@で分解できたらOK $list1=explode("@",$str); if (sizeof($list1)!=2) { return false; } #ドメインがドットで分解できたらOK $list2=explode(".",$list1[1]); if (sizeof($list2)<2) { return false; } return true; } /*------------------------------------------------------------ * 関数名 : PrintSelectDay() * 返却値 : なし * 引数 : (1) int: 開始日付の本日よりの経過日数 * 引数 : (2) int: 終了日付の本日よりの経過日数 * : (3) str: サブミットするとび先のPHPファイル名 -1はサブミットしない * : (4) int: 選ばれたデフォルトの経過日数(整数) * : (5) str: 表示する文字列 * 説明 : 日付をSELECTリストとしてPRINTする。デフォルト日付は整数値で指定。value値は経過日数。 * 使用例 : PrintSelectDay(-5,5,"0100.php",$_POST[chgday],"日付
") * 使用例 : PrintSelectDay(-5,10,-1,$orderdate,"入庫日
"); *------------------------------------------------------------ */ function PrintSelectDay( $startdate, $enddate, $filename, $selected, $word){ if ($filename == -1){ echo $word."\n"; echo "\n"; } for ($i = $startdate; $i < $enddate; $i++) { if ($i==0) { $word=" 本日";} else {$word="";} if ($i==(int)$selected) { //一致したら選択済みとする echo "\n"; } else { //$weeday = (int)date("w",strtotime ("".$i." day")); //0sun,1Mon,2Tue...6Sat //if ($weeday==0 or $weeday==2 or $weeday==5) { } else { //日、火曜、金曜は納品無し echo "\n"; //} } } echo "\n"; if ($filename <> -1){ echo "\n"; } } /*------------------------------------------------------------ * 関数名 : PrintSelectDay2() 納品日の曜日限定 * 返却値 : なし * 引数 : (1) int: 開始日付の本日よりの経過日数 * 引数 : (2) int: 終了日付の本日よりの経過日数 * : (3) str: サブミットするとび先のPHPファイル名 -1はサブミットしない -2は","1111000") *------------------------------------------------------------ */ function PrintSelectDay2( $startdate, $enddate, $filename, $selected, $word, $youbi){ global $startarray,$intFlgCalendarAdd,$strFlgCalendarAdd; if($intFlgCalendarAdd > 0) {$calendararray = dbselect("date_kubun,TO_DAYS(date) - TO_DAYS(CURDATE())","calendar"," date between DATE_ADD(CURDATE(),INTERVAL $startdate DAY) AND DATE_ADD(CURDATE(),INTERVAL $enddate DAY)","date",-1); } if ($filename == -2){ } elseif ($filename == -1){ echo $word."\n"; echo "\n"; } for ($i =0; $i < sizeof($startarray); $i++) { if ($startarray[$i][1] == $selected) { //一致したら選択済みとする echo ""; } else { echo ""; } } for ($i = $startdate; $i < $enddate; $i++) { if ($i==0) { $word=" 本日";} else {$word="";} //$wordは使い回し $weeday = (int)date("w",strtotime ("".$i." day")); //0sun,1Mon,2Tue...6Sat $okflg = substr($youbi, $weeday, 1); //表示曜日データから、目的の曜日の値をセットする if ($intFlgCalendarAdd > 0) { if(GetListdata($calendararray,(string)$i,0) <> "0") {$disabled = " style=\"color:#000000; background-color:#ffb6c1\"";$word .= $strFlgCalendarAdd;} else {$disabled = "";}} //カレンダー。$disabledは使い回し if ((int)$okflg==1) { //取り出した曜日が1:ONなら表示する。 if ($i == $selected) { //一致したら選択済みとする echo "\n"; } else { echo "\n"; } } } echo "\n"; if ($filename >-1){ echo "\n"; } } /*------------------------------------------------------------ * 関数名 : PrintSelectDay3() 納品日の曜日限定 * 返却値 : なし * 引数 : (1) int: 開始日付の本日よりの経過日数 * 引数 : (2) int: 終了日付の本日よりの経過日数 * : (3) str: サブミットするとび先のPHPファイル名 -1はサブミットしない * : (4) int: 選ばれたデフォルトの経過日数 * : (5) str: 表示する文字列 * 説明 : 日付をSELECTリストとしてPRINTする。日、火曜、金曜は納品無しバージョン(暫定2007年)。value値は経過日数。 * 使用例 : PrintSelectDay3(-5,5,"0100.php",$_POST[chgday],"日付
") *------------------------------------------------------------ */ function PrintSelectDay3( $startdate, $enddate, $filename, $selected, $word){ if ($filename == -1){ echo $word."\n"; echo "\n"; } for ($i = $startdate; $i < $enddate; $i++) { if ($i==0) { $word=" 本日";} else {$word="";} $weeday = (int)date("w",strtotime ("".$i." day")); //0sun,1Mon,2Tue...6Sat if ($weeday==0 or $weeday==2 or $weeday==5) { } else { //日、火曜、金曜は納品無し if ($i==(int)$selected) { //一致したら選択済みとする echo "\n"; } else { echo "\n"; } } } echo "\n"; if ($filename <> -1){ echo "\n"; } } /*------------------------------------------------------------ * 関数名 : PrintSelectDay4() DBから取り出した日付の変更のための日付リストの表示 * 返却値 : なし * 引数 : (1) int: 開始日付の本日よりの経過日数 * 引数 : (2) int: 終了日付の本日よりの経過日数 * : (3) str: サブミットするとび先のPHPファイル名 -1はサブミットしない * : (4) str: デフォルトで表示する日付 * : (5) str: 表示する文字列 * 説明 : 日付をSELECTリストとしてPRINTする。デフォルト日付は日付値で指定。value値は日付型YYYY-MM-DD。 * 使用例 : PrintSelectDay4(-5,5,"100.php",$_POST[chgday],"日付
") * 使用例 : PrintSelectDay4(-5,5,-1,"2007-1-1","日付
") * 使用例 : PrintSelectDay4(-5,5,-1,data(0),"日付
") *------------------------------------------------------------ */ function PrintSelectDay4( $startdate, $enddate, $filename, $selected, $word){ global $PrintSelectDay4flg; //指定無し if ($selected == "") { //デフォルト日付が無い場合は0日(当日とする) $date_diff = 0; } else { //日付がある場合は日付差分をセットする $date_diff = (int)(strtotime($selected)-strtotime(date('y-m-d'))) / 86400; } if ($filename == -1){ echo $word."\n"; echo "\n"; } for ($i = $startdate; $i < $enddate; $i++) { if ($i==0) { $word=" 本日";} else {$word="";} //本日の場合は本日を入れる。$wordは使い回し if ($i==$date_diff) { //一致したら選択済みとする echo "\n"; } else { echo "\n"; } } echo "\n"; if ($filename <> -1){ echo "\n"; } } /*------------------------------------------------------------ * 関数名 : PrintSelectDay5() DBから取り出した日付の変更のための日付リストの表示(サブミット先指定) * 返却値 : なし * 引数 : (1) int: 開始日付の本日よりの経過日数 * 引数 : (2) int: 終了日付の本日よりの経過日数 * : (3) str: 変数名 * : (4) str: デフォルトの日付YYYY-MM-DD形式 * : (5) str: 表示する文字列 * : (6) str: サブミットするとび先のPHPファイル名 -1はサブミットしない * 説明 : 日付をSELECTリストとしてPRINTする。デフォルト日付は日付値で指定。value値は日付型YYYY-MM-DD。 * 使用例 : PrintSelectDay5(-5,5,"startdate",$_POST[startdate],"開始日付
",-1) *------------------------------------------------------------ */ function PrintSelectDay5( $startdate, $enddate, $submitname, $selected, $word, $filename){ global $startarray,$stronchange,$stryoubi; global $PrintSelectDay5str; //指定無しの選択肢 //日付指定無しは本日とする if ($selected=="") { $selected = date("Y-m-d"); } if ($stryoubi=="") { $stryoubi = "1111111";//0sun,1Mon,2Tue...6Sat } //ファイル名がない場合=1は、サブミットしない if ($filename == -1){ echo $word."\n"; echo ">\n"; } else { echo "
\n"; echo $word."\n"; echo "\n"; if ($filename <= -1){ } else { echo "
\n"; } } /*------------------------------------------------------------ * 関数名 : PrintSelectDay5ff() DBから取り出した日付の変更のための日付リストの表示(サブミット先指定)カレンダーでON/OFFする * 返却値 : なし * 引数 : (1) int: 開始日付の本日よりの経過日数 * 引数 : (2) int: 終了日付の本日よりの経過日数 * : (3) str: 変数名 * : (4) str: デフォルトの日付YYYY-MM-DD形式 * : (5) str: SELECT文の前に表示する文字列 * : (6) str: サブミットするとび先のPHPファイル名 -1はサブミットしない * : (7) str: 表示曜日設定 "0110111" 0=OFF 1:ON //0sun,1Mon,2Tue...6Sat 7桁固定 * : (8) str: 選択無しのときの表記"全て" * : (9) str: 選択不可のときの表記"発注不可" * : (9) str: 1:休市カレンダー使用しない 0:利用する 他:サプライヤーコード * 説明 : 日付をSELECTリストとしてPRINTする。デフォルト日付は日付値で指定。value値は日付型YYYY-MM-DD。 * 使用例 : PrintSelectDay5ff(-5,5,"startdate",$_POST[startdate],"開始日付
",-1,"0110111","全て","休市日です") *------------------------------------------------------------ */ function PrintSelectDay5ff( $startdate, $enddate, $submitname, $selected, $word, $filename, $stryoubi, $strDefault, $strword2, $intUserCalen){ global $startarray,$stronchange,$strsqldbselect,$calendararray; //日付指定無しは本日とする if ($selected=="") { $selected = date("Y-m-d"); } if ($stryoubi=="") { $stryoubi = "1111111";//0sun,1Mon,2Tue...6Sat } //ファイル名がない場合=1は、サブミットしない if ($filename == -1){ echo $word."\n"; echo ">\n"; } else { echo "
\n"; echo $word."\n"; echo "\n"; if ($filename <= -1){ } else { echo "
\n"; } } /*------------------------------------------------------------ * 関数名 : PrintSelectDay6ff() DBから取り出した日付の変更のための日付リストの表示(サブミット先指定)カレンダーでON/OFFする * 返却値 : なし * 引数 : (1) int: 開始日付の本日よりの経過日数 * 引数 : (2) int: 終了日付の本日よりの経過日数 * : (3) str: 変数名 * : (4) str: デフォルトの日付YYYY-MM-DD形式 * : (5) str: SELECT文の前に表示する文字列 * : (6) str: サブミットするとび先のPHPファイル名 -1はサブミットしない * : (7) str: 表示曜日設定 "0110111" 0=OFF 1:ON //0sun,1Mon,2Tue...6Sat 7桁固定 * : (8) str: 選択無しのときの表記"全て" * : (9) str: 選択不可のときの表記"発注不可" * : (10) str: サプライヤーコード(NULLの場合、全体) * 説明 : 日付をSELECTリストとしてPRINTする。デフォルト日付は日付値で指定。value値は日付型YYYY-MM-DD。 * 使用例 : PrintSelectDay6ff(-5,5,"startdate",$_POST[startdate],"開始日付
",-1,"0110111","全て","休市日です") *------------------------------------------------------------ */ function PrintSelectDay6ff( $startdate, $enddate, $submitname, $selected, $word, $filename, $stryoubi, $strDefault, $strword2, $makercode){ global $startarray,$stronchange,$strsqldbselect,$calendararray; //日付指定無しは本日とする if ($selected=="") { $selected = date("Y-m-d"); } if ($stryoubi=="") { $stryoubi = "1111111";//0sun,1Mon,2Tue...6Sat } //ファイル名がない場合=1は、サブミットしない if ($filename == -1){ echo $word."\n"; echo "\n"; } else { echo "
\n"; echo $word."\n"; echo "\n"; if ($filename <= -1){ } else { echo "
\n"; } } /*------------------------------------------------------------ * 関数名 : PrintSelectDay6() DBから取り出した日付の変更のための日付リストの表示(サブミット先指定/サブミットFORM指定) * 返却値 : なし * 引数 : (1) int: 開始日付の本日よりの経過日数 * 引数 : (2) int: 終了日付の本日よりの経過日数 * : (3) str: 変数名 * : (4) str: デフォルトの日付YYYY-MM-DD形式 * : (5) str: 表示する文字列 * : (6) str: サブミットするとび先のPHPファイル名 -1はサブミットしない * : (7) str: サブミットするFORM名 -1はデフォルト * 説明 : 日付をSELECTリストとしてPRINTする。デフォルト日付は日付値で指定。value値は日付型YYYY-MM-DD。 * 使用例 : PrintSelectDay6(-5,5,"startdate",$_POST[startdate],"開始日付
",-1) *------------------------------------------------------------ */ function PrintSelectDay6( $startdate, $enddate, $submitname, $selected, $word, $filename, $change){ //日付指定無しは本日とする if ($selected=="") { $selected = date("Y-m-d"); } //-1は、サブミットしない if ($filename == -1){ echo $word."\n"; echo "\n"; } else { echo "
\n"; echo $word."\n"; echo "\n"; if ($filename <> -1){ echo "
\n"; } } /*------------------------------------------------------------ * 関数名 : SecurityCheck() * 返却値 : HTML * 引数 : なし * 説明 : クッキーがあるかチェックし、クッキーにユーザー情報を再セットする * 使用例 : SecurityCheck(); *------------------------------------------------------------ */ function SecurityCheck(){ global $my_con,$timeoutmin,$userdata; $cke =$_COOKIE["cketoken"]; // if ($_COOKIE[cketoken]<>"") { //アクセスコードとセッションが一致する場合 if ($_SESSION[cketoken]<>"") { //アクセスコードとセッションが一致する場合 //アクセスコード取得 $acd = dbselect("TO_DAYS(now()) - TO_DAYS(updatetime),TIME_TO_SEC(now()) - TIME_TO_SEC(updatetime),tid","usermaster","accesscode='$_SESSION[cketoken]' and sessionid='".$_COOKIE["PHPSESSID"]."'",-1,-1); // if (($acd[0][0]== 0) and ($acd[0][1] < (int)$timeoutmin) and ($_COOKIE["cketoken"] <>"") ){ if (($acd[0][0]== 0) and ($acd[0][1] < (int)$timeoutmin) ){ //日程経過が0日で規定秒以内ならOK $SecurityChecker = 0; //クッキーセット、ロールデータセット CookieSetup( "" ,2); //各データを変数にセットする DataSet(); } else { $SecurityChecker = 555; } Testecho("ACD=".$acd[0][0]."/ACD1=".$acd[0][1]."/CKE=".$_COOKIE["cketoken"]."/TIME=".$timeoutmin); } elseif ($_COOKIE[PHPSESSID] == "") { // セッションIDがない場合 $SecurityChecker = 4980; /* $msg2 .="━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"; $msg2 .="[日時 曜日] ".strftime ("%G/%m/%d (%a) %T",time())."\n"; $msg2 .="[アドレス ] ".$_SERVER["REMOTE_ADDR"]."\n"; $msg2 .="[ホスト  ] ".gethostbyaddr($_SERVER["REMOTE_ADDR"])."\n"; $msg2 .="[ブラウザー] ".$_SERVER["HTTP_USER_AGENT"]."\n"; $msg2 .="[遷移元URI ] ".$_SERVER["HTTP_REFERER"]."\n"; $msg2 .="[session_id() ] ".session_id()."\n"; $msg2 .="[COOKIE cketoken] ".$_COOKIE["cketoken"]."\n"; $msg2 .="[COOKIE SESSION CKETOKEN] ".$_SESSION["cketoken"]."\n"; $msg2 .="[COOKIE PHPSESSID] ".$_COOKIE["PHPSESSID"]."\n"; $msg2 .="[SecurityChecker] ".$SecurityChecker."\n"; $msg2 .= "\n========================================================\n"; $msg2 .=$mail2; $fromname = mb_encode_mimeheader(mb_convert_encoding("LogiGate自動",'UTF-8','auto')); $fromto2 = "FROM:$fromname\nBCC:tohyama@eship.co.jp\nX-mailer:PHP5"; $subject = "ER".strftime ("%G-%m-%d",time())." LogiGateログインテスト ID:".$accessid; mb_send_mail("info-logigate@logigate.jp",$subject,$msg2,$fromto2);*/ } else { $SecurityChecker = 1782; /* $msg2 .="━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"; $msg2 .="[日時 曜日] ".strftime ("%G/%m/%d (%a) %T",time())."\n"; $msg2 .="[アドレス ] ".$_SERVER["REMOTE_ADDR"]."\n"; $msg2 .="[ホスト  ] ".gethostbyaddr($_SERVER["REMOTE_ADDR"])."\n"; $msg2 .="[ブラウザー] ".$_SERVER["HTTP_USER_AGENT"]."\n"; $msg2 .="[遷移元URI ] ".$_SERVER["HTTP_REFERER"]."\n"; $msg2 .="[session_id() ] ".session_id()."\n"; $msg2 .="[COOKIE cketoken] ".$_COOKIE["cketoken"]."\n"; $msg2 .="[COOKIE SESSION CKETOKEN] ".$_SESSION["cketoken"]."\n"; $msg2 .="[COOKIE PHPSESSID] ".$_COOKIE["PHPSESSID"]."\n"; $msg2 .="[SecurityChecker] ".$SecurityChecker."\n"; $msg2 .= "\n========================================================\n"; $msg2 .=$mail2; $fromname = mb_encode_mimeheader(mb_convert_encoding("LogiGate自動",'UTF-8','auto')); $fromto2 = "FROM:$fromname\nBCC:tohyama@eship.co.jp\nX-mailer:PHP5"; $subject = "ER".strftime ("%G-%m-%d",time())." LogiGateログインテスト ID:".$accessid; mb_send_mail("info-logigate@logigate.jp",$subject,$msg2,$fromto2);*/ } if($SecurityChecker > 0) { $strsql = "INSERT INTO loginhistory (kubun,tid,name,userroleid,logindatetime,ip) values('OUT','".$userdata["tid"]."','".$userdata["name"]."','".$userdata["userroleid"]."',NOW(),'".$_SERVER["REMOTE_ADDR"]."')"; $result=mysql_query($strsql,$my_con); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); setcookie("cketoken"); setcookie("ckeselect"); setcookie("testmode"); myclose(); echo "\n"; echo "\n"; echo "ログアウトしました $SecurityChecker\n"; echo "\n"; echo "\n"; echo "\n"; // echo "ERROR #".$SecurityChecker; echo "ログアウト状態です。

ログイン後無操作状態が一定時間経過したため
自動ログアウトされました。

引き続きご利用の際には、
「再ログイン」をクリックしてください。

もし更新時にこの画面が出た場合は、最後の更新作業は無効となりました。再度ログイン後に改めて更新して下さい。



\n"; echo "CODE #".$SecurityChecker; if(session_id() == "") { echo "SES0"; } if($_COOKIE["PHPSESSID"] == "") { echo "COK0"; } echo ("DA=".$acd[0][0]."/ELS=".$acd[0][1]."/CKE=".$cke."/TM=".$timeoutmin); echo "\n\n"; exit; } } /*------------------------------------------------------------ * 関数名 : CookieSetup() * 返却値 : Cookie,内部変数 * 引数 : アクセスコード,フラグ(1=ログイン,2=更新) * 説明 : ユーザーIDより、Cookieにアクセスコードと業態コードを書き込む&ユーザー情報をセットする * 使用例 : CookieSetup($accesstoken,1); * 使用例 : CookieSetup( "" ,2); *------------------------------------------------------------ */ Function CookieSetup($accesstoken,$flg){ global $my_con,$timeoutmin,$userdata,$company,$companysetuzoku,$strsqldbselect,$databasenaming; //ユーザーマスター、ロールデータの取得 if($flg == 1) { $usermaster = dbselect("tid,companyid,shozokuid,accesscode,name,companyname,infoedit,email","usermaster as u INNER JOIN company USING(companyid)","accesscode='".$accesstoken."' AND sessionid='".$_COOKIE["PHPSESSID"]."'",-1,-1); $roledata = dbselect("userroleid,u.companyid,gyotaiid,kengen","userrole as u INNER JOIN rolemaster USING(roleid,companyid)","tid='".$usermaster[0][0]."'","roleid",-1); } else { //不正アクセス防止アクセスコード作成 mt_srand(microtime()*100000); $accesstoken = md5(uniqid(mt_rand(),1)); //アクセスコード更新 //2012OUT $strsql = "UPDATE usermaster set accesscode = '$accesstoken', updatetime=now(),sessionid='".$_COOKIE["PHPSESSID"]."' where accesscode='".$_SESSION[cketoken]."' limit 1"; //二重送信時に強制OUTしてしまうため $strsql = "UPDATE usermaster set updatetime=now(),sessionid='".$_COOKIE["PHPSESSID"]."' where accesscode='".$_SESSION[cketoken]."' limit 1"; $result=mysql_query($strsql,$my_con); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); //2012OUT $usermaster = dbselect("tid,companyid,shozokuid,accesscode,name,companyname,infoedit,email","usermaster as u INNER JOIN company USING(companyid)","accesscode='".$accesstoken."' AND sessionid='".$_COOKIE["PHPSESSID"]."'",-1,-1); $usermaster = dbselect("tid,companyid,shozokuid,accesscode,name,companyname,infoedit,email,brand,centerid,supplyerid,supplyerid2,cost_dispoff,makercode2","usermaster as u INNER JOIN company USING(companyid)","accesscode='".$_SESSION[cketoken]."' AND sessionid='".$_COOKIE["PHPSESSID"]."'",-1,-1); if(sizeof($usermaster) == 0) { $usermaster = dbselect("tid,companyid,shozokuid,accesscode,name,companyname,infoedit,email,brand,centerid,supplyerid,supplyerid2","usermaster as u INNER JOIN company USING(companyid)","accesscode='".$_SESSION[cketoken]."' AND sessionid='".$_COOKIE["PHPSESSID"]."'",-1,-1);} Testecho($strsqldbselect); $roledata = dbselect("userroleid,u.companyid,gyotaiid,kengen,roleid,startpage","userrole as u INNER JOIN rolemaster USING(roleid,companyid)","tid='".$usermaster[0][0]."'","u.roleid",-1); //universal loginシングルサインオンデータ取得 $univarsaldata = dbselect("tid,db","univarsal.gateuser","tid ='".$usermaster[0][0]."'",-1,-1); if(sizeof($univarsaldata) == 0) {$univarsaldata = dbselect("tid,db","vps10080_univarsal.gateuser","tid ='".$usermaster[0][0]."'",-1,-1);} Testecho($strsqldbselect); //univarsal データでDB,TIDが一致しているかを確認する if(sizeof($univarsaldata) > 1) { For($intU = 0;$intU < sizeof($univarsaldata);$intU++) { if($univarsaldata[$intU][1] == $databasenaming) { $intFlgU = 1; //DB,TIDが一致 } } //var_dump($univarsaldata); if($intFlgU == 1) { For($intU = 0;$intU < sizeof($univarsaldata);$intU++) { $strsql = "UPDATE `".$univarsaldata[$intU][1]."`.`usermaster` set updatetime=now(),sessionid='".$_COOKIE["PHPSESSID"]."',accesscode='".$_SESSION[cketoken]."' where tid='".$univarsaldata[$intU][0]."' limit 1"; $result=mysql_query($strsql,$my_con); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); //echo "ooooooooooo".$strsql; } } } } // setcookie("cketoken",$usermaster[0][3],time() + $timeoutmin); //アクセス防止マーカー setcookie("cketoken",$_SESSION[cketoken],time() + $timeoutmin); //アクセス防止マーカー $_SESSION[cketoken] = $usermaster[0][3]; //アクセス防止マーカー // setcookie("ckeselect",$roledata[0][0],time() + $timeoutmin); //ロールID(デフォルトは権限が一番上) // setcookie("testmode"); //テストモード終了 // setcookie("testmode","1",time()+7200); //テストモード開始 //ユーザー情報セット $userdata["tid"] = $usermaster[0][0]; //ユーザーID $userdata["companyid"] = $usermaster[0][1]; //所属会社ID $userdata["shozokuid"] = $usermaster[0][2]; //配送先ID $userdata["name"] = $usermaster[0][4]; //ユーザ名 $userdata["companyname"] = $usermaster[0][5]; //所属会社名 $userdata["infoedit"] = $usermaster[0][6]; //情報掲示板編集権限 $userdata["email"] = $usermaster[0][7]; //Email if($usermaster[0][8] <> "") $userdata["brand"] = $usermaster[0][8]; //brand ブランドを限定する場合 if($usermaster[0][9] <> "") $userdata["centerid"] = $usermaster[0][9]; //center センターを限定する場合 if($usermaster[0][10] <> "") $userdata["supplyerid"] = $usermaster[0][10]; //supplyerid サプライヤーを限定する場合 $userdata["supplyerid2"] = $usermaster[0][11]; //マスタ編集用 複数サプライヤー限定 $userdata["cost_dispoff"] = (int)$usermaster[0][12]; //1:仕入金額非表示 0:表示' $userdata["makercode2"] = $usermaster[0][13]; //マスタ編集用 メーカー用 $userdata["userroleid"] = $roledata[0][0]; //ユーザ名 $userdata["hcompanyid"] = $roledata[0][1]; //本社ID // $company = $roledata[0][1].$companysetuzoku; //本社ID=DatabaseTable名 $userdata["gyotaiid"] = $roledata[0][2]; //業態ID $userdata["kengen"] = $roledata[0][3]; //権限 $userdata["roleid"] = $roledata[0][4]; //roleid $userdata["startpage"] = $roledata[0][5]; //startpage 通常0100.phpからの変更 //業態情報 $gdata = dbselect("honbuid,gname,logo,hacchutime,nohinweek,comeinweek","`".$company."gyotai`","gyotaiid='".$userdata["gyotaiid"]."'",-1,-1); $userdata["honbuid"] = $gdata[0][0]; //本部ID $userdata["gname"] = $gdata[0][1]; //業態名 $userdata["logo"] = $gdata[0][2]; //LOGOのURL $userdata["nohinweek"] = $gdata[0][4]; //納品可能曜日 $userdata["comeinweek"] = $gdata[0][5]; //入荷可能曜日 $sdata = dbselect("shozokuname,shimetime,leadtime","`".$company."shozokumaster`","shozokuid='".$userdata[shozokuid]."'",-1,-1); $userdata["shozokuname"] = $sdata[0][0]; //所属名 $userdata["hacchutime"] = $sdata[0][1]; //発注締め時間 $userdata["leadtime"] = $sdata[0][2]; //納品先リードタイムday } /*------------------------------------------------------------ * 関数名 : Numchecker() * 返却値 : 数字 * 引数 : 調べたい数字 * 説明 : 全角数字が指定されたら数値で返す。数値、全角数値以外は0で返す * 使用例 : A = Numchecker($_POST[amount]) +5; *------------------------------------------------------------ */ Function Numchecker($cknumber){ if ($cknumber == "") { //何も無しなら0で返す return 0; } else { $cknumber = mb_convert_kana($cknumber,"n"); if ((int)$cknumber > 0 ) { return (int)$cknumber; //マイナス以外の数字なら数値で返す } else { return 0; //数値でないなら0で返す } } } /*------------------------------------------------------------ * 関数名 : Numchecker2() * 返却値 : 数字 * 引数 : 調べたい数字 * 説明 : 全角数字が指定されたら数値で返す。数値、全角数値以外はNO-MATCHで返す * 使用例 : amout2 = Numchecker2($_POST[amount]); *------------------------------------------------------------ */ Function Numchecker2($cknumber){ if ($cknumber == "") { //何も無しならNO-MATCHで返す return "NO-MATCH"; } else { $cknumber = trim(str_replace(",","",$cknumber)); $cknumber = mb_convert_kana($cknumber,"n"); $cknumber = trim(str_replace(",","",$cknumber)); if ((int)$cknumber >= 0 ) { return $cknumber; //マイナス以外の数字なら数値で返す } elseif ((int)$cknumber < 0 ) { return $cknumber; //マイナス数字なら数値で返す } else { return "NO-MATCH"; //数値でないならNO-MATCHで返す } } } /*------------------------------------------------------------ * 関数名 : Numchecker3() * 返却値 : 文字列 * 引数 : 調べたい数字 * 説明 : 全角数字が指定されたらNUMで返す。数値、全角数値以外はCHRで返す * 使用例 : Numchecker3($_POST[amount]); *------------------------------------------------------------ */ Function Numchecker3($cknumber){ if ($cknumber == "") { //何も無しならCHRで返す return "CHR"; } else { $cknumber = trim(str_replace(",","",$cknumber)); $cknumber = mb_convert_kana($cknumber,"n"); $cknumber = trim(str_replace(",","",$cknumber)); if (is_numeric($cknumber)) { return "NUM"; //数字ならNUMで返す } else { return "CHR"; //数値でないならCHRで返す } } } /*------------------------------------------------------------ * 関数名 : Logout() * 返却値 : HTML * 引数 : なし * 説明 : クッキーをリセットして、index.htmlに戻る * 使用例 : Logout(); *------------------------------------------------------------ */ function Logout(){ global $my_con,$userdata; $strsql = "INSERT INTO loginhistory (kubun,tid,name,kengen,honbu,gyotai,tenpo,logindatetime,ip) values('OUT','".$userdata["tid"]."','".$userdata["name"]."','".$userdata["kengen"]."','".$userdata["honbuid"]."', '".$userdata["gyotaiid"]."','".$userdata["shozokuid"]."',NOW(),'".$_SERVER["REMOTE_ADDR"]."')"; $result=mysql_query($strsql,$my_con); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); /* setcookie("testmode"); setcookie("ckeselect"); setcookie("ckeken"); setcookie("ckename"); setcookie("ckehonbu"); setcookie("ckegyotai"); setcookie("cketenpo"); setcookie("ckecenter"); setcookie("ckemaker"); setcookie("ckecompanyid"); setcookie("cketradex"); setcookie("cketenponame"); setcookie("cketcenter"); setcookie("ckeshime"); */ setcookie("cketoken"); setcookie("testmode"); //テストモード切替 /* setcookie("PHPSESSID"); //締め時間設定 if (isset($_COOKIE['PHPSESSID'])) { $sessid = $_COOKIE['PHPSESSID']; } else if (isset($_GET['PHPSESSID'])) { $sessid = $_GET['PHPSESSID']; } else { session_start(); return false; } if (!preg_match('/^[a-z0-9]{32}$/', $sessid)) { return false; } session_start(); */ // setcookie("PHPSESSID","14871648961978946594",time() + $timeoutmin); //アクセス防止マーカー // setcookie("PHPSESSID"); //締め時間設定 setcookie("ckecen"); //利用センター設定 setcookie("ckecenterdayexe"); //センター発注締め処理用 15分置きにチェックする setcookie("ckecenterpastdayexe"); //発注締め処理 /* echo "\n"; echo "\n"; echo "$systemname\n"; echo "\n"; echo "\n"; echo "\n"; echo "ログアウトしました。

\n"; echo "\n\n"; myclose(); exit; */ } /*------------------------------------------------------------ * 関数名 : Eucjp() * 返却値 : EUCに変換された文字列 * 引数 : EUCに変換する文字列 * 使用例 : *------------------------------------------------------------ */ Function Eucjp($chara){ mb_language("Japanese"); if ($chara == "") { //何も無しなら空文字で返す return ""; } else { return mb_convert_encoding(trim($chara),"UTF-8","auto"); } } /*------------------------------------------------------------ * 関数名 : Eucsjis() * 返却値 : EUCに変換された文字列 * 引数 : EUCに変換する文字列 * 使用例 : *------------------------------------------------------------ */ Function Eucsjis($chara){ if ($chara == "") { //何も無しなら空文字で返す return ""; } else { return mb_convert_encoding(trim($chara),"UTF-8","SJIS-win"); } } /*------------------------------------------------------------ * 関数名 : Sjis() * 返却値 : SJISに変換された文字列 * 引数 : EUC文字列 * 使用例 : *------------------------------------------------------------ */ Function Sjis($chara){ if ($chara == "") { //何も無しなら空文字で返す return ""; } else { $chara = str_replace("㈱","(株)",$chara); return mb_convert_encoding($chara,"SJIS-win","UTF-8"); } } /*------------------------------------------------------------------- * 関数名 : ShowNavBar2() * 返却値 : PRINT出力(返却値なし) * 引数 : 全件数、単位数、現在のページ、テーブル幅 * 説明 : ページ移動のヘッダ表示する * ShowNavBar2($data3[0][0],20,$page,550); *------------------------------------------------------------------*/ function ShowNavBar2($zenken,$size,$page,$width,$order) { if (Numchecker($zenken)> 0) { print "

\n"; print "\t
\n"; #ページ数指定なしは1 if ($page == "") $page=1; #最大頁数 $maxpage = ceil($zenken/$size); #XX~#XXを表示 print "".($size * ($page - 1) + 1)."-"; if ($page == $maxpage) { #最終ページだったら print $zenken ." "; } Else { print ($size * $page).""; } #1.X頁中X頁目を表示(全X件) #print "".$page ."/".$maxpage ."頁目を表示(全 ".$zenken." 件ありました)"; #print "(Total ".$zenken." )"; #print " of ".$zenken.""; # 1-50 of 72 print " / ".$zenken.""; # 1-50 / 72 print "\n\t
\n\t
\n"; #2.<< 前の10件 1 2 3 4 5 次の6件>> if ($page > 1) { #現在ページが2ページ以上だったら「前の件数」を表示 print " "; print "|<< 前の " . $size . " 件 | "; } $iLoop=1; //echo "Page."; while ($iLoop <= $maxpage) { if ($iLoop == $page) { if ($maxpage>1) { //1ページしかない場合は表示しない print " " . $iLoop. ""; } } Else { print " ".$iLoop . " \n"; } $iLoop++; } if ($page != $maxpage) { #現在ページが最終ページでなかったら「次の件数」を表示 print " | "; if ($size > ($zenken - ($page * $size))) { #一番最後の件分の計算処理 $iNextPerPage = $zenken - ($page * $size); print " "; print " 次の " . $iNextPerPage . " 件>>|
\n"; } Else { #一番最後以外は、既定数分 $iNextPerPage = $size; print " "; print " 次の " . $iNextPerPage . " 件>>
\n"; } } print "\n\t
\n"; print "
\n"; } } /*------------------------------------------------------------------- * 関数名 : ShowNavBar3() * 返却値 : PRINT出力(返却値なし) * 引数 : 全件数、単位数、現在のページ、テーブル幅 * 説明 : ページ移動のヘッダ表示する * ShowNavBar3($data3[0][0],20,$page,550); *------------------------------------------------------------------*/ function ShowNavBar3($zenken,$size,$page,$width,$order) { global $strShowNavBar,$strAddJavascript,$strButtonName; if ($strShowNavBar == "") {$strShowNavBar = "更新";}; if ($strButtonName == "") {$strButtonName = "update";}; if (Numchecker($zenken)> 0) { print "\n"; print "\n\n\n"; print "
"; #ページ数指定なしは1 if ($page == "") $page=1; #最大頁数 $maxpage = ceil($zenken/$size); #XX~#XXを表示 print "".($size * ($page - 1) + 1)."-"; if ($page == $maxpage) { #最終ページだったら print $zenken ." "; } Else { print ($size * $page).""; } #1.X頁中X頁目を表示(全X件) #print "".$page ."/".$maxpage ."頁目を表示(全 ".$zenken." 件ありました)"; #print "(Total ".$zenken." )"; #print " of ".$zenken.""; # 1-50 of 72 print " / ".$zenken.""; # 1-50 / 72 print "\n"; #2.<< 前の10件 1 2 3 4 5 次の6件>> if ($page > 1) { #現在ページが2ページ以上だったら「前の件数」を表示 print " "; print "|<< 前の " . $size . " 件 | "; } $iLoop=1; //echo "Page."; while ($iLoop <= $maxpage) { if ($iLoop == $page) { if ($maxpage>1) { //1ページしかない場合は表示しない print " " . $iLoop. ""; } } Else { print " ".$iLoop . " \n"; } $iLoop++; } if ($page != $maxpage) { #現在ページが最終ページでなかったら「次の件数」を表示 print " | "; if ($size > ($zenken - ($page * $size))) { #一番最後の件分の計算処理 $iNextPerPage = $zenken - ($page * $size); print " "; print " 次の " . $iNextPerPage . " 件>>|
\n"; } Else { #一番最後以外は、既定数分 $iNextPerPage = $size; print " "; print " 次の " . $iNextPerPage . " 件>>
\n"; } } print ""; print "
\n
\n"; } } /*------------------------------------------------------------ * 関数名 : Logintitle() * 返却値 : HTML文字列 * 引数 : なし * 使用例 : *------------------------------------------------------------ */ Function Logintitle(){ } /*------------------------------------------------------------ * 関数名 : Menu() * 返却値 : HTML文字列 * 引数 : ページタイトル * 使用例 : *------------------------------------------------------------ */ Function Menu($strpagetitle){ global $functiondata,$userdata; if ($userdata["shozokuname"] == $userdata["name"]) { $userloginname = ""; } else { $userloginname = $userdata["shozokuname"]; } $frag=2; FunctionDataSet(); for ($pi = 0; $pi < sizeof($functiondata); $pi++) { if(($pi>0) and ($functiondata[$pi][3] <> $kubun)) { $main .=" \n\n"; $frag++; } if($functiondata[$pi][3] <> $kubun) { $header .= "
  • ".$functiondata[$pi][2]."
  • \n"; $main .= "
    \n"; } $kubun = $functiondata[$pi][3]; $main .= " ".$functiondata[$pi][0]."\n"; } echo "
    \n"; echo " \n"; echo $main; echo "
    \n"; echo "
    \n"; } /*------------------------------------------------------------ * 関数名 : Menu3() * 返却値 : HTML文字列 * 引数 : ページタイトル * 使用例 : *------------------------------------------------------------ */ Function Menu3($strfilename){ global $functiondata,$userdata; if ($userdata["shozokuname"] == $userdata["name"]) { $userloginname = ""; } else { $userloginname = $userdata["shozokuname"]; } $frag=2; FunctionDataSet(); for ($pi = 0; $pi < sizeof($functiondata); $pi++) { if(($pi>0) and ($functiondata[$pi][3] <> $kubun)) { $main .=" \n\n"; $frag++; } if($functiondata[$pi][3] <> $kubun) { $header .= "
  • ".$functiondata[$pi][2]."
  • \n"; $main .= "
    \n"; } $kubun = $functiondata[$pi][3]; if ($strfilename==$functiondata[$pi][1]) { $main .= " ".$functiondata[$pi][0]."\n"; $mainfrag = $frag; } else { $main .= " ".$functiondata[$pi][0]."\n"; } } echo "
    \n"; echo "
      \n"; echo $header; echo "
    • \n"; echo "
    \n"; echo $main; echo "
    \n"; echo "
    \n"; echo "

    "; } /*------------------------------------------------------------ * 関数名 : Menu4() * 返却値 : HTML文字列 * 引数 : ページタイトル * 使用例 : *------------------------------------------------------------ */ Function Menu4($strfilename){ global $functiondata,$userdata,$systemname; $strfilename = substr(strrchr($strfilename, "/"), 1); if ($userdata["shozokuname"] == $userdata["name"]) { $userloginname = ""; } else { $userloginname = $userdata["shozokuname"]; } $frag=2;$j = 1; FunctionDataSet(); for ($pi = 0; $pi < sizeof($functiondata); $pi++) { if(($pi>0) and ($functiondata[$pi][3] <> $kubun)) { $main .=" \n

    \n"; $frag++;$j = 1; } if($functiondata[$pi][3] <> $kubun) { $header .= "
  • ".$functiondata[$pi][2]."
  • \n"; $main .= "
    \n"; } $kubun = $functiondata[$pi][3]; if ($strfilename==$functiondata[$pi][1]) { // $main .= " ".$functiondata[$pi][0]."\n"; $main .= " \n"; $mainfrag = $frag; } else { // $main .= " ".$functiondata[$pi][0]."\n"; $main .= " \n"; } if ($j > 4) { $main .= "
    \n";$j = 0; } $j++; } echo "\n"; echo "

    ▲このページの先頭へ"; echo "

    "; // echo "

    "; echo "

    \n"; echo "
      \n"; echo $header; echo "
    • \n"; echo "
    \n"; echo $main; echo "
    \n"; echo "
    \n"; echo ""; echo "
    ".$systemname; echo "
    \n"; echo "
    \n"; } /*------------------------------------------------------------ * 関数名 : Menu5() * 返却値 : HTML文字列 * 引数 : ページタイトル * 使用例 :Menu5($_SERVER['PHP_SELF']); 必要 *------------------------------------------------------------ */ Function Menu5($strfilename){ global $functiondata,$userdata,$systemname; $strfilename = substr(strrchr($strfilename, "/"), 1); if ($userdata["shozokuname"] == $userdata["name"]) { $userloginname = ""; } else { $userloginname = $userdata["shozokuname"]; } $frag=2;$j = 1; $iii = 0;$jjj = 0; FunctionDataSet(); for ($pi = 0; $pi < sizeof($functiondata); $pi++) { if(($pi>0) and ($functiondata[$pi][3] <> $kubun)) { $frag++;$j = 1; } if($functiondata[$pi][3] <> $kubun) { $iii++; $header .= "
  • ".$functiondata[$pi][2]."
  • \n"; if($iii > 1) {$main .= "\n"; } $main .= "
    \n"; } $kubun = $functiondata[$pi][3]; if ($strfilename==$functiondata[$pi][1]) { // $main .= " ".$functiondata[$pi][0]."\n"; $main .= " ".$functiondata[$pi][0]."\n"; $mainfrag = $frag; } else { $jjj++; $main .= " ".$functiondata[$pi][0]."\n"; } if ($j > 4) { $main .= "
    \n";$j = 0; } $j++; } echo "
    \n"; echo "
      \n"; echo $header; echo "
    \n"; echo "
    \n"; echo "
    \n"; echo $main; echo "
    \n"; echo "
    \n"; } /*------------------------------------------------------------ * 関数名 : Honbutitle() * 返却値 : HTML文字列 * 引数 : なし * 使用例 : *------------------------------------------------------------ */ Function Honbutitle(){ } /*------------------------------------------------------------ * 関数名 : Honbutitle2() * 返却値 : HTML文字列 * 引数 : なし * 使用例 : *------------------------------------------------------------ */ Function Honbutitle2($strpagetitle){ } /*------------------------------------------------------------ * 関数名 : Honbutitle3() * 返却値 : HTML文字列 * 引数 : ページタイトル、ファイル名 * 使用例 : menu4と対で使用する *------------------------------------------------------------ */ Function Honbutitle3($strpagetitle,$strfilename){ global $userdata,$company; $strfilename = substr(strrchr($strfilename, "/"), 1); if ($userdata["companyname"] ==$userdata["shozokuname"]) { $userloginname = ""; } else { $userloginname = $userdata["shozokuname"]." "; } echo "
    \n"; if($company == "shoku_") { echo "
    \n"; } else { echo "
    \n"; } // echo $userdata["honshaname"]." ".$userdata["gname"]."\n"; echo "\n"; if (FunctionUseCheck("5000")) { echo "\n"; } if (FunctionUseCheck("9970")) { echo "\n"; } echo "
    \n"; echo "
    "; //if(($userdata["roleid"] <> 4) and ($userdata["roleid"] <> 7) and ($userdata["roleid"] <> 10) and ($userdata["roleid"] <> 11) ){ echo $userdata["companyname"].":"; //} echo $userloginname.$userdata["name"]." \n"; echo "
    ".date("Y/m/d A G:i:s")."
    \n"; echo "
    \n"; $data = explode(".",$_SERVER['SCRIPT_NAME']); $data = explode("/",$data[0]); $functionname = dbselect("functionname","function","functionid like '".$data[2]."%'",-1,-1); // echo "
    ".$strpagetitle."
    \n"; echo "
    ".mb_convert_kana($functionname[0][0],'KV')."
    \n"; } /*------------------------------------------------------------ * 関数名 : Testecho() * 返却値 : プリント * 引数 : 文字列 * 説明 : Debugモードであれば出力する。 *------------------------------------------------------------ */ function Testecho($string) { // グローバル宣言をする global $HTTP_COOKIE_VARS; if ($_SESSION[testmode]=="1") { echo "
    \n"; echo $string."
    \n"; } } /*------------------------------------------------------------ * 関数名 : Testecho2() * 返却値 : プリント * 引数 : 文字列,変数名 * 説明 : Debugモードであれば出力する。 *------------------------------------------------------------ */ function Testecho2($string,$string2) { Testecho("SQL $".$string2."=".$string); } /*------------------------------------------------------------ * 関数名 : Testecho3() * 返却値 : プリント * 引数 : 文字列,フラグ(1:通常 2:TD 3:TH) * 説明 : システム解析用 *------------------------------------------------------------ */ function Testecho3($string,$flg) { global $userdata; if ($userdata["kengen"] <= 20 ) { switch($flg) { case 1: echo "
    \n"; echo $string."
    \n"; break; case 2: echo "".$string."\n"; break; case 3: echo "".$string."\n"; break; } } } /*------------------------------------------------------------------- * 関数名 : dbselectin() * 返却値 : select結果のコード列(文字列) * 引数 : SELECT文 * 引数 : IN 句 * 説明 : where句の IN節で入力値の値を返す。サブクエリーが使えないv4.1未満対策用、必ずカラムは1個のみ指定何も無い時は空文字返却 * 使用例 : dbselectin("SELECT code from data","and sm.shohincd in ") *------------------------------------------------------------------- */ function dbselectin( $strsql, /*select文*/ $strsql2 /*IN句*/) { global $my_con; $result=@mysql_query($strsql,$my_con); $row=@mysql_num_rows($result); $i=0; $wherein = $strsql2." ("; while ($i<$row) { $data=@mysql_fetch_row($result); $wherein .= "'".$data[0]."'"; if ($i<($row -1)) { $wherein .= ","; } $i++; } $wherein .= ") "; if ($row==0) $wherein =" and 1=2 "; return $wherein; } /*------------------------------------------------------------ * 関数名 : Chkdate() * 返却値 : TRUE/FALSE * 引数 : (1) i: 調べたい日付 * 説明 : 正しい日付のみTUREとする *------------------------------------------------------------ */ function Chkdate($var) { $data = explode("/",$var); $data2 = explode("-",$var); if ($var=="0000-00-00") return false; if (strlen($var)<8) { return false; } elseif(sizeof($data)==3) { if (checkdate($data[1],$data[2],$data[0])) { return true; } else { return false; } } elseif (sizeof($data2)==3) { if (checkdate($data2[1],$data2[2],$data2[0])) { return true; } else { return false; } } elseif (checkdate(substr($var,4,2),substr($var,6,2),substr($var,0,4))) { return true; } else { return false; } } /*------------------------------------------------------------ * 関数名 : ChkdateB() * 返却値 : TRUE/FALSE * 引数 : (1) i: 調べたい日付 * 引数 : (2) i: チェックするかしないか 1する 2しない * 説明 : 正しい日付のみTUREとする!(ChkdateB($_POST{"shomi".$y},$shomiflg) * 商品マスタのshomiflg 0:期限管理不要 1:賞味期限 2:製造年月日管理 3:入庫日管理 *------------------------------------------------------------ */ function ChkdateB($var,$flg) { if ($flg==0) { return true; } else { return Chkdate($var); } } /*------------------------------------------------------------ * 関数名 : Chkdate2() * 返却値 : 0:実存/1:実存無し * 引数 : (1) i: 調べたい日付 * 説明 : 正しい日付のみTUREとする *------------------------------------------------------------ */ function Chkdate2($var) { $data = explode("/",$var); $data2 = explode("-",$var); if ($var=="0000-00-00") return 1; if(sizeof($data)==3) { if (checkdate($data[1],$data[2],$data[0])) { return 0; } else { return 1; } } elseif (sizeof($data2)==3) { if (checkdate($data2[1],$data2[2],$data2[0])) { return 0; } else { return 1; } } else { if (checkdate(substr($var,4,2),substr($var,6,2),substr($var,0,4))) { return 0; } else { return 1; } } } /*------------------------------------------------------------ * 関数名 : ShimeSet1() * 返却値 : なし * 引数 : 本日よりの日付0は本日 * 説明 : 本日の締め処理を実行しているかどうかを調べて、実行無しなら実行する。 ここで行う締め処理とは 1)ステータステーブルに締め履歴に更新し、発注データのフラグを発注締めのフラグ1に更新することである。 2)入荷予定で入庫実績確定されていないデータを未入荷で確定させる(業態マスターにセットされている時間以後に前日分は確定させる) * および通過型の商品はサマリーして、入庫データに挿入する。 * 使用例 : ShimeSet1(); *------------------------------------------------------------ */ function ShimeSet1($intday){ global $HTTP_POST_VARS; global $my_con; global $company,$companysetuzoku,$strsqldbselect; //ステータスデータ作成 MakeStatusData($intday); //未来日は処理しない if($intday<=0) { //受注データに作業日をセット // OperateDateSet($intday); if($intday==0){ //本日なら、現在時刻が発注締め時間を過ぎているセンターのリスト $where = "operatedate=CURDATE() AND hacchutime <= ".date(Gi)." AND status < 2 GROUP BY gyotaiid,centerid"; $list = dbselect("st.gyotaiid,st.centerid","`".$company."gyotai` INNER JOIN `".$company."status` AS st USING ( `gyotaiid` ) ",$where,-1,-1); } else { //過去日なら、ステータスデータがまだ未処理となっているセンターのリスト $where = "operatedate=DATE_ADD(CURDATE(),INTERVAL $intday DAY) GROUP BY gyotaiid,centerid"; $list = dbselect("gyotaiid,centerid","`".$company."status`",$where,-1,-1); $strsql = "UPDATE `".$company."ordermain` as main ,`".$company."ordersheet` as sheet SET orderid_flg = 2 WHERE main.ordermainid = sheet.ordermainid and gyotaiid='".$list[$p][0]."' and centerid='".$list[$p][1]."' and orderid_flg = 1 and operatedate =DATE_ADD(CURDATE(),INTERVAL $intday DAY)"; $result=@mysql_query($strsql,$my_con); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); Testecho ("発注締めが受注明細データに実施されました。".$errcode." ".$strsql."\n
    "); #debug } for ($p = 0; $p < sizeof($list); $p++) { $strsql = "UPDATE `".$company."ordermain` SET checkedflg=2 WHERE gyotaiid='".$list[$p][0]."' and centerid='".$list[$p][1]."' and checkedflg=1 and operatedate =DATE_ADD(CURDATE(),INTERVAL $intday DAY)"; $result=@mysql_query($strsql,$my_con); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); Testecho ("発注締めが受注データに実施されました。".$errcode." ".$strsql."\n
    "); #debug $strsql = "UPDATE `".$company."status` SET status=1 WHERE status=0 AND gyotaiid='".$list[$p][0]."' AND centerid='".$list[$p][1]."' AND operatedate =DATE_ADD(CURDATE(),INTERVAL $intday DAY)"; $result=@mysql_query($strsql,$my_con); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); Testecho ("発注締めがステータスデータに実施されました。".$errcode." ".$strsql."\n
    "); #debug //chekedflg=1の発注締め済みデータに対して、流通型があれば、サマリーして、賞味期限0000-00-00として、センターの入庫予定データに+1日付で追加する。 $strsql = "INSERT into comeindata(honbuid,centercode,shohincd,comeindate,passqty,comeinflg,creater,createdate) SELECT os.honbuid,os.centercode,os.shohincd,DATE_ADD(CURDATE(),INTERVAL 0 DAY),sum(os.orderqty) AS passqty ,-1 ,'SYSTEM',now() FROM ordersheet AS os INNER JOIN shohinmaster AS sm USING(honbuid,shohincd) WHERE orderdate = CURDATE() and checkedflg = 1 and ryutu_type = 2 GROUP BY honbuid,shohincd,centercode"; /*$result=@mysql_query($strsql,$my_con);*/ //Testecho ("通過型発注が入庫に追加されました。".$errcode." ".$strsql."\n
    "); #debug } } //入庫予定の未確定分の確定処理 $list2 = dbselect("companyid,hcompanyid,comeinfittime","`usecenter`",-1,-1,-1); //処理確定時間リスト for ($p = 0; $p < sizeof($list2); $p++) { $strsql = "UPDATE `".$list2[$p][1].$companysetuzoku."comeindata` SET comeinflg = 1 WHERE comeinflg = 0 and centerid ='".$list2[$p][0]."' and comeindate < "; if(date(Gi) < $list2[$p][2]) { //処理時間前は前々日まで確定 $strsql .= "DATE_ADD(CURDATE(),INTERVAL -1 DAY)"; } else { //処理時間前は前日まで確定 $strsql .= "CURDATE()"; } $result=@mysql_query($strsql,$my_con); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); Testecho ("入荷締めが入荷予定データに実施されました。".$errcode." ".$strsql."\n
    "); #debug } } /*------------------------------------------------------------ * 関数名 : ShimeSet2() * 返却値 : なし * 引数 : 何日前までをデータを処理するか * 説明 : 昨日までの締め処理を実行しているかどうかを調べて、実行無しなら一日単位で過去日付から順に実行する。 * 使用例 : Centerdayset2(5); *------------------------------------------------------------ */ function ShimeSet2($start){ global $HTTP_POST_VARS; global $my_con; //昨日までのデータチェック $start = 0 - $start; For ($a=$start;$a<0;$a++) { ShimeSet1($start); } } /*------------------------------------------------------------ * 関数名 : PrintSelectList1() * 返却値 : なし(プリント) * 引数 : デフォルト値 * 説明 : 掲示非掲示をSELECTリストとしてPRINTする。デフォルトを選択できる。 * 使用例 : PrintSelectList1(1); *------------------------------------------------------------ */ function PrintSelectList1($defaultnum){ echo ""; } /*------------------------------------------------------------ * 関数名 : IntervalDay() * 返却値 : 経過日付または日付 * 引数 : (1) int:対象となる月の経過月数 * : (2) int:返却希望日(1:月初 2:月末) * : (3) int:返却希望型(1:日付 2:経過日数) * 説明 : 対象の月の月初の日付、末日の日付または、月初の本日からの経過日数または月末の経過日数を返却する。 * 使用例 : IntervalDay(-1,2,1); 前月の月末の経過日数 *------------------------------------------------------------ */ Function IntervalDay( $target, $intday, $inttype){ //$target = -9 ; //対象となる月 前月なら-1 if ($intday==1) { //月初 $targetmonth = $target." month"; } else { //月末は対象月+1 $targetmonth2 = $target." month"; $target = $target + 1; //対象となる次の月 $targetmonth = $target." month"; } if ($inttype==1) { if ($intday==1) { //対象月の1日 //echo strtotime ($targetmonth); return(date("Y-m-01",strtotime (date("Y-m-01")." ".$targetmonth))); /* if($target < -11) { $y = floor($target / 12)." year"; return(date("Y-m-01",strtotime (strtotime (date("Y-m-01")." ".$targetmonth)." ".$y))); } else { return(date("Y-m-01",strtotime (date("Y-m-01")." ".$targetmonth))); }*/ } else { //対象月の末日 +1日した年月日から-1日する //echo strtotime ($targetmonth);echo "
    "; //return(date("Y-m-d",strtotime("-1 day",strtotime (date("Y/m/1",strtotime ($targetmonth))))); //return(date("Y/m/1",strtotime ($targetmonth))); //$a = date("Y/m/1",strtotime ($targetmonth)); //return(date("Y-m-d",strtotime("-1 day",strtotime ($a)))); //return(date("Y-m-d",strtotime("-1 day",strtotime (date("Y/m/1",strtotime ($targetmonth)))))); return(date("Y-m-t",(strtotime (date("Y-m-01")." ".$targetmonth2)))); } } else { //対象となる月の1日 $month1 = (int)date("m",strtotime ($targetmonth)); //本日 $month2 = (int)date("m",strtotime ("now")); if ($month1<=$month2) { //前の月のほうが月数が小さい X月1日の経過日付は? X月前の1日の通産日-現在の通産日=マイナスの何日前 $passday = date("z",strtotime(date("Y/m/1",strtotime ($targetmonth)))) - date("z"); } else { //前の月のほうが月数が大きい X月1日の経過日付は? X月前の1日の通産日-(現在の通産日+X月前の年の一年間(12/31)の通産日)=マイナスの何日前 $passday = date("z",strtotime(date("Y/m/1",strtotime ($targetmonth)))) - date("z") - date("z",strtotime(date("Y/12/31",strtotime ("-1 year")))); } if($target < -11) { $passday -= 365; } if ($intday==1) { //対象月の1日 return($passday -1); } else { //対象月の末日は、対象次月の日より1日少ない return(($passday-1)); } } } /*------------------------------------------------------------ * 関数名 : IntervalDate() * 返却値 : 差分日数 日付1が新しいならプラス値 * 引数 : (1) str:日付1 * : (2) str:日付2 * 説明 : 日付1と日付2の日数差分を返却する。日付1-日付2 * 使用例 : IntervalDate("2005-1-1","2004-1-1"); * 使用例 : IntervalDate("2005/1/1","2004/1/1"); *------------------------------------------------------------ */ Function IntervalDate( $strdate1, $strdate2){ $strdate1 = str_replace("-","/",$strdate1); $strdate2 = str_replace("-","/",$strdate2); return((date("U",strtotime(date($strdate1))) - date("U",strtotime(date($strdate2))))/43200); } /*------------------------------------------------------------ * 関数名 : PrintCheckbox() * 返却値 : なし * 引数 : (1) array:表示名称、コードの2次元リスト * : (2) array:コードの1次元リスト デフォルトはarray("0,"0","0")の形で渡す * : (2) str:変数名 * : (2) str:タイプ(1:チェックリストボックス表示、2:リスト値) * 説明 : テーブルリストと、回答リストの2つを渡し、チェックリストボックスか、値をプリントする。ただしリストはコード昇順であること。 * 使用例 : PrintCheckbox($codetabledata,$code,"code",2); 温度帯の表示 * 使用例 : IPrintCheckbox($codetabledata,array("1","2","3"),"code",1); *------------------------------------------------------------ */ function PrintCheckbox( $list, $selectedlist, $name, $type){ $n = sizeof($list); $m = sizeof($selectedlist); for ($i = $j = 0; $i < $n; $i++) { if($list[$i][1] == $selectedlist[$j]) { $str = "checked"; $str2 .= $list[$i][0]." "; $j++; } else { $str = ""; } if ($type==1) { echo "".$list[$i][0]."
    "; } } if ($type==2) { echo $str2; } } /*------------------------------------------------------------ * 関数名 : UpdateShohinLevel() * 返却値 : なし * 引数 : (1) str:対象本部会社名 * 引数 : (2) int:対象テーブル1=所属商品マスター、2=商品マスター * 説明 : 対象の本部会社の商品順位リストから1個づつ、1=所属商品マスター、2=商品マスターの順位カラムを更新する。 * 使用例 : UpdateShohinLevel($company,1); *------------------------------------------------------------ */ function UpdateShohinLevel( $targetcompany,$targettable){ global $my_con; //DB接続 if($targettable == 1) { $strsql = "SELECT sum( shukkaqty) as qty, shozokuid, shohincd FROM `".$targetcompany."salesdetail` WHERE createdate > DATE_ADD(CURDATE(),INTERVAL -180 DAY) GROUP BY shozokuid, shohincd"; $result=mysql_query($strsql,$my_con); Testecho ("順位設定
    ".$strsql); #debug $i=1; while ($data = mysql_fetch_array($result)){ $strsql = "UPDATE `".$targetcompany."shozokushohin` SET poplevel2 = '".$data["qty"]."' WHERE shozokuid='".$data["shozokuid"]."' and shohincd = '".$data["shohincd"]."'"; $result2=mysql_query($strsql,$my_con); Testecho ("順位設定$i
    ".$strsql); #debug $i++; } } else { /* $strsql = "SELECT sum( shukkaqty) as qty, shohincd FROM `".$targetcompany."salesdetail` WHERE createdate > DATE_ADD(CURDATE(),INTERVAL -180 DAY) GROUP BY shohincd"; $result=mysql_query($strsql,$my_con); $i=1; while ($data = mysql_fetch_array($result)){ $strsql = "UPDATE `".$targetcompany."shohinmaster` SET poplevel = '".$data["qty"]."' WHERE shohincd = '".$data["shohincd"]."'"; $result2=mysql_query($strsql,$my_con); Testecho ("順位設定$i
    ".$strsql); #debug $i++; } */ } } /*------------------------------------------------------------ * 関数名 : DatabaseAllBackup() * 返却値 : なし * 引数 : なし * 説明 : 接続先のデータベースを全てバックアップする。 * 使用例 : DatabaseAllBackup(); *------------------------------------------------------------ */ function DatabaseAllBackup(){ //include "class_mysqldump.php";includeされていること global $my_con,$datalocation,$hostname,$databasenaming,$hostid,$hostpass,$company,$userdata; myclose(); //バックアップファイル名 $filename = $datalocation."backupdata/allbackupdata_".$company.date("Ymd-Gis").".txt"; //データバックアップ $command = "mysqldump --default-character-set=binary ".$databasenaming." --host=".$hostname." --user=".$hostid." --password=".$hostpass." > ".$filename; system($command); if($databasenaming == "nagasedb2") { $filename2 = $datalocation."backupdata/nagase.txt"; system("cp -f ".$filename." ".$filename2 ); } //バックアップクラス作成 //$dump = new MySQLDump($hostname, $hostid,$hostpass,2); //構造作成 //$dump->dumpDatabaseStructure($databasenaming, $filename); //データバックアップ //$dump->dumpDatabaseData($databasenaming, $filename); myopen(); //バックアップ履歴に保存する $filesize = filesize($filename); $strsql ="INSERT INTO backuphistory(executedate,filename,filesize,creater,createdate) VALUES (CURDATE(),'$filename',$filesize,'".$userdata["tid"]."',now())"; $result=@mysql_query($strsql,$my_con); Testecho($strsql); //debug } /*------------------------------------------------------------ * 関数名 : LeadTimeShift() * 返却値 : 1日曜有り、0日曜無し * 引数 : リード日、納品日 * 説明 : //リードタイム中に日曜が含まれていたら、リードタイム日を一日延ばすために1を返す * 使用例 : $orderda += LeadTimeShift($leadtime); *------------------------------------------------------------ */ Function LeadTimeShift($startday,$endday) { //納品日と発注日の間に日曜が含まれていたら、発注日を1日マイナスにする。リードタイム日を一日延ばす。 for ($iii= $startday; $iii <=$endday; $iii++) { $weeday = (int)date("w",strtotime ("".$iii." day")); //0sun,1Mon,2Tue...6Sat 納品の曜日 if ((int)$weeday==0) { return(-1); } } return(0); } /*------------------------------------------------------------ * 関数名 : CodeMaker() * 返却値 : 暗号値 * 引数 : 1:ID用POST変数(週変り)、2:PASS用POST変数 3:PASS用受け取りPOST変数(1時間ズレ) 4~5:日変わり変数(日で変る) 6~8:ダミーランダム変数(毎回違う) * 説明 : ログイン用暗号変数を作成する。 * 使用例 : CodeMaker(1) * POSTするときCodeMaker(1)を変数名とする; 受け取るとき$_POST{CodeMaker(1)} * POSTするときCodeMaker(2)を変数名とする; 受け取るとき$_POST{CodeMaker(2)}か$_POST{CodeMaker(3)}で受け取る *------------------------------------------------------------ */ function CodeMaker($type){ srand((double)microtime()*1000000); $init1 = rand (12509,91955); $init2 = rand (20659,81533); $initword = array("XLS","RAT","ABS","CTC","LAX", "OCT","DVD","JAN","NPN","ROW", "KIX","FUK","PRO","NBA","JAL", "NYC","BOB","CDR","ETC","ALC", "NRT","SWF","EPS","STS","TYO", "PNG","IMG","POP","FRI","SUN"); $identify2 = 28093 + $init2; $identify = $initword[($init1%30)].$identify2; $init0= 15 + (date("w",strtotime ("+6 day")))*6 ; $weekdate = date("w",strtotime ("+0 day")).date("Ymd"); $word = $initword[(int)$weekdate%30].$weekdate; $id = "z".substr(md5($word), 3, 10); //echo $id; $timecode1 = date("G") * $init0; //時刻を表す数字 $timecode2 = (date("G")-1) * $init0; //1時間前の時刻を表す数字 受信時 $pass = substr(crypt($word,$initword[date("w",strtotime ("+5 day"))]), 3, 7); $daypass = crc32($initword[date("w",strtotime ("+2 day"))]); $daypass2 = substr(crc32($initword[date("w",strtotime ("+2 day"))]),3,10); //mt_srand(microtime()*100000); $post1 = substr(md5($timecode1.$pass),3,10); $post2 = substr(md5($timecode2.$pass),3,10); $daypass = substr(md5($daypass),3,10); $daypass2 = substr(md5($daypass2),3,10); Switch($type) { case 1: return $id;break; case 2: return $post1;break; case 3: return $post2;break; case 4: return $daypass;break; case 5: return $daypass2;break; case 6: return $identify;break; case 7: return $identify2;break; case 8: return $rndpass;break; default: return $rndpass2;break; //$_POST{$id}; $_POST{CodeMaker(1)} //$_POST{$timecode1.$pass}; $_POST{CodeMaker(2)} //$_POST{$timecode2.$pass}; $_POST{CodeMaker(3)} } } /*------------------------------------------------------------ * 関数名 : CentercodeRestoration101() * 返却値 : なし * 引数 : なし * 説明 : ordertableに101以外のセンターコードが入っていた場合は、101でないレコードのデータをLOGに出し * 使用例 : CentercodeRestoration101(); *------------------------------------------------------------ */ function CentercodeRestoration101(){ global $my_con,$datalocation; //DB接続 //オーダーテーブルのセンターコードに101でないものが入っていないかを //確認する。101でない数を確認。 $data101 = dbselect("count(orderid)","ordersheet","centercode!=101",-1,-1); $datacount = (int)$data101[0][0]; if ($datacount==0) { //件数はゼロなので対処無し //exit; } else { //件数は有り対処開始 //バックアップログ取得 $strsql = "SELECT * INTO OUTFILE '".$datalocation."backupdata/CenterCodeError".$_COOKIE[ckehonbu]."-".$_COOKIE[cketradex]."-".date("YmdGi").".csv' FIELDS TERMINATED BY ',' optionally enclosed by '\"' FROM ordersheet where centercode!='101'"; $result=@mysql_query($strsql,$my_con); Testecho($strsql); //debug //センターコード101以外を101に強制変更 $strsql = "UPDATE ordersheet SET centercode=101,centername='SIMS共配センター' where centercode!=101"; $result=@mysql_query($strsql,$my_con); Testecho($strsql); //debug //メール送信 $msg2 = "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"; $msg2 .= "SIMSアラート インフォメーション \n"; $msg2 .= "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"; $msg2 .= "注文テーブル ordersheetにセンターコードが101だったデータが\n"; $msg2 .= "$datacount 件ありました。\n"; $msg2 .= "このため、強制的に101に変更する注文締処理を行いました。\n詳細はログに記録されました。\n"; $msg2 .="━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"; $msg2 = mb_convert_encoding($msg2, "iso-2022-jp", "UTF-8"); //メール送信コードに変換 $fromto = "FROM:\"TRADEX-SYSTEM\"\nBCC:websystem@yahoo.co.jp\nX-mailer:PHP4"; mail("kmogi@eship.co.jp","SYSTEM AUTO ALART",$msg2,$fromto); } } /*------------------------------------------------------------ * 関数名 : mysql_sql_log() * 返却値 : なし * 引数 : (1) str:実行SQL * : (2) int:実行結果影響行 * : (3) str:実行ファイル名 * 説明 : 更新実行されたSQLを保管する * 使用例 : mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); * mysql_queryの実行後にエラーではない句に投入する *------------------------------------------------------------ */ function mysql_sql_log($strsql,$affected_rows,$page) { global $datalocation,$databasenaming,$userdata; $loc = $datalocation."sql_logs/".substr($databasenaming,0,7)."_".$userdata[tid]."_".date("md").".sql"; $fp = @fopen($loc, "a"); $strsql = ereg_replace("[\t|\r|\n]"," ",$strsql); $strsql = str_replace("now()","'".date("Y-m-d G:i:s")."'",$strsql); $strsql = str_replace("CURDATE()","'".date("Y-m-d")."'",$strsql); // echo $strsql; //now()はCURDATE()はSQLを入れ替えしておく //SQL 時間 影響行(結果更新無しは0) スクリプト実行ファイル // echo __LINE__.$loc."\n
    "; system("chmod 666 ".$loc); fputs($fp, $strsql.";\t".date("Y-m-d G:i:s")."\t".$affected_rows."\t".$page."\n"); fclose($fp); return(0); } /*------------------------------------------------------------ * 関数名 : mysql_sql_log2() * 返却値 : なし * 引数 : (1) str:実行SQL(SELECT文) * : (2) str:実行ファイル名 * 説明 : データ取得実行されたSQLを保管する * 使用例 : mysql_sql_log2($strsql,$_SERVER['SCRIPT_NAME'].":".__LINE__); * mysql_queryの実行後にエラーではない句に投入する *------------------------------------------------------------ */ function mysql_sql_log2($strsql,$page) { global $datalocation,$databasenaming,$userdata; //$fp = @fopen($datalocation.date("Ymd-G").".sql", "a") or die("Error!!n"); /* $loc = $datalocation."sql_logs/sql_".$databasenaming."_".date("Ymd")."_select_".$userdata[tid].".sql"; $fp = @fopen($loc, "a"); $strsql = ereg_replace("[\t|\r|\n]"," ",$strsql); $strsql = str_replace("now()","'".date("Y-m-d G:i:s")."'",$strsql); $strsql = str_replace("CURDATE()","'".date("Y-m-d")."'",$strsql); //now()はCURDATE()はSQLを入れ替えしておく //SQL 時間 影響行(結果更新無しは0) ユーザーID スクリプト実行ファイル fputs($fp, $strsql.";\t".date("Y-m-d G:i:s")."\t".$page."\n"); fclose($fp); */ return(0); } /*------------------------------------------------------------ * 関数名 : printlotnum() * 返却値 : Print文 * 引数 : (1) str:ログナンバー * 説明 : 渡されたログナンバーにハイフン付でプリントする * 使用例 : printlotnum('10250167'); *------------------------------------------------------------ */ function printlotnum($lotnum) { if ((int)$lotnum==0) { return(0); } else { print (int)($lotnum/10000); print "-"; print (int)(($lotnum % 10000) / 100); print "-"; print (int)(($lotnum % 10000) % 100); return(0); } } /*------------------------------------------------------------ * 関数名 : returnlotnum() * 返却値 : ハイフン付のロット番号 * 引数 : (1) str:ログナンバー * 説明 : 渡されたログナンバーにハイフン付でプリントする * 使用例 : returnlotnum('10250167'); *------------------------------------------------------------ */ function returnlotnum($lotnum) { if ((int)$lotnum==0) { return(0); } else { $str = (int)($lotnum/10000); $str .= "-"; $str .= (int)(($lotnum % 10000) / 100); $str .= "-"; $str .= (int)(($lotnum % 10000) % 100); return($str); } } /*------------------------------------------------------------ * 関数名 : locationcheck() * 返却値 : 1:実在 0:実在しない * 引数 : ロケーション番号 * 説明 : ロケーションが実在するかをチェックする * 使用例 : locationcheck('240-05-05'); *------------------------------------------------------------ */ function locationcheck($location) { //ロケーションテーブルを確認する $locationdata = dbselect("count(loccode)","location","loccode='".$location."'",-1,-1); return($locationdata[0][0]); } /*------------------------------------------------------------ * 関数名 : lookuplocation() * 返却値 : ロケーション:実在する場合 空文字:実在しない or 固定ロケでない * 引数 : 商品コード,センターコード、予備 * 説明 : 商品コードより固定ロケーションを返却 * 使用例 : lookuplocation($data["shohincd"],$data["centercode"],1); *------------------------------------------------------------ */ function lookuplocation($scd,$cd,$data) { global $userdata; //商品マスタを参照する $locationdata = dbselect("loccode","shohinlocation","honbuid = '".$userdata["honbuid"] ."' and shohincd='".$scd."' and centercode='".$cd."' and freeloc=1",-1,-1); return($locationdata[0][0]); } /*------------------------------------------------------------ * 関数名 : PrintShomi() * 返却値 : なし(HTML) * 引数 : 商品マスタのshomiflg値 * 引数 : 簡易表示無し1,簡易表示有り0 SJISフル表記2 フル表記B3 echo無し 4 * 説明 : 商品の賞味期限管理方法を画面に表示する * 用法 : *------------------------------------------------------------ */ function PrintShomi( $flg,$flg2) { if ($flg2==0) { Switch($flg) { case 1: echo "賞"; break; case 2: echo "製"; break; case 3: echo "入"; break; case 4: echo "出"; break; default: echo "?"; } } elseif ($flg2==1) { Switch($flg) { case 1: echo "賞味期限"; break; case 2: echo "製造日"; break; case 3: echo "入荷日"; break; case 4: echo "出荷日"; break; default: echo "不明"; } } elseif ($flg2==2) { Switch($flg) { case 1: echo "\"".Sjis("賞味期限")."\","; break; case 2: echo "\"".Sjis("製造日")."\","; break; case 3: echo "\"".Sjis("入荷日")."\","; break; case 4: echo "\"".Sjis("出荷日")."\","; break; default: echo "\"".Sjis("不明")."\","; } } elseif ($flg2==3) { Switch($flg) { case 1: echo "賞味期限"; break; case 2: echo "製造日"; break; case 3: echo "入荷日"; break; case 4: echo "納品日"; break; default: echo "不明"; } } elseif ($flg2==4) { Switch($flg) { case 1: return "賞味期限"; break; case 2: return "製造日"; break; case 3: return "入荷日"; break; case 4: return "納品日"; break; default: return "不明"; } } elseif ($flg2==5) { Switch($flg) { case 1: return "賞"; break; case 2: return "製"; break; case 3: return "入"; break; case 4: return "納"; break; default: return "不明"; } } } /*------------------------------------------------------------ * 関数名 : PrintRyutuType() * 返却値 : なし(HTML) * 引数 : 在庫型1 通過型2 * 説明 : 商品流通型を画面に表示する * 用法 : *------------------------------------------------------------ */ function PrintRyutuType( $flg,$flg2) { Switch($flg) { case 1: echo "DC"; break; case 2: echo "TC"; break; default: echo "不明"; } } /*------------------------------------------------------------ * 関数名 : PrintComeinFlg() * 返却値 : なし(プリント) * 引数 : 変数名、デフォルト * 説明 : 入荷区分をSELECTリストとしてPRINTする。デフォルトを選択できる。 * 使用例 : PrintComeinFlg("kubun".$j",$data[kubun]); *------------------------------------------------------------ */ function PrintComeinFlg($flg1,$flg2){ echo "\n"; } /*------------------------------------------------------------ * 関数名 : PrintComeinFlg2() * 返却値 : なし(プリント) * 引数 : 変数名、デフォルト * 説明 : 入荷区分をSELECTリストとしてPRINTする。デフォルトを選択できる。 * 使用例 : PrintComeinFlg2($data[kubun]); *------------------------------------------------------------ */ function PrintComeinFlg2($flg1){ Switch($flg1) { case 1: echo "通常入荷\n"; break; case 2: echo "緊急入荷\n"; break; case 3: echo "入荷訂正"; break; case 4: echo "直送"; break; default: echo "その他"; } } /*------------------------------------------------------------ * 関数名 : DataSet() * 返却値 : なし(変数代入) * 引数 : なし * 説明 : 業態、センター、サプライヤー、納品先のデータをセットする * 使用例 : DataSet(); *------------------------------------------------------------ */ function DataSet(){ global $company,$centerdata,$gyotaidata,$makerdata,$tenpodata,$companydata,$codedata,$deliverydata,$userdata,$strsqldbselect,$settingdata,$branddata,$strsqldbselect; //センター if ($userdata["kengen"]==30) { $centerdata = dbselect("c.companyname,c.companyid,u.centershimetimeDC,u.centershimetimeTC,c.postcode,c.address1,c.address2,c.tel,c.fax,c.address3,u.ordershimetime","company as c,usecenter as u","c.companyid = u.companyid AND hcompanyid = '".$userdata["hcompanyid"]."' AND c.companyid = '".$userdata["companyid"]."'","c.companyid",-1); $userdata["centerid"] = $userdata["companyid"]; } else { if($userdata["centerid"] <> "") { if(strpos($userdata["centerid"], "'") === false) { $centerdata = dbselect("c.companyname,c.companyid,u.centershimetimeDC,u.centershimetimeTC,c.postcode,c.address1,c.address2,c.tel,c.fax,c.address3,u.ordershimetime","company as c,usecenter as u","c.companyid = u.companyid AND hcompanyid = '".$userdata["hcompanyid"]."' AND c.companyid = '".$userdata["centerid"]."'","c.companyid",-1); } else { $centerdata = dbselect("c.companyname,c.companyid,u.centershimetimeDC,u.centershimetimeTC,c.postcode,c.address1,c.address2,c.tel,c.fax,c.address3,u.ordershimetime","company as c,usecenter as u","c.companyid = u.companyid AND u.companyid in (".$userdata["centerid"].")","c.companyid",-1); } } else { $centerdata = dbselect("c.companyname,c.companyid,u.centershimetimeDC,u.centershimetimeTC,c.postcode,c.address1,c.address2,c.tel,c.fax,c.address3,u.ordershimetime","company as c,usecenter as u","c.companyid = u.companyid AND hcompanyid = '".$userdata["hcompanyid"]."'","c.companyid",-1); } } if($company == "ha_") {//自由が丘限定 if($userdata["centerid"] <> "") { $centerdata = dbselect("centername,centercd,'0','1',postcode,address1,address2,tel,fax","v_center","centercd in (".$userdata["centerid"].")",-1,-1); } else { $centerdata = dbselect("centername,centercd,'0','1',postcode,address1,address2,tel,fax","v_center",-1,-1,-1); } } //配送業者 if ($userdata["kengen"]==60) { $deliverydata = dbselect("companyname,companyid,namedetail","company","companykind=60 AND companyid='".$userdata["companyid"]."'","companyid",-1); $userdata["deliveryid"] = $userdata["companyid"]; } else { $deliverydata = dbselect("companyname,companyid,namedetail","company","companykind=60","companyid",-1); } //サプライヤーリスト if($company == "yks_") { $stradd = " and length(companyid) = 5 ";} if ($userdata["kengen"] == 40) { //サプライヤーは自分だけ $makerdata = dbselect("companyname,companyid,tel,fax","company","companykind=40 AND companyid='".$userdata["companyid"]."'",-1,-1); //ユーザー情報セット $userdata["supplyerid"] = $userdata["companyid"]; } else { if($userdata["supplyerid"] <> "") { $makerdata = dbselect("companyname,companyid,tel,fax","company","companykind=40 AND companyid='".$userdata["supplyerid"]."'". $stradd,"companyid",-1); } else if($userdata["supplyerid2"] <> "") { $makerdata = dbselect("companyname,companyid,tel,fax","company","companykind=40 AND companyid in(".$userdata["supplyerid2"].")". $stradd,"companyid",-1); } else { $makerdata = dbselect("companyname,companyid,tel,fax","company","companykind=40". $stradd,"companyid",-1); } } //納品先データの取得 if ($userdata["kengen"] == 50) { $tenpodata = dbselect("shozokuname,shozokuid,gyotaiid,centerid,brand,picktimes","`".$company."shozokumaster`","shozokuid='".$userdata["shozokuid"]."'","shozokuid",-1); //ユーザー情報セット $userdata["centerid"] = $tenpodata[0][3]; //ブランドはすでにセットされている $userdata["brand"] = $tenpodata[0][4]; $branddata = dbselect("cname,code","`".$company."code`","codekind = 105 and code ='".$tenpodata[0][4]."'","code",-1); } else { if($userdata["brand"] <> "") { $branddata = dbselect("cname,code","`".$company."code`","codekind = 105 and code in (".$userdata["brand"].")","code",-1); $tenpodata = dbselect("shozokuname,shozokuid,gyotaiid,centerid,route,picktimes","`".$company."shozokumaster`","shozokuid > 0 and brand in (".$userdata["brand"].")","shozokuid",-1); } else { $branddata = dbselect("cname,code","`".$company."code`","codekind = 105","code",-1); $tenpodata = dbselect("shozokuname,shozokuid,gyotaiid,centerid,route,picktimes","`".$company."shozokumaster`","shozokuid > 0","shozokuid",-1); } } //会社データの取得 $companydata = dbselect("companyname,companyid","company",-1,"companyid",-1); $userdata["honshaname"] = GetList($companydata,$userdata["hcompanyid"]); //本社名称 //業態リスト if ($userdata["kengen"]==30) { //センター $gyotaidata = dbselect("gname,g.gyotaiid,hacchutime,nohinweek","`".$company."gyotai` as g,usecenter as u","g.gyotaiid = u.gyotaiid AND hcompanyid = '".$userdata["hcompanyid"]."' AND companyid = '".$userdata["companyid"]."'","gyotaiid",-1); } elseif ($userdata["kengen"]==50) { //納品先 $gyotaidata = dbselect("gname,g.gyotaiid,hacchutime,nohinweek","`".$company."gyotai` as g,`".$company."shozokumaster` as s","g.gyotaiid = s.gyotaiid AND shozokuid = '".$userdata["shozokuid"]."'","gyotaiid",-1); } elseif ($userdata["gyotaiid"] <> "") { $gyotaidata = dbselect("gname,g.gyotaiid,hacchutime,nohinweek","`".$company."gyotai` as g","gyotaiid='".$userdata["gyotaiid"]."'","gyotaiid",-1); } else { $gyotaidata = dbselect("gname,g.gyotaiid,hacchutime,nohinweek","`".$company."gyotai` as g",-1,"gyotaiid",-1); } //温度帯 $codedata = dbselect("cname,code","`".$company."code`","codekind=1","code",-1); //設定データ $data = dbselect("settingid,setting_flg","`setting`",-1,-1,-1); $i = 0; while ($i < count($data)) { $settingdata[$data[$i][0]] = $data[$i][1]; $i++; } } /*------------------------------------------------------------ * 関数名 : FunctionDataSet() * 返却値 : 変数代入 * 引数 : ユーザー名(COOKIE) * 説明 : ユーザーが使える画面名、プログラム名をセットする * 使用例 : FunctionDataSet(); *------------------------------------------------------------ */ function FunctionDataSet(){ global $functiondata,$userdata,$strsqldbselect; $functiondata = dbselect("functionname,pgname,kubunname,kubun","userrole as u,rolefunction as r,function as f","u.roleid=r.roleid AND r.functionid=f.functionid AND u.userroleid='".$userdata["userroleid"]."' AND dispmenu = '1'","kubun,level,f.functionid",-1); mysql_sql_log($strsqldbselect,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); } /*------------------------------------------------------------ * 関数名 : FunctionCheck() * 返却値 : True/False * 引数 : 機能ID、ユーザー名(COOKIE) * 説明 : ユーザーが使える画面名、プログラム名をセットする * 使用例 : FunctionCheck('0100'); *------------------------------------------------------------ */ function FunctionCheck($funcid){ /* $functiondata = dbselect("functionname,pgname","userrole,rolefunction,`function`","userrole.roleid=rolefunction.roleid AND rolefunction.functionid=function.functionid AND tid='".$userdata["kengen"]."' AND rolefunction.functionid='".$funcid."'","kubun,level,f.functionid",-1); if (sizeof($functiondata)==1) { return True; } else { return False; } */ } /*------------------------------------------------------------ * 関数名 : PrintStatusArrow() * 返却値 : なし(HTML) * 引数 : (1) int: ステップ総数 * : (2) int: 実行ステップ数 * 説明 : 進捗状況を矢印のHTMLで出力 *------------------------------------------------------------ */ function PrintStatusArrow( $total, $selected) { for ($i = 1; $i <= $total; $i++) { if ($i<=$selected) { echo ""; } else { echo ""; } } } /*------------------------------------------------------------ * 関数名 : PrintHikiateStatus() * 返却値 : なし(HTML) * 引数 : (1) int: ステップ総数 * 引数 : (2) int: statusテーブルのstatus * 説明 : 文字で出力 *------------------------------------------------------------ */ function PrintHikiateStatus( $total, $selected) { PrintStatusArrow($total,$selected); echo "

    \n"; Switch($selected) { case 0: echo "受注中\n"; break; case 1: echo "1. 受注締め済・受注承認待ち\n"; break; case 2: echo "2. 受注承認済・仮引当待ち\n"; break; case 3: echo "3. 仮引当済・欠品対応待ち\n"; break; case 4: echo "4. 欠品対応済・出荷確定待ち\n "; break; case 5: echo "5. 出荷確定済・引当確定待ち\n"; break; case 6: echo "6. 引当確定済\n"; break; default: echo "7. 出荷確定済\n"; } } /*------------------------------------------------------------ * 関数名 : MakeStatusData() * 返却値 : なし * 引数 : (1) int: 本日からの日付0は本日 * 説明 : $company.statusデータを作成する *------------------------------------------------------------ */ function MakeStatusData( $int) { global $my_con,$company; //DB接続 $int = (int)$int; //2日前からデータを作成する for($str="", $pi=-4; $pi <= $int; $pi++) { $str ="operatedate=DATE_ADD(CURDATE(),INTERVAL $pi DAY)"; //データがなければステータスデータにデータ挿入 $statusdata = dbselect("a.gyotaiid,centerid,picktimes","(SELECT gyotaiid,centerid,picktimes FROM `".$company."shozokumaster` group by centerid,gyotaiid,picktimes ) as a left join (SELECT operatedate,statusid,gyotaiid,centerid,picktimes FROM `".$company."status` where operatedate = DATE_ADD(CURDATE(),INTERVAL $pi DAY) ) as b using(gyotaiid,centerid,picktimes)"," b.statusid is null",-1,-1); For ($zi = 0 ;$zi < sizeof($statusdata); $zi++) { $strsql ="INSERT INTO `".$company."status` (operatedate,gyotaiid,centerid,picktimes) values(DATE_ADD(CURDATE(),INTERVAL $pi DAY),'".$statusdata[$zi][0]."','".$statusdata[$zi][1]."','".$statusdata[$zi][2]."')"; $result=mysql_query($strsql,$my_con); Testecho ($strsql); #debug mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); } } } /*------------------------------------------------------------ * 関数名 : DataUpdate() * 返却値 : なし * 引数 : (1) str: 対象テーブル名 * 引数 : (2) str: キー項目名 * 引数 : (3) str: キー * 引数 : (4) str: 対象項目名 * 引数 : (5) str: 更新内容 * 説明 : 対象テーブルの指定キーの対象項目を更新する valueには''を使用時につける * 使用例 : DataUpdate("$company.status","statusid",$_POST[id],"grosstime","now()"); *------------------------------------------------------------ */ function DataUpdate( $table, $key, $keyvalue, $columun, $value) { global $my_con; //DB接続 $strsql ="UPDATE `$table` SET `$columun` = $value WHERE `$key`=$keyvalue LIMIT 1"; $result=mysql_query($strsql,$my_con); Testecho ($strsql); #debug mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); } /*------------------------------------------------------------ * 関数名 : OperateDateSet() * 返却値 : なし * 引数 : 本日よりの日付0は本日 * 説明 : 発注データに作業日をセットする * 使用例 : OperateDateSet(0); *------------------------------------------------------------ */ function OperateDateSet($intday){ global $HTTP_POST_VARS; global $my_con; global $company; $intday2 = $intday + 1; $strsql = "UPDATE `".$company."ordermain` SET operatedate=DATE_ADD(CURDATE(),INTERVAL $intday DAY) WHERE operatedate is null AND deliverdate=DATE_ADD(CURDATE(),INTERVAL $intday2 DAY)"; $result=@mysql_query($strsql,$my_con); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); // Testecho ("作業日セットが実施されました。".$errcode." ".$strsql."\n
    "); #debug } /*------------------------------------------------------------ * 関数名 : PrintMsg() * 返却値 : echo文 * 引数 : エラーメッセージ,OKメッセージ,横幅(pix) * 説明 : エラーメッセージを色つきで表示する * 使用例 : PrintMsg($msgerr,$msgok,200); *------------------------------------------------------------ */ function PrintMsg($err,$ok,$width){ if(strlen($err)>0) { echo "

    ".$err."
    "; } elseif(strlen($ok)>0) { echo "
    ".$ok."
    "; } } /*------------------------------------------------------------ * 関数名 : PrintSelectListB() * 返却値 : echo文(SELECT) * 引数 : (1) i: プルダウンリストの配列 * [i][0]表示文字列[i][1]value コード値は2番目 * : (2) i: リストの中でどれをSelectedにするか(配列要素番号) * : (3) i: 行頭スペース数 * 説明 : 日付、日付、件数の配列からSELECT句を生成する 値は本日よりの経過日数 * 使用例 : PrintSelectListB($comeindata,$_POST[chgday],0); $comeindataはSELECT date,date,count(id)の配列 配列3番目の件数は無くても良い * 生成例 : *------------------------------------------------------------ */ function PrintSelectListB( $list, $selected, $spaceNo ) { for($space=" ", $pi=1; $pi < $spaceNo; $pi++) { $space .= " "; } $n = sizeof($list); for ($pi = 0; $pi < $n; $pi++) { $interval = getdate_diff($list[$pi][1],date("Y-m-d")); $str = $space.""; $str .= $list[$pi][1]; if((int)$list[$pi][2]>0) $str .= " (".$list[$pi][2]."件)"; if($interval["days"]==0) $str .= " 本日"; $str .= "\n"; echo $str; } } /*------------------------------------------------------------ * 関数名 : date_diff() * 返却値 : array 連想配列 * 引数 : (1) str:"YYYY-MM-DD" * : (2) str:"YYYY-MM-DD" * 説明 : (1)(2)の日付差分を返す PHP5.3より標準機能として装備するため5.3>ver用 * 使用例 : $interval = date_diff($list[$pi][1],date("Y-m-d")); 現在との時差 $interval["dayes"] : (int)5 *------------------------------------------------------------ */ function xdate_diff($d1, $d2){ $d1 = (is_string($d1) ? strtotime($d1) : $d1); $d2 = (is_string($d2) ? strtotime($d2) : $d2); $diff_secs = abs($d1 - $d2); $base_year = min(date("Y", $d1), date("Y", $d2)); $diff = mktime(0, 0, $diff_secs, 1, 1, $base_year); $result = array( "years" => date("Y", $diff) - $base_year, "months_total" => (date("Y", $diff) - $base_year) * 12 + date("n", $diff) - 1, "months" => date("n", $diff) - 1, "days_total" => floor($diff_secs / (3600 * 24)), "days" => date("j", $diff) - 1, "hours_total" => floor($diff_secs / 3600), "hours" => date("G", $diff), "minutes_total" => floor($diff_secs / 60), "minutes" => (int) date("i", $diff), "seconds_total" => $diff_secs, "seconds" => (int) date("s", $diff) ); $result["days"] = $result["days_total"]; if (($d1 - $d2)<0) { $result["days"] = -$result["days_total"]; $result["days_total"] = -$result["days_total"]; $result["months"] = -$result["months"]; $result["hours"] = -$result["hours"]; } return $result; } /*------------------------------------------------------------ * 関数名 : getdate_diff() * 返却値 : array 連想配列 * 引数 : (1) str:"YYYY-MM-DD" * : (2) str:"YYYY-MM-DD" * 説明 : (1)(2)の日付差分を返す PHP5.3より標準機能として装備するため5.3>ver用 * 使用例 : $interval = getdate_diff($list[$pi][1],date("Y-m-d")); 現在との時差 $interval["dayes"] : (int)5 *------------------------------------------------------------ */ function getdate_diff($d1, $d2){ $d1 = (is_string($d1) ? strtotime($d1) : $d1); $d2 = (is_string($d2) ? strtotime($d2) : $d2); $diff_secs = abs($d1 - $d2); $base_year = min(date("Y", $d1), date("Y", $d2)); $diff = mktime(0, 0, $diff_secs, 1, 1, $base_year); $result = array( "years" => date("Y", $diff) - $base_year, "months_total" => (date("Y", $diff) - $base_year) * 12 + date("n", $diff) - 1, "months" => date("n", $diff) - 1, "days_total" => floor($diff_secs / (3600 * 24)), "days" => date("j", $diff) - 1, "hours_total" => floor($diff_secs / 3600), "hours" => date("G", $diff), "minutes_total" => floor($diff_secs / 60), "minutes" => (int) date("i", $diff), "seconds_total" => $diff_secs, "seconds" => (int) date("s", $diff) ); $result["days"] = $result["days_total"]; if (($d1 - $d2)<0) { $result["days"] = -$result["days_total"]; $result["days_total"] = -$result["days_total"]; $result["months"] = -$result["months"]; $result["hours"] = -$result["hours"]; } return $result; } /*------------------------------------------------------------ * 関数名 : InputItem() * 返却値 : なし(HTML出力) * 引数 : A.int:出力データ区分(1センター/2納品先/3サプライヤー/4温度帯/5配送/6会社/7業態/8商品/9ブランド) B.int:自動サブミット(1ON/2OFF) C.str:FORM名(-1:sww(デフォルト)/自動サブミットON時はその値) D.int:選択してください表記(1ON/2OFF) E.int:デフォルト値(1.POST使用/2.変数渡し) F.str:デフォルト値(-1:なし/デフォルト値=2のとき) G.int:全ての表示(1:有り/2:無し/3:選択して下さい表示) * 説明 : INPUTのブロックをHTML出力する * 使用例 : InputItem(1,1,-1,2,1,-1,1); //センター InputItem(2,1,-1,2,2,$shozokuid,1); //納品先 InputItem(3,1,-1,2,1,-1,1); //サプライヤー InputItem(4,1,-1,2,1,-1,1); //温度帯 *------------------------------------------------------------ */ function InputItem( $datakubun, $autosubmit, $formname, $pleaseselect, $defalutkubun, $defaltvalue, $dispall){ global $company,$HTTP_POST_VARS,$centerdata,$centerdataAll,$gyotaidata,$makerdata,$tenpodata,$companydata,$codedata,$deliverydata,$userdata,$shohindata,$branddata; //A.出力データ区分(1センター/2納品先/3サプライヤー/4温度帯/5配送/6会社/7業態) Switch($datakubun) { case 1: if($company == "ha_") { $strtitle = "在庫場所"; } else { $strtitle = "センター"; } $strpostname = "center"; $setdata = $centerdata; if(sizeof($centerdataAll) > 1) {$setdata = $centerdataAll; } if($userdata["kengen"] == 30) { echo ""; return; } elseif(sizeof($setdata) == 1) { echo ""; return; } break; case 2: $strtitle = "納品先"; $strpostname = "tenpo"; $setdata = $tenpodata; if ($userdata["kengen"] == 50) { echo ""; return; } elseif(($userdata["kengen"] > 30 ) and (sizeof($tenpodata) == 1)) { echo ""; return; } break; case 3: $strtitle = "サプライヤー"; $strpostname = "maker"; $setdata = $makerdata; if ($userdata["kengen"] == 40) { echo ""; return; } elseif(sizeof($makerdata) == 1) { echo ""; return; } break; case 4: $strtitle = "温度帯"; $strpostname = "code"; $setdata = $codedata; break; case 5: $strtitle = "配送"; $strpostname = "deliver"; $setdata = $deliverydata; if ($userdata["kengen"] == 50) { echo ""; return; } break; case 6: $strtitle = "会社"; $strpostname = "com"; $setdata = $companydata; break; case 7: $strtitle = "業態"; $strpostname = "gyotai"; $setdata = $gyotaidata; break; case 8: $strtitle = "商品"; $strpostname = "shohincd"; $setdata = $shohindata; break; case 9: $strtitle = "ブランド"; $strpostname = "brand"; $setdata = $branddata; if ($userdata["kengen"] == 50) { echo ""; return; } elseif(sizeof($tenpodata) == 1) { echo ""; return; } break; default: break; } //E.F.デフォルト値(1.POST使用/2.変数渡し) if($defalutkubun == 1) { $defaltvalue = $_POST{$strpostname}; } else { //$defaltvalue = $defaltvalue; } //HTML出力開始 echo " \n"; echo " $strtitle
    \n"; //C.FORM名(-1:sww/自動サブミットON時はその値) if($formname == -1) { $formname = "sww"; } //納品先リストだけ抽出機能有り if ($datakubun == 2) { echo "\n"; } elseif($datakubun == 8) { echo "\n"; } //B.自動サブミット(1ON/2OFF) echo " \n"; echo "
    \n"; } /*------------------------------------------------------------ * 関数名 : showSearchbox() * 返却値 : HTML出力 * 引数 : (1) str:デフォルト表示の文字Value (2) int:自動サブミット(1ON/2OFF) (3) str:FORM名(-1:sww(デフォルト)/自動サブミットON時はその値) * 説明 : 商品検索のINPUT BOXを出力 * 使用例 : showSearchbox($sw,1,-1); //商品検索 *------------------------------------------------------------ */ function showSearchbox( $sw, $autosubmit, $formname){ //3.FORM名(-1:sww/自動サブミットON時はその値) if($formname == -1) { $formname = "sww"; } global $intEDITon; //1半角英数のみ 0:全文字OK if($intEDITon == 1) { $strHTML = " class = \"EDIT\" ";} echo "\t\n"; echo "\t品番・品名
    \n"; //2.自動サブミット(1ON/2OFF) echo "\t\n"; } else { echo ">\n"; } echo "\t
    \n"; } /*------------------------------------------------------------ * 関数名 : showSearchbox3() * 返却値 : HTML出力 * 引数 : (1) str:デフォルト表示の文字Value (2) int:自動サブミット(1ON/2OFF) (3) str:FORM名(-1:sww(デフォルト)/自動サブミットON時はその値) (4) int:半角指定IME(1ON/2OFF) (5) int:TAB INDEX番号指定 (1,2,3,4) (6) str:変数 (7) str:文言 (8) 予備 (9) 予備 * 説明 : 商品検索のINPUT BOXを出力 * 使用例 : showSearchbox3($sw,2,-1,1,1,"searchword","品番",-1,-1); //商品検索 *------------------------------------------------------------ */ function showSearchbox3( $sw, $autosubmit, $formname, $intIME, $intTab, $strHensu, $strSTR, $int1, $int2){ //3.FORM名(-1:sww/自動サブミットON時はその値) if($formname == -1) { $formname = "sww"; } if($intIME == 1) { $strHTML = " class = \"EDIT\" ";} echo "\t\n"; echo "\t".$strSTR."
    \n"; //2.自動サブミット(1ON/2OFF) echo "\t\n"; } else { echo ">\n"; } echo "\t
    \n"; } /*------------------------------------------------------------ * 関数名 : showColorBox() * 返却値 : HTML出力 * 引数 : (1) str:デフォルト表示の文字Value (2) int:自動サブミット(1ON/2OFF) (3) str:FORM名(-1:sww(デフォルト)/自動サブミットON時はその値) * 説明 : カラー検索のINPUT BOXを出力 * 使用例 : showColorBox($swcolor,1,-1); //商品検索 *------------------------------------------------------------ */ function showColorBox( $sw, $autosubmit, $formname){ global $intEDITon; //1半角英数のみ 0:全文字OK if($intEDITon == 1) { $strHTML = " class = \"EDIT\" ";} //3.FORM名(-1:sww/自動サブミットON時はその値) if($formname == -1) { $formname = "sww"; } echo "\t\n"; echo "\tカラー
    \n"; //2.自動サブミット(1ON/2OFF) echo "\t\n"; } else { echo ">\n"; } echo "\t
    \n"; } /*------------------------------------------------------------ * 関数名 : showSearchBotton() * 返却値 : HTML出力 * 引数 : (1) str:ボタン文字(-1:デフォルト'検索表示'/またはその文字) (2) str:FORM名(-1:sww(デフォルト)/自動サブミットON時はその値) (3) str:予備 * 説明 : 商品検索の検索ボタンを出力 * 使用例 : showSearchBotton(-1,-1,-1); //検索ボタン *------------------------------------------------------------ */ function showSearchBotton( $str1, $formname, $str3){ if($str1 == -1) { $str1 = "検索"; } //3.FORM名(-1:sww) if($formname == -1) { $formname = "sww"; } echo "\t\n"; echo "\t
    \n"; echo "\t"; echo "\t
    \n"; } /*------------------------------------------------------------ * 関数名 : FunctionUseCheck * 返却値 : true - 使用可能 * false - 使用不可 * 引数 : (1) str:機能ID * 説明 : その機能IDが利用ユーザーが使用可能かをチェックする * 使用例 : FunctionUseCheck('0100'); *------------------------------------------------------------ */ function FunctionUseCheck($strfunction) { global $userdata,$strsqldbselect; $data = dbselect("count(rolefunctionid)","`rolefunction`","roleid = '".$userdata["roleid"]."' and functionid like '".$strfunction."' and companyid = '".$userdata["hcompanyid"]."'",-1,-1); if ($data[0][0] == 0) { return false; } else { return true; } } function FunctionUseCheck2(){ global $userdata,$strsqldbselect; $test = explode(".",$_SERVER['SCRIPT_NAME']); $test = explode("/",$test[0]); if(!FunctionUseCheck($test[2])) { echo ""; echo ""; title(); echo ""; echo ""; Logout(); echo "ログアウトします。
    同一IDを同時に使用した、または一定時間が経過しました。
    このままお待ちください。"; echo "not available "; echo $_SERVER['SCRIPT_NAME'].$test[2]; var_dump($userdata); echo "TKN:".$_SESSION[cketoken]." AND SSID:".$_COOKIE["PHPSESSID"]; echo ""; echo ""; exit; } } /*------------------------------------------------------------ * 関数名 : MailSendMsg * 返却値 : なし(メール送信) * 引数 : (1) str:メール本文 * 引数 : (2) str:メールタイトル * 引数 : (33) int:1:送信 * 説明 : メールをログインユーザーに送信する * 使用例 : MailSendMsg($stremail,"注文確認メール",1);//メール送信 *------------------------------------------------------------ */ function MailSendMsg( $stremail, $subject, $flg) { global $userdata; if($flg == 1) { //$strmsg = "".strftime ("%G/%m/%d (%a) %T",time())."\n"; //$strmsg .= $stremail; $fromname = mb_encode_mimeheader(mb_convert_encoding("LogiGate自動",'UTF-8','auto')); //$fromto = "FROM:$fromname\nBCC:info-logigate@eship.co.jp\nX-mailer:PHP5"; //mb_send_mail($userdata["email"],$subject.strftime("%G/%m/%d",time()),$strmsg,$fromto); MailSendMessage($stremail,$subject,$userdata["email"],$fromname,"info-logigate@eship.co.jp",1); } } /*------------------------------------------------------------ * 関数名 : MailSendMessage * 返却値 : なし(メール送信) * 引数 : (1) str:メール本文 * 引数 : (2) str:メールタイトル * 引数 : (3) str:メール送信先メールアドレス * 引数 : (4) str:メール送信元名称 * 引数 : (5) str:メール送信元メールアドレス * 引数 : (6) int:1:予備フラグ * 説明 : メールをログインユーザーに送信する * 使用例 : MailSendMessage($strmassage,$subject,$userdata["email"],$fromname,"info-logigate@eship.co.jp",1); *------------------------------------------------------------ */ function MailSendMessage( $stremail, $subject, $toaddress, $fromname, $fromaddress, $flg) { global $bccmailaddress; $strmsg = "".strftime ("%G/%m/%d (%a) %T",time())."\n"; $strmsg .= $stremail; $fromto = "FROM:$fromname<".$fromaddress.">\nBCC:info-logigate@eship.co.jp".$bccmailaddress."\nX-mailer:PHP5"; mb_send_mail($toaddress,$subject.strftime("%G/%m/%d",time()),$strmsg,$fromto); } /*------------------------------------------------------------ * 関数名 : gengo * 返却値 : 元号年 * 引数 : (1) int:西暦 * 引数 : (2) int:1:年のみ、2:元号付き * 説明 : 西暦より元号を作成する * 使用例 : Gengo(date("Y",1); *------------------------------------------------------------ */ function Gengo( $intyear, $intflg){ $gengo = array("平成", "昭和", "大正", "明治"); $gengo_year = array(1988, 1925, 1911, 1867); foreach($gengo_year as $key=>$val) { if ($intyear > $val) { if($intflg == 1) { return($intyear - $val); } else { return $gengo[$key].($intyear - $val)."年"; } } } return 0; } /*------------------------------------------------------------ * 関数名 : sqlinjection * 返却値 : インジェクション対策された値 * 引数 : (1) str:POSTされた値 * 引数 : (2) str:予備 * 説明 : POSTされた値をインジェクション対策する * 使用例 : sqlinjection($_POST["memo"],-1); *------------------------------------------------------------ */ function sqlinjection( $string, $yobi) { $string = trim($string); $string = str_replace("'","’",$string); $string = str_replace("\"","",$string); $string = str_replace("%","%",$string); $string = htmlspecialchars($string); $string = stripslashes($string); $string = mysql_real_escape_string($string); return $string; } /*------------------------------------------------------------ * 関数名 : showStaffSearchbox() * 返却値 : HTML出力 * 引数 : (1) str:デフォルト表示の文字Value (2) int:自動サブミット(1ON/2OFF) (3) str:FORM名(-1:sww(デフォルト)/自動サブミットON時はその値) * 説明 : セラピスト検索のINPUT BOXを出力 * 使用例 : showStaffSearchbox($sw,1,-1); //商品検索 *------------------------------------------------------------ */ function showStaffSearchbox( $sw, $autosubmit, $formname){ global $userdata,$staff_data; //3.FORM名(-1:sww/自動サブミットON時はその値) if($formname == -1) { $formname = "sww"; } echo "\t\n"; if($userdata["roleid"] == 7) { echo "\tセラピストコード
    \n"; } else { echo "\tセラピストコード/氏名
    \n"; } //2.自動サブミット(1ON/2OFF) echo "\t\n"; } else { echo ">\n"; } if((sizeof($staff_data) > 1 ) and ($userdata["roleid"] <> 7) and ($sw <> "")) { echo " \n"; } echo "\t
    \n"; } /*------------------------------------------------------------ * 関数名 : PrintSelectQty() * 返却値 : なし * 引数 : (1) int: 開始数 * 引数 : (2) int: 終了数 * : (3) str: サブミットするとび先のPHPファイル名 -1はサブミットしない * : (4) int: 選ばれたデフォルトの数(整数)0.5除く * : (5) str: 表示する文字列 * : (6) str: 変数名 * : (7) int: 入力切替有無(0:TEXT固定 1:プルダウン固定 2:スマホはプルダウン・パソコンテキスト入力) * : (8) int: tabindex番号 * : (9) str: FORM名称 * : (10)str: 単位 * : (11)str: 端数 1:許可 1以外不許可 * 説明 : 数値入力フィールドを作成する。切り替え指定でTEXTまたは数字プルダウンを表示する。 * 使用例 : PrintSelectQty(0,20,-1,"","","id".$j."[1]",2,($j *2),"","個",-1) *------------------------------------------------------------ */ function PrintSelectQty( $intstart, $intend, $filename, $selected, $strword, $strname, $intInputkubun, $intTab, $strformname, $strunit, $intHasuu){ global $smartphone; //入力切替 if($intInputkubun == 2) { if($smartphone == 2) { $intInputkubun = 1; //smartphone } else { $intInputkubun = 0; //PC } } echo $strword."\n"; //入力 if($intInputkubun == 0 ) { //TEXT if ($filename == -1){ //サブミット有無 echo "".$strunit."\n"; } else { echo "".$strunit."\n"; } } else { //SELECT if ($filename == -1){ //サブミット有無 echo "\n"; } for ($i = (int)$intstart; $i <= (int)$intend; $i++) { if ($i == (int)$selected) { //一致したら選択済みとする echo "\n"; } else { echo "\n"; } if(($intHasuu == 1) and ($i < 6)) { //6以下は半身も許可する $ii = $i + 0.5; if ($ii == $selected) { //一致したら選択済みとする echo "\n"; } else { echo "\n"; } } } echo "\n"; } if ($filename <> -1){ echo "\n"; } } /*------------------------------------------------------------ * 関数名 : PrintSelectQty2() * 返却値 : なし * 引数 : (1) int: 開始数 * 引数 : (2) int: 終了数 * : (3) str: サブミットするとび先のPHPファイル名 -1はサブミットしない * : (4) array: 選ばれたデフォルトの数 1次元配列 * : (5) str: 表示する文字列 * : (6) str: 変数名 * : (7) int: 入力切替有無(0:TEXT固定 1:プルダウン固定 2:スマホはプルダウン・パソコンテキスト入力) * : (8) int: tabindex番号 * : (9) str: FORM名称 * : (10)str: 単位 * : (11)str: 端数 1:許可 1以外不許可 * : (12)array: B区分 2次元配列 * : (13)int:改行する個数 * 説明 : 数値入力フィールドを作成する。切り替え指定でTEXTまたは数字プルダウンを表示する。 * 使用例 : PrintSelectQty2(0,20,-1,$array,"","id".$j."[1]",2,($j *2),"","個",-1,$kubundata,4) *------------------------------------------------------------ */ function PrintSelectQty2( $intstart, $intend, $filename, $selected, $strword, $strname, $intInputkubun, $intTab, $strformname, $strunit, $intHasuu, $strdata, $intline){ global $smartphone; //入力切替 if($intInputkubun == 2) { if($smartphone == 2) { $intInputkubun = 1; //smartphone } else { $intInputkubun = 0; //PC } } echo $strword."\n"; //入力 if($intInputkubun == 0 ) { //TEXT if ($filename <> -1){ //サブミット有無 //echo "".$strunit."\n"; } echo ""; echo ""; For($i = 0;$i < sizeof($strdata);$i++) { echo "\n"; if($i == ($intline - 1)) {echo "\n\n";} } echo "\n"; echo ""; echo "\n"; echo "
    ".$strdata[$i][0]."
    ".$strunit."
    \n"; } else { //SELECT if ($filename == -1){ //サブミット有無 echo "\n"; } for ($i = (int)$intstart; $i <= (int)$intend; $i++) { if ($i == (int)$selected) { //一致したら選択済みとする echo "\n"; } else { echo "\n"; } if(($intHasuu == 1) and ($i < 6)) { //6以下は半身も許可する $ii = $i + 0.5; if ($ii == $selected) { //一致したら選択済みとする echo "\n"; } else { echo "\n"; } } } echo "\n"; } if ($filename <> -1){ echo "\n"; } } //化けないfgetcsv function fgetcsv_reg (&$handle, $length = null, $d = ',', $e = '"') { $d = preg_quote($d); $e = preg_quote($e); $_line = ""; while ($eof != true) { $_line .= (empty($length) ? fgets($handle) : fgets($handle, $length)); $itemcnt = preg_match_all('/'.$e.'/', $_line, $dummy); if ($itemcnt % 2 == 0) $eof = true; } $_csv_line = preg_replace('/(?:\\r\\n|[\\r\\n])?$/', $d, trim($_line)); $_csv_pattern = '/('.$e.'[^'.$e.']*(?:'.$e.$e.'[^'.$e.']*)*'.$e.'|[^'.$d.']*)'.$d.'/'; preg_match_all($_csv_pattern, $_csv_line, $_csv_matches); $_csv_data = $_csv_matches[1]; for($_csv_i=0; $_csv_i 12) { $strword = mb_strcut($strword,0,5)." ".mb_strcut($strword,5,5)." ".mb_strcut($strword,10,100); } elseif(mb_strlen($strword) > 6) { $strword = mb_strcut($strword,0,4)." ".mb_strcut($strword,4,100); } else { $strword = $strword; } if($intwork == 1) { echo $strword; } else { return $strword; } } /*------------------------------------------------------------ * 関数名 : inputShukka() * 返却値 : (無し) * 引数 : (1) array:入力情報Value (2) str:エラーメッセージ (3) int:処理件数 (4) str: * 説明 : 出荷実績データを作成 * lotnum = 0:在庫更新無し >1 指定ロットを更新 -1 在庫を逐次引当 * 使用例 : inputShukka($InputValues,$strmsg,$i,""); *------------------------------------------------------------ */ function inputShukka( $InputValues, $strmsg, $intMax, $str1){ global $my_con,$company,$userdata,$strmsg,$strerrmsg,$interrcount ,$intokacrcount; //更新カラム $array_colomn =array('shohincd','shukkaqty','centerid','operatedate','shukkadate','shozokuid','orderid','transid','gyotaiid','lotnum','memo','shahan_flg'); For ($ii = 0; $ii < (int)$intMax; $ii++) { $strsql = "";$strsql2 = " VALUES ("; $strsql = "INSERT INTO `".$company."shukka`("; For ($k = 0; $k < sizeof($array_colomn); $k++) { $strsql .= "`".$array_colomn[$k]."`,"; //カラム名 $strsql2 .= "'".$InputValues[$ii][$array_colomn[$k]]."',";//値 } $strsql .= "`creater`,`createdate`) "; $strsql .= $strsql2."'".$userdata["tid"]."',now());"; $result=mysql_query($strsql,$my_con); $errcode =@mysql_errno(); Testecho ($strsql); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); if($errcode > 0) { $strmsg .= "登録エラーがありました。
    ";$interrcount++; } else { $intokacrcount++; $last_id = mysql_insert_id(); //在庫データ if((int)$InputValues[$ii]["lotnum"] > 0) { $strsql = "UPDATE `".$company."shukka` as shu,`".$company."stockdata` as sd SET shu.loccode = sd.location , shu.stockdate = sd.stockdate, shu.shomi = sd.shomi, shu.cominprice_piece = sd.comeinprice, shu.updater = '".$userdata["tid"]."' WHERE shu.shukkaid = '".$last_id."' AND sd.lotnum = shu.lotnum AND sd.lotnum ='".$InputValues[$ii]["lotnum"]."'"; $result=mysql_query($strsql,$my_con); Testecho ("ROW=".mysql_affected_rows()." ".$strsql); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); } elseif((int)$InputValues[$ii]["lotnum"] == -1) { } //注文データ if((int)$InputValues[$ii]["orderid"] > 0) { $strsql = "UPDATE `".$company."shukka` as shu,`".$company."ordermain` as om,`".$company."ordersheet` as os SET shu.ordermainid = om.ordermainid, shu.orderqty = os.orderqty , shu.updater = '".$userdata["tid"]."' WHERE shu.shukkaid = '".$last_id."' AND shu.orderid = os.orderid AND om.ordermainid = os.ordermainid AND os.orderid ='".$InputValues[$ii]["orderid"]."'"; $result=mysql_query($strsql,$my_con); Testecho ("ROW=".mysql_affected_rows()." ".$strsql); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); } //商品M $strsql = "UPDATE `".$company."shukka` as shu,`".$company."shohinmaster` as sm SET shu.supplyerid = sm.makercode , shu.DC_TC = sm.ryutu_type , shu.updater = '".$userdata["tid"]."' WHERE shu.shukkaid = '".$last_id."' AND shu.shohincd= sm.shohincd"; $result=mysql_query($strsql,$my_con); Testecho ("ROW=".mysql_affected_rows()." ".$strsql); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); } //価格 /*price_piece price_total price_piece2 price_total2 price_piece3 price_total3 */ //所属 if($InputValues[$ii]["shozokuid"] <> "") { $strsql = "UPDATE `".$company."shukka` as shu,`".$company."shozokumaster` as sho SET shu.brand = sho.brand, shu.deliverdate = shu.shukkadate + sho.leadtime , shu.route = sho.route , shu.deliveryid = sho.deliveryid , shu.updater = '".$userdata["tid"]."' WHERE shu.shukkaid = '".$last_id."' AND shu.shozokuid = sho.shozokuid AND sho.shozokuid ='".$InputValues[$ii]["shozokuid"]."'"; $result=mysql_query($strsql,$my_con); Testecho ("ROW=".mysql_affected_rows()." ".$strsql); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); } } } /*------------------------------------------------------------ * 関数名 : inputArrange() * 返却値 : (無し) * 引数 : (1) array:入力情報Value (2) str:エラーメッセージ (3) int:処理件数 (4) str: * 説明 : 在庫調整の実施、データ作成作成 $InputValues[$i]["lotnum"] = 0;//lotnum=0は自動検索 * 使用例 : inputArrange($InputValues,$strmsg,$i,""); *------------------------------------------------------------ */ function inputArrange( $InputValues, $strmsg, $intMax, $str1){ global $my_con,$company,$userdata,$strmsg,$strerrmsg,$interrcount ,$intokcount,$strsqldbselect; For ($ii = 0; $ii < (int)$intMax; $ii++) { //在庫データ更新 $intNewqty = $InputValues[$ii]["nonreserveqty"] + $InputValues[$ii]["arrangeqty"]; //LOTNUMが無い場合探してみる if($InputValues[$ii]["lotnum"] == 0) { $lotdata = dbselect("min(lotnum)",$company."stockdata","centerid = '".$InputValues[$ii]["centerid"]."' and validflg ='".$InputValues[$ii]["validflg"]."' and supplyer ='".$InputValues[$ii]["supplyer"]."' and shohincd ='".$InputValues[$ii]["shohincd"]."' and stockdate ='".$InputValues[$ii]["stockdate"]."' and shomi ='".$InputValues[$ii]["shomi"]."'",-1,-1); echo $strsqldbselect; echo "LOT=".$lotdata[0][0]; $InputValues[$ii]["lotnum"] = (int)$lotdata[0][0]; } if($InputValues[$ii]["lotnum"] > 0) { //既存データ更新 if($intNewqty == 0) { $validflg = 0; } else { $validflg = 1; } $strsql = "UPDATE `".$company."stockdata` as sd SET sd.stockqty = '".$intNewqty."', sd.nonreserveqty = '".$intNewqty."', sd.validflg = '".$validflg."', sd.updater = '".$userdata["tid"]."' WHERE sd.lotnum = '".$InputValues[$ii]["lotnum"]."' AND sd.shohincd = '".$InputValues[$ii]["shohincd"]."'";$strsql2 = ""; } else { //新規データ作成 //更新カラム //$array_colomn =array('shohincd','centerid','stockdate','stockqty','nonreserveqty'); $array_colomn = array_keys($InputValues[$ii]);//更新項目は連想配列より取得 $strsql2 = ""; $strsql = "INSERT INTO `".$company."stockdata`("; For ($k = 0; $k < sizeof($array_colomn); $k++) { $strsql .= "`".$array_colomn[$k]."`,"; //カラム名 $strsql2 .= "'".$InputValues[$ii][$array_colomn[$k]]."',";//値 } $strsql .= "`creater`,`createdate`) VALUES ("; $strsql .= $strsql2; $strsql .= "'".$userdata["tid"]."',now())"; } //更新処理 $result=mysql_query($strsql,$my_con); echo (__LINE__."ROW=".mysql_affected_rows()." ".$strsql); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); if($InputValues[$ii]["lotnum"] == 0) { //LOT番号取得 $InputValues[$ii]["lotnum"] = mysql_insert_id(); } if(mysql_affected_rows() == 0) { $interrcount++; $errmsg .= $InputValues[$ii]["shohincd"]." 不明エラーが発生しました。
    "; } else { //在庫調整データ投入 $strsql = "INSERT INTO `".$company."stockarrange` (";$strsql2 = ""; $array_colomn =array('lotnum','centerid','arrangedate','shohincd','stockdate','shomi','arrangeqty','arrangekubun','biko'); For ($k = 0; $k < sizeof($array_colomn); $k++) { $strsql .= "`".$array_colomn[$k]."`,"; //カラム名 $strsql2 .= "'".$InputValues[$ii][$array_colomn[$k]]."',";//値 } $strsql .= "`creater`,`createdate`) VALUES ("; $strsql .= $strsql2; $strsql .= "'".$userdata["tid"]."',now())"; $result=mysql_query($strsql,$my_con); Testecho (__LINE__."ROW=".mysql_affected_rows()." ".$strsql); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); if(mysql_affected_rows() == 0) { $interrcount++; $errmsg .= $InputValues[$ii]["shohincd"]." 不明エラー[2]が発生しました。
    "; } else { $intokcount++; } } } } /*------------------------------------------------------------ * 関数名 : Stockdown() * 返却値 : (無し) * 引数 : (1) array:入力情報Value centerid,supplyerid,shohincd,operatedate,qty(引落数+-あり +は引落 -は在庫足し),flg(1:有効在庫落とし 2:在庫落とし) (2) str:エラーメッセージ (3) int:処理件数 (4) str: * 説明 : 在庫を落とす * 使用例 : Stockdown($InputValues,$strmsg,$i,""); *------------------------------------------------------------ */ function Stockdown( $InputValues, $strmsg, $intMax, $str1){ global $my_con,$company,$userdata,$strmsg,$strerrmsg,$interrcount ,$intokcount; //var_dump($InputValues); For ($ii = 0; $ii < (int)$intMax; $ii++) { if($InputValues[$ii]["qty"] > 0) { //在庫引落 Testecho ("Stockdown 在庫引落"); takeStock($InputValues[$ii]["centerid"],$InputValues[$ii]["supplyerid"],$InputValues[$ii]["shohincd"], ($InputValues[$ii]["qty"]),$InputValues[$ii]["transid"],-1); } else { Testecho ("Stockdown 在庫足し"); //在庫足し addStock($InputValues[$ii]["centerid"],$InputValues[$ii]["supplyerid"],$InputValues[$ii]["shohincd"],-($InputValues[$ii]["qty"]),$InputValues[$ii]["transid"],-1); } } } /*------------------------------------------------------------ * 関数名 : addStock() * 返却値 : (無し) * 引数 : (1) str センター strcenterid (2) str サプライヤーsupplyer (3) str 商品CD shohincd (4) int 数量 qty プラスのみ (5) str1 予備 * 説明 : 在庫を増やす * 使用例 : addStock('C2','ADN','4562459189683',20,-1); addStock($InputValues[$ii]["centerid"],$InputValues[$ii]["supplyerid"],$InputValues[$ii]["shohincd"],-($InputValues[$i]["qty"]),-1); *------------------------------------------------------------ */ function addStock( $strcenterid, $strsupplyer, $strshohincd, $intqty, $inttransid, $str1){ global $my_con,$company,$userdata,$strmsg,$strerrmsg,$interrcount ,$intokcount,$strsqldbselect; // $stockdata = dbselect("lotnum","`".$company."stockdata`","validflg = 1 and centerid = '".$strcenterid."' and supplyer = '".$strsupplyer."' and shohincd = '".$strshohincd."' and nonreserveqty <> 0","shomi desc,lotnum",1); $stockdata = dbselect("lotnum","`".$company."stockdata`","validflg = 1 and centerid = '".$strcenterid."' and shohincd = '".$strshohincd."' and nonreserveqty <> 0","shomi desc,lotnum",1); //echo $strsqldbselect; if(sizeof($stockdata) > 0) { //最新在庫に足す $strsql = "UPDATE `".$company."stockdata` SET stockqty = (stockqty + ".$intqty.") , nonreserveqty = (nonreserveqty + ".$intqty."), updater = '".$userdata["tid"]."' WHERE lotnum = '".$stockdata[0][0]."'"; $result=mysql_query($strsql,$my_con); $errcode =mysql_errno(); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); } else{ //新規追加 $strsql = "INSERT INTO `".$company."stockdata`(shohincd,centerid,supplyer,stockdate,shomi,stockqty,nonreserveqty,creater,createdate) values('".$strshohincd."','".$strcenterid."','".$strsupplyer."',CURDATE(),CURDATE(),".$intqty.",".$intqty.",'".$userdata["tid"]."',now())"; $result=mysql_query($strsql,$my_con); $errcode =mysql_errno(); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); } Testecho($y." ROWS= ".mysql_affected_rows().$strsql); #debug //倉庫移動明細削除 if($inttransid > 0){ // takeTransDetail($inttransid); } } /*------------------------------------------------------------ * 関数名 : takeStock() * 返却値 : (無し) * 引数 : (1) str センター strcenterid (2) str サプライヤーsupplyer (3) str 商品CD shohincd (4) int 数量 qty プラスのみ (5) str1 予備 * 説明 : 在庫を落とす * 使用例 : takeStock('C2','ADN','4562459189683',20,-1); takeStock($InputValues[$ii]["centerid"],$InputValues[$ii]["supplyerid"],$InputValues[$ii]["shohincd"],-($InputValues[$i]["qty"]),-1); *------------------------------------------------------------ */ function takeStock( $strcenterid, $strsupplyer, $strshohincd, $intqty, $inttransid, $str1){ global $my_con,$company,$userdata,$strmsg,$strerrmsg,$interrcount ,$intokcount,$strsqldbselect; if($intqty <= 0 ) {Testecho ("数量が $intqty だから中止");return; } // $stockdata = dbselect("lotnum,stockqty,nonreserveqty","`".$company."stockdata`","validflg = 1 and centerid = '".$strcenterid."' and supplyer = '".$strsupplyer."' and shohincd = '".$strshohincd."' and nonreserveqty <> 0","shomi,lotnum",-1); $stockdata = dbselect("lotnum,stockqty,nonreserveqty","`".$company."stockdata`","validflg = 1 and centerid = '".$strcenterid."' and shohincd = '".$strshohincd."' and nonreserveqty <> 0","shomi,lotnum",-1); //echo $strsqldbselect; if(sizeof($stockdata) > 0) { //在庫から落とす For($i = 0;$i < sizeof($stockdata) ; $i++) { //echo "残数 $intqty 在庫 ".$stockdata[$i][2]."
    "; if(((int)$stockdata[$i][2] > $intqty) or ((int)$stockdata[$i][2] < 0)) { //echo "A
    "; //LOTの数のnonreserveqtyの方が多い場合、その数だけ引く。マイナス在庫も同じ if($intqty > 0) { $strsql = "UPDATE `".$company."stockdata` SET stockqty = (stockqty - ".$intqty.") , nonreserveqty = (nonreserveqty - ".$intqty.") WHERE lotnum = '".$stockdata[$i][0]."'"; $result=mysql_query($strsql,$my_con); Testecho($y." ROWS= ".mysql_affected_rows().$strsql); #debug $errcode =mysql_errno(); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); //倉庫移動明細作成 if($inttransid > 0){ addTransDetail($inttransid,$stockdata[$i][0],$intqty,-1); } //echo $strsql; $intqty = 0; break ; } } else { //echo "B
    "; //LOTの数の方より残数同じか多い場合は全部引く $strsql = "UPDATE `".$company."stockdata` SET stockqty = (stockqty - ".(int)$stockdata[$i][2].") , nonreserveqty = 0, updater = '".$userdata["tid"]."' WHERE lotnum = '".$stockdata[$i][0]."'"; $result=mysql_query($strsql,$my_con); Testecho($y." ROWS= ".mysql_affected_rows().$strsql); #debug $errcode =mysql_errno(); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); $intqty -= (int)$stockdata[$i][2]; //倉庫移動明細作成 if($inttransid > 0){ addTransDetail($inttransid,$stockdata[$i][0],(int)$stockdata[$i][2],-1); } //echo $strsql; //echo "残 $intqty"; } if($intqty <= 0 ) {echo "";return; } } //さらに残数ある場合はマイナス在庫作る if ($intqty > 0 ) { //echo "残数 $intqty 在庫 ".$stockdata[$i][2]."
    "; //echo "C
    "; //マイナス在庫を作る $strsql = "INSERT INTO `".$company."stockdata`(shohincd,centerid,supplyer,stockdate,shomi,stockqty,nonreserveqty,creater,createdate) values('".$strshohincd."','".$strcenterid."','".$strsupplyer."',CURDATE(),CURDATE(),-".$intqty.",-".$intqty.",'".$userdata["tid"]."',now())"; $result=mysql_query($strsql,$my_con); Testecho($y." ROWS= ".mysql_affected_rows().$strsql); #debug $errcode =mysql_errno(); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); //倉庫移動明細作成 if($inttransid > 0){ $intlotnum = mysql_insert_id(); addTransDetail($inttransid,$intlotnum,0 - $intqty,-1); } //echo $strsql; } } else{ //echo "残数 $intqty 在庫 ".$stockdata[$i][2]."
    "; //echo "D
    "; //マイナス在庫を作る $strsql = "INSERT INTO `".$company."stockdata`(shohincd,centerid,supplyer,stockdate,shomi,stockqty,nonreserveqty,creater,createdate) values('".$strshohincd."','".$strcenterid."','".$strsupplyer."',CURDATE(),CURDATE(),-".$intqty.",-".$intqty.",'".$userdata["tid"]."',now())"; $result=mysql_query($strsql,$my_con); Testecho($y." ROWS= ".mysql_affected_rows().$strsql); #debug $errcode =mysql_errno(); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); //倉庫移動明細作成 if($inttransid > 0){ $intlotnum = mysql_insert_id(); addTransDetail($inttransid,$intlotnum,0 - $intqty,-1); } } } /*------------------------------------------------------------ * 関数名 : addTransDetail() * 返却値 : (無し) * 引数 : (1) int 在庫移動ID inttransid (2) int 在庫LOT intlotnum (3) int 数量  (4) str1 予備 * 説明 : 在庫移動明細を作成する * 使用例 : *------------------------------------------------------------ */ function addTransDetail( $inttransid, $intlotnum, $intdqty, $str){ global $my_con,$company,$userdata,$strmsg,$strerrmsg,$interrcount ,$intokcount,$strsqldbselect; $strsql = "INSERT INTO `".$company."trans_detail`(transid,lotnum,transdqty) values (".$inttransid.",".$intlotnum.",".$intdqty.")"; $result=mysql_query($strsql,$my_con); $errcode =mysql_errno(); mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__); Testecho($y." ROWS= ".mysql_affected_rows().$strsql); #debug } /*------------------------------------------------------------ * 関数名 : commonMessage() * 返却値 : (無し) * 引数 : (1) intcode :メッセージコード (2) array 差し込み文言の配列 (3) int 1:メッセージの表示 2:メッセージのテキスト返却 (4) str 予備 * 説明 : メッセージテーブルと、差し込み文言により、メッセージのHTMLアウトもしくは引数返却する * 使用例 : $msg[] = '数量';$msg[] = 50; --変数を順番に%1から登録 commonMessage(2205,$msg,1,-1);--コード番号、変数、表示か返却かを指定 *------------------------------------------------------------ */ function commonMessage( $msgcode, $msg, $intShow, $str){ global $my_con,$company,$strsqldbselect,$interrcount,$intokcount; //メッセージの取得 $msgdata = dbselect("message,code1","`common`.`message`","message_code = '".$msgcode."'",-1,1); if(sizeof($msgdata) == 0) { //該当なし $strmsg = "[SYSTEM ERROR]メッセージコードの指定誤りです"; $kbn = 1;//SYSALART } else { $strmsg = $msgdata[0][0]; $intkbn = $msgdata[0][1];//2:業務アラート 3:正常系 } if(sizeof($msg) > 0) { //変数指定有りは差し込む For ($i = 1;$i <= sizeof($msg);$i++) { $strmsg = str_replace("%".$i,$msg[$i-1],$strmsg); } } else { //変数指定無し } if($intShow == 1) { //HTML表示 if($intkbn == 3) { //正常系 PrintMsg("",$strmsg,700); } else { //異常系 $interrcount++; PrintMsg($strmsg,"",700); } return true; } else { //変数返却 return $strmsg; } } ?>