PHP : 順送り型マスタメンテナンスサンプル

  ダウンロードと概要




ブラウザでダウンロード

windows 環境で、MySQL5.14 販売管理データ登録済みセットのダウンロード
を使用する事を前提にしていますが、コード自体は通常の WEB で実行可能な
PHP です。

ダウンロードされる MySQL5.14 は、utf-8 なので、ソースコードも utf-8
となっていますが、実際の MySQL のキャラクタセットに変更する事によっ
て、特に問題無く動くと思います。

※ 更新処理のサンプルは、修正モードのみ付加しています。
※ 画面が小さいので携帯でもテストできると思います。

エラー処理は実装していません。

実装するとすれば、エラーが発生した場合は、「戻る」のみのリンクを
表示して、前の画面に戻るか、キー入力画面にリダイレクトして、その
画面でメッセージを表示するか、どちらかになると思います。

画面が順送りになっているので、エラーが出た場合に元の画面にエラー
メッセージの表示を行うには、画面の管理が必要になりますので
このままの仕様では実装しずらいはずです




  menu.php



処理区分の選択画面になります。
更新が終了した画面にこのページのリンクが表示されます。

  
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=utf-8" />
<TITLE>社員マスタメンテメニュー</TITLE>
<STYLE type="text/css">
* {
	font-size: 12px;
}
.column {
	border-style:solid;
	border-width:1px;
	border-color:#000000;
	padding: 4px;
}
</STYLE>

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

</SCRIPT>

</HEAD>
<BODY>


<pre>
1. <a href="pass1.php?mode=1">新規</a>
2. <a href="pass1.php?mode=2">修正</a>
3. <a href="pass1.php?mode=3">削除</a>

</pre>



</BODY>
</HTML>
  



  pass1.php

