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
	border=1
	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
	border=1
	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
	border=1
	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>
  





yahoo  google  MSDN  MSDN(us)  WinFAQ  Win Howto  tohoho  ie_DHTML  vector  wdic  辞書  天気 


[phpVarious]
CCBot/2.0 (https://commoncrawl.org/faq/)
24/12/09 06:03:28
InfoBoard Version 1.00 : Language=Perl

1 BatchHelper COMprog CommonSpec Cprog CprogBase CprogSAMPLE CprogSTD CprogSTD2 CprogWinsock Cygwin GameScript HTML HTMLcss InstallShield InstallShieldFunc JScript JScriptSAMPLE Jsfuncs LLINK OldProg OracleGold OracleSilver PRO PRObrowser PROc PROconePOINT PROcontrol PROftpclient PROjscript PROmailer PROperl PROperlCHAT PROphp PROphpLesson PROphpLesson2 PROphpLesson3 PROphpfunction PROphpfunctionArray PROphpfunctionMisc PROphpfunctionString PROsql PROvb PROvbFunction PROvbString PROvbdbmtn PROvbonepoint PROwebapp PROwin1POINT PROwinSYSTEM PROwinYOROZU PROwindows ProjectBoard RealPHP ScriptAPP ScriptMaster VBRealtime Vsfuncs a1root access accreq adsi ajax amazon argus asp aspSample aspVarious aspdotnet aw2kinst cappvariety centura ckeyword classStyle cmaterial cmbin cmdbapp cmenum cmlang cmlistbox cmstd cmstdseed cmtxt cs daz3d db dbCommon dbaccess dnettool dos download flex2 flex3 flex4 framemtn framereq freeWorld freesoft gimp ginpro giodownload google hdml home hta htmlDom ie9svg install java javaSwing javascript jetsql jquery jsp jspTest jspVarious lightbox listasp listmsapi listmsie listmsiis listmsnt listmspatch listmsscript listmsvb listmsvc memo ms msde mysql netbeans oraPlsql oracle oracleWiper oraclehelper orafunc other panoramio pear perl personal pgdojo pgdojo_cal pgdojo_holiday pgdojo_idx pgdojo_ref pgdojo_req php phpVarious phpguide plsql postgres ps r205 realC realwebapp regex rgaki ruby rule sboard sc scprint scquest sdb sdbquest seesaa setup sh_Imagick sh_canvas sh_dotnet sh_google sh_tool sh_web shadowbox shgm shjquery shvbs shweb sjscript skadai skywalker smalltech sperl sqlq src systemdoc tcpip tegaki three toolbox twitter typeface usb useXML vb vbdb vbsfunc vbsguide vbsrc vpc wcsignup webanymind webappgen webclass webparts webtool webwsh win8 winofsql wmi work wp youtube