データベース/MySQL、PostgreSQL、SQLite

登録内容変更プログラムを作成

登録内容変更プログラム(myphp5.php,myphp5-1php)を作成します。

執筆者:堀江 美彦

事前の設定

登録内容変更プログラム(myphp5.php,myphp5-1php)を作成します。

1. このシリーズのサンプルプログラムで使用するテーブルtab1は

サーバー名 --- localhost
データベース名 --- workdb
パスワード --- karipass

で設定されていることを前提として 解説しますのでXAMPPインストール後におこなうMySQLの設定を参考に事前にテーブルtab1を作成しておいてください。

2. 当記事で紹介するPHPプログラムは「C:\xampp\htdocs\test」に格納しますので
事前に「C:\xampp\htdocs」フォルダ内に「test」フォルダを作成しておいてください。

3. このプログラムはユーザー定義関数を使用します。
事前にユーザー定義関数を作成myfunc.phpを作成しておいてください。

1. 登録内容変更プログラム(myphp5.php)を作成

下記の内容をテキストエディタにコピーし、ファイル名を「myphp5.php」として
「C:\xampp\htdocs\test」内に保存します。

*注意:「myphp5.php」ファイルの文字コードは「SJIS」を指定して保存してください。
PHPエディタサクラエディタなど文字コードを指定できるエディタを使うと便利です。
<?php
//関数を定義したmyfunc.phpを一度だけ読み込む
require_once("myfunc.php");

//HTML文を出力 HTMLの開始
	print("<HTML>\n");

//HTML文を出力 HEADの開始
	print("<HEAD>\n");

//文字コードをSHIFT_JISと指定
	print("<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=\"Shift_JIS\">\n");

//HTML文を出力 TITLEの指定
	print("<TITLE>myphp5</TITLE>\n");

//HTML文を出力 HEADの終了
	print("</HEAD>\n");

//HTML文を出力 BODYの開始
	print("<BODY>\n");
	