キーを入力します。
処理区分を引き継いで、それぞれの処理を行います

  
<?
header( "Content-Type: text/html; Charset=utf-8" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

foreach( $_GET as $Key => $Value ) {
	$_POST[$Key] = $_GET[$Key];
}
foreach( $_POST as $Key => $Value ) {
	$_POST[$Key] = str_replace("\\'", "'", $_POST[$Key] );
	$_POST[$Key] = str_replace("\\\"", "\"", $_POST[$Key] );
}


if ( $_POST['mode'] == 1 ) {
	$mode_message = '新規';
}
if ( $_POST['mode'] == 2 ) {
	$mode_message = '修正';
}
if ( $_POST['mode'] == 3 ) {
	$mode_message = '削除';
}

?>
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=utf-8" />
<TITLE>社員マスタメンテ : キー入力</TITLE>
<STYLE type="text/css">
* {
	font-size: 12px;
}
.column {
	border-style:solid;
	border-width:1px;
	border-color:#000000;
	padding: 4px;
}

.mode_message {
	color:red;
	font-weight:bold;
}
</STYLE>

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

// *********************************************************
// 
// *********************************************************
function checkForm( ) {

		if ( !confirm( "サーバーへ送信しますか?   " ) ) {
			return false;
		}
		return true;
}

</SCRIPT>


</HEAD>
<BODY>
<A href="menu.php">戻る</A>

<FORM
	name="frm"
	method="GET"
	action="pass2.php"
	onSubmit='return checkForm();'
>
<INPUT type="hidden" name="mode" value="<?= $_POST['mode'] ?>">

<TABLE
	
	style='
		border-collapse:collapse;
		border-style:solid;
		border-width:1px;
		border-color:#000000;
		width:200px;
	'
>

<TR>
	<TD class="column" colspan=2>
	<INPUT
		type="submit"
		name="send"
		value="送信"
	>
	<SPAN class="mode_message"><?= $mode_message ?></SPAN>
	</TD>
</TR>

<TR>
	<TD class="column">社員コード</TD>
	<TD class="column">
	<INPUT
		type="text"
		name="fld1"
		value="<?= $_POST['fld1'] ?>"
		style='width:60px;'
	>&nbsp;&nbsp;
	</TD>
</TR>

</TABLE>
</FORM>

<pre>
▼デバッグ用
<? print_r($_POST) ?>
</pre>

</BODY>
</HTML>
  




  pass2.php

キー以外のデータを入力します
キーデータはプロテクトされ、変更するには前画面に戻る必要があります

  
<?
header( "Content-Type: text/html; Charset=utf-8" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

foreach( $_GET as $Key => $Value ) {
	$_POST[$Key] = $_GET[$Key];
}
foreach( $_POST as $Key => $Value ) {
	$_POST[$Key] = str_replace("\\'", "'", $_POST[$Key] );
	$_POST[$Key] = str_replace("\\\"", "\"", $_POST[$Key] );
}

// *********************************************************
// 更新処理 の開始
// *********************************************************
if ( substr(PHP_OS,0,3) == 'WIN' ) {
	if ( !extension_loaded( "mysql" ) ) {
		dl("php_mysql.dll");
	}
}

$Server = 'localhost';
$DbName = 'lightbox';
$User = 'root';
$Password = 'password';

// 接続
$Connect = @mysql_connect( $Server, $User, $Password );
if ( !$Connect ) {
	print "接続エラーです";
	exit();
}

// DB選択
mysql_select_db( $DbName, $Connect );

// クエリ
if ( $_POST['mode'] == 2 ) {
	// 文字列中の ' は '' に変更
	$_POST['fld1'] = str_replace("'","''",$_POST['fld1']);
	$query = "select * from 社員マスタ";
	$query .= " where 社員コード = '{$_POST['fld1']}'";
	$result = mysql_query($query, $Connect);
	$row = mysql_fetch_array($result);
	if ( $row ) {
		$_POST['fld2'] = $row['氏名'];
	}
	else {
		print "対象データが存在しません";
		mysql_close($Connect);
		exit();
	}
}

// 接続解除
mysql_close($Connect);

// *********************************************************
// 更新処理 の終了
// *********************************************************


if ( $_POST['mode'] == 1 ) {
	$mode_message = '新規';
}
if ( $_POST['mode'] == 2 ) {
	$mode_message = '修正';
}
if ( $_POST['mode'] == 3 ) {
	$mode_message = '削除';
}

?>
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=utf-8" />
<TITLE>社員マスタメンテ : 明細入力</TITLE>
<STYLE type="text/css">
* {
	font-size: 12px;
}
.column {
	border-style:solid;
	border-width:1px;
	border-color:#000000;
	padding: 4px;
}

.mode_message {
	color:red;
	font-weight:bold;
}
</STYLE>

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

// *********************************************************
// 
// *********************************************************
function checkForm( ) {

		if ( !confirm( "サーバーへ送信しますか?   " ) ) {
			return false;
		}
		return true;
}

</SCRIPT>


</HEAD>
<BODY>
<A href="pass1.php?mode=<?= $_POST['mode'] ?>&fld1=<?= $_POST['fld1'] ?>">戻る</A>

<FORM
	name="frm"
	method="GET"
	action="pass3.php"
	onSubmit='return checkForm();'
>
<INPUT type="hidden" name="mode" value="<?= $_POST['mode'] ?>">

<TABLE
	
	style='
		border-collapse:collapse;
		border-style:solid;
		border-width:1px;
		border-color:#000000;
		width:300px;
	'
>

<TR>
	<TD class="column" colspan=2>
	<INPUT
		type="submit"
		name="send"
		value="送信"
	>
	<SPAN class="mode_message"><?= $mode_message ?></SPAN>
	</TD>
</TR>

<TR>
	<TD class="column">社員コード</TD>
	<TD class="column">
	<INPUT
		type="text"
		name="fld1"
		value="<?= $_POST['fld1'] ?>"
		readonly
		style='width:60px;background-color:silver'
	>  
	</TD>
</TR>

<TR>
	<TD class="column">社員名</TD>
	<TD class="column">
	<INPUT
		type="text"
		name="fld2"
		value="<?= $_POST['fld2'] ?>"
		style='width:200px;'
	>  
	</TD>
</TR>

</TABLE>
</FORM>

<pre>
▼デバッグ用
<? print_r($_POST) ?>
</pre>

</BODY>
</HTML>
  




  pass3.php

入力した内容の確認のみを行います
更新ボタンで更新が実行されます。
更新を行うページは次のページです

  
<?
header( "Content-Type: text/html; Charset=utf-8" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

foreach( $_GET as $Key => $Value ) {
	$_POST[$Key] = $_GET[$Key];
}
foreach( $_POST as $Key => $Value ) {
	$_POST[$Key] = str_replace("\\'", "'", $_POST[$Key] );
	$_POST[$Key] = str_replace("\\\"", "\"", $_POST[$Key] );
}


if ( $_POST['mode'] == 1 ) {
	$mode_message = '新規';
}
if ( $_POST['mode'] == 2 ) {
	$mode_message = '修正';
}
if ( $_POST['mode'] == 3 ) {
	$mode_message = '削除';
}

$back_query_string = "mode=" . $_POST['mode'];
$back_query_string .= "&fld1=" . $_POST['fld1'];
$back_query_string .= "&fld2=" . urlencode($_POST['fld2']);

?>
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=utf-8" />
<TITLE>社員マスタメンテ : 確認画面</TITLE>
<STYLE type="text/css">
* {
	font-size: 12px;
}
.column {
	border-style:solid;
	border-width:1px;
	border-color:#000000;
	padding: 4px;
}

.mode_message {
	color:red;
	font-weight:bold;
}
</STYLE>

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

// *********************************************************
// 
// *********************************************************
function checkForm( ) {

		if ( !confirm( "★★★ 更新しますか?   " ) ) {
			return false;
		}
		return true;
}

</SCRIPT>


</HEAD>
<BODY>
<A href="pass2.php?<?= $back_query_string ?>">戻る</A>

<FORM
	name="frm"
	method="GET"
	action="pass4.php"
	onSubmit='return checkForm();'
>
<INPUT type="hidden" name="mode" value="<?= $_POST['mode'] ?>">

<TABLE
	
	style='
		border-collapse:collapse;
		border-style:solid;
		border-width:1px;
		border-color:#000000;
		width:300px;
	'
>

<TR>
	<TD class="column" colspan=2>
	<INPUT
		type="submit"
		name="send"
		value="更新"
		style='color:#ffffff;background-color:#0000ff;'
	>
	<SPAN class="mode_message"><?= $mode_message ?></SPAN>
	</TD>
</TR>

<TR>
	<TD class="column">社員コード</TD>
	<TD class="column">
	<INPUT
		type="text"
		name="fld1"
		value="<?= $_POST['fld1'] ?>"
		readonly
		style='width:60px;border solid 0 #ffffff;'
	>&nbsp;&nbsp;
	</TD>
</TR>

<TR>
	<TD class="column">社員名</TD>
	<TD class="column">
	<INPUT
		type="text"
		name="fld2"
		value="<?= $_POST['fld2'] ?>"
		readonly
		style='width:200px;border solid 0 #ffffff;'
	>&nbsp;&nbsp;
	</TD>
</TR>

</TABLE>
</FORM>

<pre>
▼デバッグ用
<? print_r($_POST) ?>
</pre>

</BODY>
</HTML>
  




  pass4.php

更新後のメッセージ画面です
メニューに戻る為のリンクが用意されます

  
<?
header( "Content-Type: text/html; Charset=utf-8" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

foreach( $_GET as $Key => $Value ) {
	$_POST[$Key] = $_GET[$Key];
}
foreach( $_POST as $Key => $Value ) {
	$_POST[$Key] = str_replace("\\'", "'", $_POST[$Key] );
	$_POST[$Key] = str_replace("\\\"", "\"", $_POST[$Key] );
}

// *********************************************************
// 更新処理 の開始
// *********************************************************
if ( substr(PHP_OS,0,3) == 'WIN' ) {
	if ( !extension_loaded( "mysql" ) ) {
		dl("php_mysql.dll");
	}
}

$Server = 'localhost';
$DbName = 'lightbox';
$User = 'root';
$Password = 'password';

// 接続
$Connect = @mysql_connect( $Server, $User, $Password );
if ( !$Connect ) {
	print "接続エラーです";
	exit();
}

// DB選択
mysql_select_db( $DbName, $Connect );

// クエリ
if ( $_POST['mode'] == 2 ) {
	// 文字列中の ' は '' に変更
	$_POST['fld1'] = str_replace("'","''",$_POST['fld1']);
	$_POST['fld2'] = str_replace("'","''",$_POST['fld2']);

	$query = "update 社員マスタ set 氏名 = '{$_POST['fld2']}'";
	$query .= " where 社員コード = '{$_POST['fld1']}'";
}
$result = mysql_query($query, $Connect);

// 接続解除
mysql_close($Connect);

// *********************************************************
// 更新処理 の終了
// *********************************************************


if ( $_POST['mode'] == 1 ) {
	$mode_message = '新規';
}
if ( $_POST['mode'] == 2 ) {
	$mode_message = '修正';
}
if ( $_POST['mode'] == 3 ) {
	$mode_message = '削除';
}
?>
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=utf-8" />
<TITLE>社員マスタメンテ : 更新結果</TITLE>
<STYLE type="text/css">
* {
	font-size: 12px;
}
.column {
	border-style:solid;
	border-width:1px;
	border-color:#000000;
	padding: 4px;
}
</STYLE>

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

</SCRIPT>

</HEAD>
<BODY>


<pre>
<a href="menu.php"><?= $mode_message ?> 処理が正常に終了しました</a>

</pre>

<pre>
▼デバッグ用
<? print_r($_POST) ?>
</pre>


</BODY>
</HTML>
  














   SQLの窓    create:2010/05/12  update:2015/09/23   管理者用(要ログイン)





フリーフォントツール

SQLの窓ツール

SQLの窓フリーソフト

写真素材

一般ツールリンク

SQLの窓

フリーソフト

JSライブラリ