フレーム問合せ

  frame.htm



ダウンロード

  
<HTML>
<HEAD>
<TITLE>フレーム問合せ</TITLE>
<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">
</HEAD>
<FRAMESET id="TopFrame" rows="70,*">
	<FRAME name="HeadFrame" src="control.php?view=head">
	<FRAME name="BodyFrame" src="control.php?view=body">
</FRAMESET>
</HTML>
  

style.css
  
TH {
	font-family: Verdana,'MS Pゴシック';
	font-size: 12px;
}

TD {
	background-color: white;
	font-family: Verdana,'MS Pゴシック';
	font-size: 12px;
}
  



  control.php



  
<?
# **********************************************************
# 外部ファイル
# **********************************************************
require_once( "common.php" );
require_once( "db.php" );
require_once( "model.php" );

# **********************************************************
# 定数定義
# **********************************************************
define( 'PASS_MESSAGE', 1 );
define( 'PASS_HEAD', 2 );
define( 'PASS_BODY', 3 );

define( 'VIEW_MESSAGE', 'viewmessage.php' );
define( 'VIEW_HEAD', 'view.php' );
define( 'VIEW_BODY', 'view2.php' );

# **********************************************************
# グローバル変数
# **********************************************************
$Target		= '商品分類マスタ';
$KeyName	= '';
$KeyField	= '';
$ErrMessage	= '';
$Message	= '';
$InData		= '';
$OutData	= '';
$OptionList	= '';

# **********************************************************
# 初期処理
# **********************************************************
if ( $_POST['In1001'] != "" ) {
	setcookie( 'In1001', $_POST['In1001'] );
}
if ( $_POST['In1002'] != "" ) {
	setcookie( 'In1002', $_POST['In1002'] );
}

$SQL = new DB( "localhost", "lightbox", "root", "" );
$SQL->Debug = FALSE;

# **********************************************************
# 処理コントロール
# **********************************************************
switch( $_POST['GNO'] ) {
	# ヘッド部からの処理
	case PASS_HEAD:
		CheckDataHead( );
		if ( $ErrMessage == "" ) {
			GetData( $SQL );
		}
		else {
			$_POST['GNO'] = PASS_MESSAGE;
		}
		break;

}

# **********************************************************
# ビュー
# **********************************************************
RestoreValue();
CreateInData( );
switch( $_POST['GNO'] ) {
	# メッセージ表示
	case PASS_MESSAGE:
		require_once( VIEW_MESSAGE );
		break;

	# ヘッド部からの処理
	case PASS_HEAD:
		EditDataBody();
		require_once( VIEW_BODY );
		break;

	# ボディ部からの処理
	case PASS_BODY:
		EditDataBody();
		require_once( VIEW_BODY );
		break;

	# 初期画面
	default:
		if ( $_GET['view'] == 'head' ) {
			RestoreCookie( );
			EditDataHead( );
			RestoreValue();
			require_once( VIEW_HEAD );
		}
		if ( $_GET['view'] == 'body' ) {
			EditDataBody();
			require_once( VIEW_MESSAGE );
		}
		break;

}

# **********************************************************
# 終了処理
# **********************************************************
$SQL->Close();

# **********************************************************
# デバッグ
# **********************************************************
#DispData();
?>
  



  model.php

  
<?
# **********************************************************
# SQL文字列作成用
# **********************************************************
function SetCond( &$Value ) {

	if ( $Value == "" ) {
		$Value .= " where ";
	}
	else {
		$Value .= " and ";
	}

}

# **********************************************************
# データベースデータの読出し
# **********************************************************
function GetData( &$SQL ) {

	global $Target,$KeyField,$KeyName;

	$Query = 'select * from ' . $Target;
	$Cond = "";

	# 最初の条件
	if ( $_POST['In1001'] != "" ) {
		SetCond( $Cond );
		$Cond .= "名称 like '%{$_POST['In1001']}%'";
	}

	# 2つ目の条件
	if ( $_POST['In1002'] != "" ) {
		SetCond( $Cond );
		$Cond .= "left(商品分類,1) = '{$_POST['In1002']}'";
	}

	$Column = $SQL->QueryEx( $Query . $Cond );

	while ( $Column ) {
		EditQueryData( $Column );
		$Column = $SQL->QueryEx( );
	}

}

# **********************************************************
# データベースデータの編集
# **********************************************************
function EditQueryData( &$Column ) {

	global $OutData;

	$OutData .= "<TR>\n";

	$OutData .= "<TD>";
	$OutData .= $Column['商品分類'];
	$OutData .= "</TD>\n";

	$OutData .= "<TD>{$Column['名称']}</TD>\n";

	$OutData .= "</TR>\n";

}