//inpnumフィールドへの入力の有無をチェック
if (strlen($HTTP_POST_VARS["inpnum"]) == 0) {

//HTML文を出力 登録確認
	print("<B>登録変更</B><BR><BR>");

//HTML文を出力 FORMの開始
	print("<FORM action=myphp5.php method=post>");

//HTML文を出力 入力フィールドの説明
	print("変更したいデータのnumberを入力してください<BR><BR>");

//HTML文を出力 入力フィールドの指定
print("<INPUT type=text name=inpnum size=8 maxlengh=8><BR><BR>");

//HTML文を出力 変更ボタン
	print("<INPUT type=submit value=変更>");

//HTML文を出力 取消ボタン
	print("<INPUT type=reset value=取消><BR>");

//HTML文を出力 FORMの終了
	print("</FORM>");

} else {

//myphp5.phpから入力フォーマットに入力されたデータをpostで渡されるので
//$HTTP_POST_VARSによりフィールド inpnum の内容を取り出し $safetextに格納
$safetext = $HTTP_POST_VARS["inpnum"];

//chkchar関数により$safetext内の不正な文字を除去する
chkchar($safetext);

//$keyに不正な文字を除去した結果を格納
$key = $safetext;

//numberフィールドの値が数値かどうかを is_numeric 関数によりチェックする
if (is_numeric($key)) {

//numberフィールドの値が範囲内(0以上999999999以下)かチェックする
	if ($key >= 0 and $key <= 999999999){
	
	} else { 
//numberフィールドの値が範囲外の場合はエラーメッセージを表示する
		echo "numberは0から999999999までの数値を指定してください<BR><BR>";
		
//HTML文を出力 javascriptを使用して直前のページに戻るリンク		
		echo "<A HREF='myphp5.php' onClick='history.back();return false;'>戻る</A><BR>";
		
//以降の処理を中断		
		exit;
	}	
} else {
//numberフィールドの値が数値以外の場合はエラーメッセージを表示する
	echo "numberは数値を指定してください<BR><BR>";
	
//HTML文を出力 javascriptを使用して直前のページに戻るリンク	
	echo "<A HREF='myphp5.php' onClick='history.back();return false;'>戻る</A><BR>";
	
//以降の処理を中断	
	exit;
}

//DBへ接続開始 サーバー名--localhost ユーザー名--root パスワード--karipass
$dbHandle = mysql_connect("localhost","root","karipass")
  or die("can not connect db\n");
  
//MySQLのクライアントの文字コードをsjisに設定
mysql_query("SET NAMES sjis")
  or die("can not SET NAMES sjis");

//db名  workdb
	$db = "workdb";

//SQL文 tab1表からnumber列の値がが入力フィールドで入力された値と等しい行を抽出
	$sql = "select * from tab1 where number = '$key'";

//SQL文を実行する
	$rs = mysql_db_query($db,$sql);

//mysql_num_rows 関数を使用し行数を取得する
	$rows = mysql_num_rows($rs);

//列数を取得する
	$fields = mysql_num_fields($rs);

//行を取得する
	$row=mysql_fetch_array($rs);
	
//入力されたnumberの行があった場合はデータを出力する
	if ($rows > 0) {

//HTML文を出力 見出し出力
		print("<B>登録内容変更</B><BR><BR>");
	
//HTML文を出力 ボタンの説明出力
		print("変更したい項目を入力後、変更ボタンを押してください。<BR>");
	
//HTML文を出力 FORMの開始を指定
		print("<FORM action=myphp5-1.php method=post>");

//HTML文を出力 テーブルの開始を指定
		print("<TABLE border=1>");
	
//HTML文を出力 テーブルのヘッドを指定
		print("</TR><TH>列名</TH><TH>変更前</TH><TH>変更後</TH></TR>");
	
//test表の列数と同じ回数を繰り返す
		for ($i=0;$i<$fields;$i++){
		
//HTML文を出力 列名を <TD>で囲んで出力
			print("</TR><TD><B>".mysql_field_name($rs,$i)."</B></TD><TD>". $row[$i] ."</TD>");

//HTML文を出力 number列の内容を出力 変更は不可 typeはhiddenでnumber列の内容を渡す
			if ($i == 0) {
				print("<TD><INPUT type=hidden name='" . mysql_field_name($rs,$i) . "'value='" . $row[$i] . "'</TD>");
			}

//HTML文を出力 name列の内容を出力 変更用の入力フィールドを出力
			if ($i == 1) {
				print("<TD><INPUT type=text name='" . mysql_field_name($rs,$i) . "' length=40 maxlength=40  value='" . $row[$i] . "' </TD>");
			}

//HTML文を出力 note列の内容を出力 変更用の入力フィールドを出力
			if ($i == 2) {
				print("<TD><INPUT type=text name='" . mysql_field_name($rs,$i) . "' length=60 maxlength=60  value='" . $row[$i] . "' </TD>");
			}
			print("</TR>");
		}
//HTML文を出力 テーブルの終了を指定
		print("</TABLE><BR>");

//HTML文を出力 変更ボタンを指定
		print("<INPUT type=submit value=変更>");

//HTML文を出力 取消ボタンを指定
		print("<INPUT type=reset value=取消><BR>");

//HTML文を出力 FORMの終了を指定
		print("</FORM>");
	} else {
	
//入力されたnumberの行が存在しなかった場合はエラーメッセージを出力する
		print("numberが  [" .$key . "]  のデータは登録されていません<BR>");
	}	

//結果レコードをメモリから開放
	mysql_free_result($rs);

//DBへの接続を切断
	mysql_close($dbHandle);
}
//HTML文を出力 javascriptを使用して直前のページに戻るリンク
print ("<BR><A HREF=javascript:history.back()>戻る</A><BR>");

//HTML文を出力 BODYの終了
print("</BODY>\n");

//HTML文を出力 HTMLの終了
print("</HTML>\n");

?>

<BR>
<A HREF="myphp.php">メニュー</A><BR>
続いて、次ページで「myphp5-1php」を作成します。
  • 1
  • 2
  • 3
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます