| |
PHPによるPostgreSQL表の検索・編集・更新
<html><body bgcolor="white">
<?
/* pgs_sch_users.php */
function fin_exit(){
print <<<FOOTER
<a href="pgs_sch_users.php">ユーザ名検索に戻る</a><br>
</body></html>
FOOTER;
exit;
}
if(! isset($username)){
?>
<h1><font color="#700040">ユーザ名による検索</font></h1>
<form action="pgs_sch_users.php" method="post">
ユーザ名:
<INPUT TYPE="text" SIZE=30 NAME="username"><BR>
<br>
<INPUT TYPE="submit" VALUE="検索"><INPUT TYPE="reset" VALUE="クリア">
</FORM>
<? } else {
if(! strlen($username)){
?>
<h2>おおっと</h2>検索するユーザ名を入力してください。<br>
<?
fin_exit();
}
if(($con = pg_connect("localhost", 5432, "", "", "udb")) == 0){
print ("おおっと!Oracleサーバに接続できません。");
fin_exit();
}
?>
<h1><font color="#700040">検索しました。</font></h1>
<?
$s = <<<SQL
SELECT USERNAME, KANJI_NAME FROM USERS
WHERE USERNAME LIKE '%$username%' ORDER BY USERNAME
SQL;
$r = pg_exec($con, $s);
?>
<table border="1">
<tr><th>アカウント名</th><th>漢字氏名</th></tr>
<?
$nrows = pg_numrows($r);
for($n=0; $n<$nrows; $n++){
$account = pg_result($r, $n, 0);
$kanjiName = pg_result($r, $n, 1);
print <<<ROW
<tr><td><a href="pgs_edit_users.php?username=$account">$account</a></td>
<td>$kanjiName</td></tr>
ROW;
}
pg_freeresult($r);
pg_close($con);
?>
</table>
<? if($n == 0){ ?>
<h1><font color="#700040">あら?</font></h1>
<? } ?>
<? print "$n"; ?>件のデータが見つかりました。<br>
<? }
fin_exit();
?>
|
今度はその続きのページです。
上のページからリンクで飛んで来てロードされ、
選択された行のデータをフォームで修正できます。
そして「更新」ボタンを押すと実際にデータベースに変更を加えて、
その結果を画面に表示するというPHP文書です。
<html><body bgcolor="white">
<?
/* pgs_edit_users.php */
function fin_exit(){
print <<<FOOTER
<a href="pgs_sch_users.php">ユーザ名検索に戻る</a><br>
</body></html>
FOOTER;
exit;
}
if(! isset($username)){
?>
<h2>おおっと</h2>検索するユーザ名を入力してください。<br>
<?
fin_exit();
}
elseif(isset($HTTP_POST_VARS["editted"])){
// 更新処理
include "pgs_edit_users_update.inc";
}
else{
// 更新フォームを表示。このフォームの隠しフィールドに
// "editted" という名前のものがあります。
include "pgs_edit_users_edit.inc";
}
fin_exit();
?>
|
<?
/* pgs_edit_users_edit.inc */
if(($con = pg_connect("localhost", 5432, "", "", "udb")) == 0){
?>
<h2>おおっと</h2>Oracleサーバに接続できません。<br>
<?
fin_exit();
}
$s = <<<SQL
SELECT USERNAME, KANJI_NAME, MAIL_ADDRESS, TELNO,
SECTION_NAME, JOB_NAME FROM USERS
WHERE USERNAME = '$username'
SQL;
$r = pg_exec($con, $s);
$found = FALSE;
for($n=0; $arr = pg_fetch_row($r, $n); $n++){
$found = TRUE;
// ここの書き方うまくないかなあ
$kanji_name = $arr[1];
$mail_address = $arr[2];
$telno = $arr[3];
$section_name = $arr[4];
$job_name = $arr[5];
break; // 常に1件を想定
}
pg_freeresult($r);
pg_close($con);
if(! $found){
?>
<h2><font color="#700040">あら?</font></h2>エントリが見つかりません。<br>
<?
fin_exit();
}
?>
<form action="pgs_edit_users.php" method="post">
ユーザ名:<?= $username ?><br>
<input type="hidden" name="username" value="<?= $username ?>">
漢字氏名:
<input type="text" name="kanji_name" value="<?= $kanji_name ?>"><br>
メールアドレス:
<input type="text" name="mail_address" value="<?= $mail_address ?>" size=30><br>
電話番号:
<input type="text" name="telno" value="<?= $telno ?>"><br>
部署名:
<input type="text" name="section_name" value="<?= $section_name ?>"><br>
役職名:
<input type="text" name="job_name" value="<?= $job_name ?>"><br>
<br>
<input type="hidden" name="editted" value="1">
<input type="submit" value="更新"><br>
</form>
|
<?
/* pgs_edit_users_update.inc */
if(($con = pg_connect("localhost", 5432, "", "", "udb")) == 0){
?>
<h2>おおっと</h2>Oracleサーバに接続できません。<br>
<?
fin_exit();
}
$s = <<<SQL
UPDATE USERS
SET KANJI_NAME = '$kanji_name',
MAIL_ADDRESS = '$mail_address',
TELNO = '$telno',
SECTION_NAME = '$section_name',
JOB_NAME = '$job_name'
WHERE USERNAME = '$username'
SQL;
$r = pg_exec($con, $s);
$affectedRows = pg_cmdtuples($r);
print "${affectedRows}行のデータ($username)を更新しました。<br>";
pg_freeresult($r);
pg_close($con);
?>
|

(first uploaded 2001/12/30, KQ Taura)
|