# **********************************************************
# ヘッド部の編集
# **********************************************************
function EditDataHead( ) {

	global $Target,$KeyField,$KeyName;
	global $OptionList,$SQL;

	$Query = 'select コード,名称 from コード名称マスタ';
	$Query .= " where 区分 = 5 order by コード";

	$OptionList = CreateOption( $SQL, "In1002", $Query );
}

# **********************************************************
# ボディ部の編集
# **********************************************************
function EditDataBody( ) {

	global $Target,$KeyField,$KeyName;

}

# **********************************************************
# 更新処理
# **********************************************************
function UpdateData( &$SQL ) {

	global $ErrMessage,$Message;
	global $Target,$KeyField,$KeyName;

	return TRUE;
}

# **********************************************************
# 削除処理
# **********************************************************
function DeleteData( &$SQL ){

	global $ErrMessage,$Message;
	global $Target,$KeyField,$KeyName;

	return TRUE;
}

# **********************************************************
# ヘッド部のエラーチェック
# **********************************************************
function CheckDataHead( ) {

	global $ErrMessage;
	global $Target,$KeyField,$KeyName;

	return TRUE;
}

# **********************************************************
# ボディ部のエラーチェック
# **********************************************************
function CheckDataBody( ) {

	global $ErrMessage;
	global $Target,$KeyField,$KeyName;

	return TRUE;
}

?>
  



  view.php

  
<SCRIPT language="javascript" type="text/javascript">

// **********************************************************
// フィールドのクリア
// **********************************************************
function ClearField(){

	document.getElementsByName("In1001")[0].value = "";
	document.getElementsByName("In1002")[0].selectedIndex = -1;
}

// *********************************************************
// フォームのチェック
// *********************************************************
function CheckData() {

	return true;
}

</SCRIPT>


<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">
<TITLE>PHP 雛形</TITLE>
<LINK rel="stylesheet" type="text/css" href="style.css">
<STYLE type="text/css">
	.MyCell {
		background-color: silver;
	}
</STYLE>
</HEAD>
<BODY>

<FORM
	name="frmMain"
	method="GET"
	action="control.php"
	target="BodyFrame"
	onSubmit='return CheckData()'
>
<TABLE border=0 bgcolor=black cellspacing=1 cellpadding=5>
<TR>
<!-- *******************************************************
 入力
******************************************************** -->
	<TD class=MyCell>名 称</TD>
	<TD class=MyCell>
		<INPUT
			type=text
			name=In1001
			value="<?= $_POST['In1001'] ?>"
		>
	</TD>
	<TD class=MyCell>大分類</TD>
	<TD class=MyCell>
		<SELECT 
			name=In1002
			onChange='document.getElementsByName("send")[0].click()'
		>
		<OPTION value="">
		<?= $OptionList ?>
		</SELECT>
	</TD>

<!-- *******************************************************
 送信ボタン
******************************************************** -->
	<TD class=MyCell>
		<INPUT type=submit name=send value="送信">
	</TD>

<!-- *******************************************************
 クリアボタン
******************************************************** -->
	<TD class=MyCell>
		<INPUT 
			type=button
			value="クリア"
			onClick='ClearField()'
		>
	</TD>

<!-- *******************************************************
 画面初期化ボタン
******************************************************** -->
	<TD class=MyCell>
		<INPUT 
			type=button
			value="Cancel"
			onClick='parent.location="frame.htm"'
		>
	</TD>
</TR>
</TABLE>

<!-- *******************************************************
 画面ID
******************************************************** -->
<INPUT type=hidden name=GNO value="<?= PASS_HEAD ?>">
</FORM>

</BODY>
</HTML>
  



  view2.php

  
<SCRIPT language="javascript" type="text/javascript">

// *********************************************************
// フォームのチェック
// *********************************************************
function CheckData() {

	return true;

}

</SCRIPT>

<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">
<TITLE>PHP 雛形</TITLE>
<LINK rel="stylesheet" type="text/css" href="style.css">
<STYLE type="text/css">
	.MyCell {
		background-color: silver;
	}
</STYLE>
</HEAD>

<!-- *******************************************************
 ドキュメントオブジェクト
******************************************************** -->
<BODY>
<SPAN style='color:blue'><?= $ErrMessage ?></SPAN>
<SPAN style='color:black;font-weight:bold'><?= $Message ?></SPAN>

<!-- *******************************************************
 フォーム
******************************************************** -->
<FORM
	name=frmMain
	method=GET
	action=control.php
	onSubmit='return CheckData()'
>

<!-- *******************************************************
 画面定義
******************************************************** -->
<TABLE border=0 bgcolor=black cellspacing=1 cellpadding=5>
<TH class=MyCell>商品分類</TH>
<TH class=MyCell>名称</TH>
<?= $OutData ?>
</TABLE>

<!-- *******************************************************
 画面番号
******************************************************** -->
<INPUT type=hidden name=GNO value="<?= PASS_BODY ?>">

<!-- *******************************************************
 HEAD 部の入力データ引継ぎ用の埋め込み
******************************************************** -->
<?= $InData ?>
</FORM>

</BODY>
</HTML>
  



  viewmessage.php

  
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">
<TITLE>メッセージ表示専用</TITLE>
<LINK rel="stylesheet" type="text/css" href="style.css">
<STYLE type="text/css">
	.MyCell {
		background-color: silver;
	}
</STYLE>
</HEAD>
<BODY>
<SPAN style='color:blue'><?= $ErrMessage ?></SPAN>
<SPAN style='color:black;font-weight:bold'><?= $Message ?></SPAN>
</BODY>
</HTML>
  



  1ページあたりの行数をグローバル変数で設定

control.php
  
$Row		= 10;
  



  最初の $Row のみ表示

model.php
  
# **********************************************************
# データベースデータの読出し
# **********************************************************
function GetData( &$SQL ) {

	global $Target,$KeyField,$KeyName;

	$Query = 'select * from ' . $Target;
	$Cond = "";

	# 最初の条件
	if ( $_POST['In1001'] != "" ) {
		SetCond( $Cond );
		$Cond .= "名称 like '%{$_POST['In1001']}%'";
	}

	# 2つ目の条件
	if ( $_POST['In1002'] != "" ) {
		SetCond( $Cond );
		$Cond .= "left(商品分類,1) = '{$_POST['In1002']}'";
	}

	$Column = $SQL->QueryEx( $Query . $Cond );

	global $Row;

	$Cnt = 1;

	while ( $Column ) {
		if ( $Cnt <= $Row ) {
			EditQueryData( $Column );
		}
		$Column = $SQL->QueryEx( );
		$Cnt++;
	}

}
  



  ページ表示用エリアを定義

view2.php
  
<!-- *******************************************************
 画面定義
******************************************************** -->
<TABLE border=0 bgcolor=black cellspacing=1 cellpadding=5>
<TH class=MyCell>商品分類</TH>
<TH class=MyCell>名称</TH>
<?= $OutData ?>
</TABLE>
<br>
<?= $LinkData ?>
  



  読み込んだ行番号を表示

model.php
  
	global $Row;
	global $LinkData;

	$Cnt = 1;

	while ( $Column ) {
		if ( $Cnt <= $Row ) {
			EditQueryData( $Column );
		}
		$LinkData .= "$Cnt ";
		$Column = $SQL->QueryEx( );
		$Cnt++;
	}
  



  1ページの先頭行のみ行番号を表示

  
	global $Row;
	global $LinkData;

	$Cnt = 1;

	while ( $Column ) {
		if ( $Cnt <= $Row ) {
			EditQueryData( $Column );
		}
		if ( $Cnt % $Row == 1 ) {
			$LinkData .= "$Cnt ";
		}
		$Column = $SQL->QueryEx( );
		$Cnt++;
	}
  



  行番号をページ数に変換

  
	global $Row;
	global $LinkData;

	$Cnt = 1;

	while ( $Column ) {
		$Pno = (int)(( $Cnt - 1 ) / $Row ) + 1;

		if ( $Cnt <= $Row ) {
			EditQueryData( $Column );
		}
		if ( $Cnt % $Row == 1 ) {
			$LinkData .= "$Pno ";
		}
		$Column = $SQL->QueryEx( );
		$Cnt++;
	}
  



  URL より表示ページを指定できるようにする

  
	global $Row;
	global $LinkData;

	$Cnt = 1;
	if ( $_POST['page'] == "" ) {
		$_POST['page'] = 1;
	}

	while ( $Column ) {
		$Pno = (int)(( $Cnt - 1 ) / $Row ) + 1;

		if ( $Pno == $_POST['page'] ) {
			EditQueryData( $Column );
		}
		if ( $Cnt % $Row == 1 ) {
			$LinkData .= "$Pno ";
		}
		$Column = $SQL->QueryEx( );
		$Cnt++;
	}
  



  ページにリンクを作成して指定ページへジャンプさせる

  
	while ( $Column ) {
		$Pno = (int)(( $Cnt - 1 ) / $Row ) + 1;

		if ( $Pno == $_POST['page'] ) {
			EditQueryData( $Column );
		}
		if ( $Cnt % $Row == 1 ) {
			$LinkData .= "<A href='";
			$LinkData .= "control.php?GNO=2&page=$Pno";
			$LinkData .= "'>$Pno</A> ";
		}
		$Column = $SQL->QueryEx( );
		$Cnt++;
	}
  



  現在のページにはリンクを付けない

  
	while ( $Column ) {
		$Pno = (int)(( $Cnt - 1 ) / $Row ) + 1;

		if ( $Pno == $_POST['page'] ) {
			EditQueryData( $Column );
		}
		if ( $Cnt % $Row == 1 ) {
			if ( $Pno == $_POST['page'] ) {
				$LinkData .= "$Pno ";
			}
			else {
				$LinkData .= "<A href='";
				$LinkData .= "control.php?GNO=2&page=$Pno";
				$LinkData .= "'>$Pno</A> ";
			}
		}
		$Column = $SQL->QueryEx( );
		$Cnt++;
	}
  



  ヘッド部からの条件を反映させる

  
	while ( $Column ) {
		$Pno = (int)(( $Cnt - 1 ) / $Row ) + 1;

		if ( $Pno == $_POST['page'] ) {
			EditQueryData( $Column );
		}
		if ( $Cnt % $Row == 1 ) {
			if ( $Pno == $_POST['page'] ) {
				$LinkData .= "$Pno ";
			}
			else {
				$LinkData .= "<A href='";
				$LinkData .= "control.php?GNO=2&page=$Pno";
				$LinkData .= "&In1001=" . urlencode($_POST['In1001']);
				$LinkData .= "&In1002=" . urlencode($_POST['In1002']);
				$LinkData .= "'>$Pno</A> ";
			}
		}
		$Column = $SQL->QueryEx( );
		$Cnt++;
	}
  



  完成

  
# **********************************************************
# データベースデータの読出し
# **********************************************************
function GetData( &$SQL ) {

	global $Target,$KeyField,$KeyName;

	$Query = 'select * from ' . $Target;
	$Cond = "";

	# 最初の条件
	if ( $_POST['In1001'] != "" ) {
		SetCond( $Cond );
		$Cond .= "名称 like '%{$_POST['In1001']}%'";
	}

	# 2つ目の条件
	if ( $_POST['In1002'] != "" ) {
		SetCond( $Cond );
		$Cond .= "left(商品分類,1) = '{$_POST['In1002']}'";
	}

	$Column = $SQL->QueryEx( $Query . $Cond );

	global $Row;
	global $LinkData;

	$Cnt = 1;
	if ( $_POST['page'] == "" ) {
		$_POST['page'] = 1;
	}

	while ( $Column ) {
		$Pno = (int)(( $Cnt - 1 ) / $Row ) + 1;

		if ( $Pno == $_POST['page'] ) {
			EditQueryData( $Column );
		}
		if ( $Cnt % $Row == 1 ) {
			if ( $Pno == $_POST['page'] ) {
				$LinkData .= "$Pno ";
			}
			else {
				$LinkData .= "<A href='";
				$LinkData .= "control.php?GNO=2&page=$Pno";
				$LinkData .= "&In1001=" . urlencode($_POST['In1001']);
				$LinkData .= "&In1002=" . urlencode($_POST['In1002']);
				$LinkData .= "'>$Pno</A> ";
			}
		}
		$Column = $SQL->QueryEx( );
		$Cnt++;
	}

}
  



  ソート用ボタンを画面に実装

view2.php
  
<!-- *******************************************************
 画面定義
******************************************************** -->
<TABLE border=0 bgcolor=black cellspacing=1 cellpadding=5>
<TH class=MyCell><INPUT type=submit name=order value="商品分類"></TH>
<TH class=MyCell><INPUT type=submit name=order value="名称"></TH>
<?= $OutData ?>
</TABLE>
<br>
<?= $LinkData ?>
  



  ボディ部からの送信を受け付けるようにする

control.php
  
# **********************************************************
# 処理コントロール
# **********************************************************
switch( $_POST['GNO'] ) {
	# ヘッド部からの処理
	case PASS_HEAD:
	case PASS_BODY:
		CheckDataHead( );
		if ( $ErrMessage == "" ) {
			GetData( $SQL );
		}
		else {
			$_POST['GNO'] = PASS_MESSAGE;
		}
		break;

}
  



  表示処理の変更

  
