事前の設定
登録内容変更プログラム(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」を作成します。