# **********************************************************
# データベースデータの読出し
# **********************************************************
function GetData( &$SQL ) {

	global $Target,$KeyField,$KeyName;

	$Query = 'select * from ' . $Target;
	$Cond = "";

	# 最初の条件
	if ( $_POST['In1001'] != "" ) {
		SetCond( $Cond );
		$Cond .= "名称 like '%{$_POST['In1001']}%'";
	}

	# 2つ目の条件
	if ( $_POST['In1002'] != "" ) {
		SetCond( $Cond );
		$Cond .= "left(商品分類,1) = '{$_POST['In1002']}'";
	}

	if ( $_POST['order'] != "" ) {
		$Order = " order by {$_POST['order']}";
	}

	$Column = $SQL->QueryEx( $Query . $Cond . $Order );

	global $Row;
	global $LinkData;

	$Cnt = 1;
	if ( $_POST['page'] == "" ) {
		$_POST['page'] = 1;
	}

	while ( $Column ) {
		$Pno = (int)(( $Cnt - 1 ) / $Row ) + 1;

		if ( $Pno == $_POST['page'] ) {
			EditQueryData( $Column );
		}
		if ( $Cnt % $Row == 1 ) {
			if ( $Pno == $_POST['page'] ) {
				$LinkData .= "$Pno ";
			}
			else {
				$LinkData .= "<A href='";
				$LinkData .= "control.php?GNO=2&page=$Pno";
				$LinkData .= "&In1001=" . urlencode($_POST['In1001']);
				$LinkData .= "&In1002=" . urlencode($_POST['In1002']);
				$LinkData .= "&order=" . urlencode($_POST['order']);
				$LinkData .= "'>$Pno</A> ";
			}
		}
		$Column = $SQL->QueryEx( );
		$Cnt++;
	}

}
  



  ページ処理 (1)

ページあたりの行数を 5 と決めてアドレスバーより以下のように入力して 1〜3 ページをテストする

1) control.php?GNO=2&page=1
2) control.php?GNO=2&page=2
3) control.php?GNO=2&page=3

  
	$Column = $SQL->QueryEx( $Query . $Cond );

	$nCnt = 0;
	while ( $Column ) {
		if ( $_POST['page'] == 1 ) {
			if ( 0 <= $nCnt && $nCnt <= 4 ) {
				EditQueryData( $Column );
			}
		}
		if ( $_POST['page'] == 2 ) {
			if ( 5 <= $nCnt && $nCnt <= 9 ) {
				EditQueryData( $Column );
			}
		}
		if ( $_POST['page'] == 3 ) {
			if ( 10 <= $nCnt && $nCnt <= 14 ) {
				EditQueryData( $Column );
			}
		}
		$Column = $SQL->QueryEx( );
		$nCnt++;
	}
  



  ページ処理 (2)

1ページあたりの行数を $Row として記述する

  
	$Column = $SQL->QueryEx( $Query . $Cond );

	$nCnt = 0;
	while ( $Column ) {
		if ( $_POST['page'] == 1 ) {
			if ( 0 <= $nCnt && $nCnt <= 0 + $Row - 1 ) {
				EditQueryData( $Column );
			}
		}
		if ( $_POST['page'] == 2 ) {
			if ( 5 <= $nCnt && $nCnt <= 5 + $Row - 1 ) {
				EditQueryData( $Column );
			}
		}
		if ( $_POST['page'] == 3 ) {
			if ( 10 <= $nCnt && $nCnt <= 10 + $Row - 1 ) {
				EditQueryData( $Column );
			}
		}
		$Column = $SQL->QueryEx( );
		$nCnt++;
	}
  



  ページ処理 (3)

$nPage ( 現在のページ ) を使用して記述する

  
	$Column = $SQL->QueryEx( $Query . $Cond );

	$nCnt = 0;
	$nPage = $_POST['page'];
	while ( $Column ) {
		if ( $Row * ( $nPage - 1 ) <= $nCnt &&
			 $nCnt <= $Row * ( $nPage - 1 ) + $Row - 1 ) {
			EditQueryData( $Column );
		}
		$Column = $SQL->QueryEx( );
		$nCnt++;
	}
  



  ページ処理 (4)

ページ呼び出し用のリンク文字列の作成

  
	$Column = $SQL->QueryEx( $Query . $Cond );

	$nCnt = 0;
	$nPage = $_POST['page'];
	$nWork = 0;
	while ( $Column ) {
		if ( $Row * ( $nPage - 1 ) <= $nCnt &&
			 $nCnt <= $Row * ( $nPage - 1 ) + $Row - 1 ) {
			EditQueryData( $Column );
		}

		if ( $nCnt % $Row == 0 ) {
			$nWork++;
			$LinkData .= "<A href=\"control.php?GNO=2&page=$nWork\">";
			$LinkData .= "$nWork</A> \n";
		}

		$Column = $SQL->QueryEx( );
		$nCnt++;
	}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