前回まで、商品管理するために管理者追加を作成
していきました。
管理者一覧
それでは、管理者一覧から作りましょう。
商品一覧[goods_list.php]を
修正することで簡単に作成できます。
ファイル名:admin_list.php
<記述例>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>管理者一覧</title>
<style type="text/css">
<!--
table {margin: 10px;padding: 10px;}
table tr:nth-child(even) {background: cornsilk;}
table tr:nth-child(odd) {background: wheat;}
table tr th,td {border-bottom: 1px solid tan; padding: 2px 5px; text-align: center;}
table .right{text-align: right;}
.btn{background:lightsteelblue;border-radius: 10px;border: 3px solid darkslategray;padding: 6px 10px; margin-left: 120px;}
-->
</style>
</head>
<body>
<main>
<section>
<?php
try
{
require_once('../com_func.php');
$dbh=dbconnect();
$dbh->query('SET NAMES utf8');
$sql='SELECT id,name FROM admin';
$stmt=$dbh->prepare($sql);
$stmt->execute();
$dbh=null;
print '<h3>管理者一覧</h3>';
print '<table><tr>';
print '<td>管理者ID</td><td>管理者名</td></tr>';
while(true)
{
$rec=$stmt->fetch(PDO::FETCH_ASSOC);
if($rec==false){break;}
$id=$rec['id'];
$name=$rec['name'];
print '<tr><td class="right">'.$id.'</td>';
print '<td>'.$name.'</td>';
}
print '</tr></table>';
}
catch(Exception $e)
{
print ' ただいま障害により大変ご迷惑をおかけしております。';
exit();
}
?>
<button class="btn" onclick="location.href='goods_ctl.php'">商品・管理者管理へ</button>
</section>
</main>
</body>
</html>
<表示例>

管理者の一覧が表示されるだけなので
データベースから読み込み一覧を表示させるだけです。
管理者修正
管理者修正は、商品修正[goods_mod.php]を
修正することで簡単に作成できます。
ファイル名:admin_mod.php
<記述例>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>管理者修正</title>
<style type="text/css">
<!--
table {margin: 10px;padding: 10px;}
table tr:nth-child(even) {background: cornsilk;}
table tr:nth-child(odd) {background: wheat;}
table tr th,td {border-bottom: 1px solid tan; padding: 2px 5px; text-align: center;}
table .right{text-align: right;}
.btn{background:lightsteelblue;border-radius: 10px;border: 3px solid darkslategray;padding: 6px 10px; margin-left: 170px;}
-->
</style>
</head>
<body>
<main>
<section>
<?php
try
{
require_once('../com_func.php');
$dbh=dbconnect();
$dbh->query('SET NAMES utf8');
$sql='SELECT id,name FROM admin';
$stmt=$dbh->prepare($sql);
$stmt->execute();
$dbh=null;
}
catch(Exception $e)
{
print ' ただいま障害により大変ご迷惑をおかけしております。';
exit();
}
print '<h3>管理者修正</h3>';
print '修正する管理者を選択してください。<br>';
print '<table><tr>';
print '<td>選択</td><td>管理者ID</td><td>管理者名</td></tr>';
while(true)
{
$rec=$stmt->fetch(PDO::FETCH_ASSOC);
if($rec==false){break;}
$id=$rec['id'];
$name=$rec['name'];
print '<tr><td>';
print '<form method="post" action="admin_mod_chk.php">';
print '<input type="submit" value="選択"></td>';
print '<td class="right"><input type="hidden" name="id" value="'.$id.'">'.$id.'</td>';
print '<td><input type="hidden" name="name" value="'.$name.'">'.$name.'</td>';
print '</form></td>';
}
print '</tr></table>';
?>
<button class="btn" onclick="location.href='goods_ctl.php'">商品・管理者管理へ</button>
</section>
</main>
</body>
</html>
管理者修正チェック
管理者修正チェックは、商品修正チェック[goods_mod_chk.php]を
修正することで簡単に作成できます。
ファイル名:admin_mod_chk.php
<記述例>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>管理者修正</title>
<style type="text/css">
<!--
form {background: lightcyan; margin:10px; padding:10px; border:6px solid royalblue; display: inline-block;}
input {margin:6px;}
.btn{background:lightsteelblue;border-radius: 10px;border: 3px solid royalblue;padding: 6px 10px; margin-left: 170px;}
-->
</style>
</head>
<body>
<main>
<section>
<?php
require_once('../com_func.php');
$post=sanitize($_POST);
$id=$post['id'];
$name=$post['name'];
?>
<h3>商品修正</h3>
修正しましたら[修正する]をクリックしてください。<br><br>
<form method="post" action="admin_mod_end.php">
<h3>管理者修正</h3>
管理者名:<input type="text" name="name" value="<?php print $name ?>"><br>
パスワード:<input type="password" name="pass1" style="width:200px"><br>
パスワード(再):<input type="password" name="pass2" style="width:200px"><br>
<input type="hidden" name="id" value="<?php print $id ?>">
<input type="submit" value="修正する" style="margin:10px 0 10px 40%;">
</form>
<br>
<button class="btn" onclick="location.href='goods_ctl.php'">商品・管理者管理へ</button>
</section>
</main>
</body>
</html>
30行目:パスワードを入力します。
31行目:パスワードをもう一度入力します。
管理者修正では、管理者名だけを修正したいと思っていても
パスワードを再設定する必要があります。
なぜなら、パスワードは暗号化されているので、
以前のパスワードとの照合がしにくいからです。
ここでも、パスワードは2度入力していただき、
入力ミスを防止しています。
管理者修正完了
管理者修正完了は、商品修正完了[goods_mod_end.php]を
修正することで簡単に作成できます。
ファイル名:admin_mod_end.php
<記述例>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>管理者修正完了</title>
<style type="text/css">
<!--
.btn{background:lightsteelblue;border-radius: 10px;border: 3px solid darkslategray;padding: 6px 10px;}
.red{color: red;font-weight: bold;}
-->
</style>
</head>
<body>
<main>
<section>
<?php
require_once('../com_func.php');
$post=sanitize($_POST);
$id=$post['id'];
$name=$post['name'];
$pass=$post['pass1'];
$pass2=$post['pass2'];
$flag1=true;
if($pass=='')
{
print '<span class="red">パスワードが入力されていません。</span>';
$flag1=false;
}
elseif($pass!=$pass2)
{
print '<span class="red">パスワードが一致しません。</span>';
$flag1=false;
}
if($flag1==false)
{
print '<form method="post" action="admin_mod_chk.php">';
print '<input type="hidden" name="id" value="'.$id.'">';
print '<input type="hidden" name="name" value="'.$name.'">';
print '<input type="submit" value="戻る"></form><br>';
}
else
{
try
{
$pass=md5($pass);
$dbh=dbconnect();
$dbh->query('SET NAMES utf8');
$sql='UPDATE admin SET name=?,pass=? WHERE id=?';
$stmt=$dbh->prepare($sql);
$data[]=$name;
$data[]=$pass;
$data[]=$id;
$stmt->execute($data);
$dbh=null;
print '管理者名:'.$name.'<br>';
print ' 修正しました。<br>';
}
catch(Exception $e)
{
print ' ただいま障害により大変ご迷惑をおかけしております。';
exit();
}
}
?>
<br>
<button class="btn" onclick="location.href='goods_ctl.php'">商品・管理者管理へ</button>
</section>
</main>
</body>
</html>
26~43行目:パスワードのチェックをしています。
27行目:パスワードが入力されているか。
32行目:2つのパスワードが一致しているか。
37行目:パスワード入力ミスがある場合39~42行目の処理。
39~42行目:再度入力してもらうために管理者データを送信。
管理者削除
ここから一気に削除3ファイルを作成します。
ファイル名:admin_del.php
<記述例>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>管理者削除</title>
<style type="text/css">
<!--
table {margin: 10px;padding: 10px;}
table tr:nth-child(even) {background: cornsilk;}
table tr:nth-child(odd) {background: wheat;}
table tr th,td {border-bottom: 1px solid tan; padding: 2px 5px; text-align: center;}
table .right{text-align: right;}
.btn{background:lightsteelblue;border-radius: 10px;border: 3px solid darkslategray;padding: 6px 10px; margin-left: 170px;}
-->
</style>
</head>
<body>
<main>
<section>
<?php
try
{
require_once('../com_func.php');
$dbh=dbconnect();
$dbh->query('SET NAMES utf8');
$sql='SELECT id,name FROM admin';
$stmt=$dbh->prepare($sql);
$stmt->execute();
$dbh=null;
}
catch(Exception $e)
{
print ' ただいま障害により大変ご迷惑をおかけしております。';
exit();
}
print '<h3>管理者削除</h3>';
print '削除する管理者を選択してください。<br>';
print '<table><tr>';
print '<td>選択</td><td>管理者ID</td><td>管理者名</td></tr>';
while(true)
{
$rec=$stmt->fetch(PDO::FETCH_ASSOC);
if($rec==false){break;}
$id=$rec['id'];
$name=$rec['name'];
print '<tr><td>';
print '<form method="post" action="admin_del_chk.php">';
print '<input type="submit" value="選択"></td>';
print '<td class="right"><input type="hidden" name="id" value="'.$id.'">'.$id.'</td>';
print '<td><input type="hidden" name="name" value="'.$name.'">'.$name.'</td>';
print '</form></td>';
}
print '</tr></table>';
?>
<button class="btn" onclick="location.href='goods_ctl.php'">商品・管理者管理へ</button>
</section>
</main>
</body>
</html>
管理者削除チェック
ファイル名:admin_del_chk.php
<記述例>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>管理者削除チェック</title>
</head>
<body>
<main>
<section>
<?php
require_once('../com_func.php');
$post=sanitize($_POST);
$id=$post['id'];
$name=$post['name'];
?>
<h3>管理者削除</h3>
管理者名:<?php print $name; ?><br>
この管理者を削除してよろしいでしょうか。<br><br>
<form method="post" action="admin_del_end.php">
<input type="hidden" name="id" value="<?php print $id ?>">
<input type="hidden" name="name" value="<?php print $name ?>">
<input type="submit" value="削除する">
</form>
<br>
<button onclick="location.href='goods_ctl.php'">商品・管理者管理へ</button>
</section>
</main>
</body>
</html>
管理者削除完了
ファイル名:admin_del_end.php
<記述例>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>管理者削除完了</title>
<style type="text/css">
<!--
.btn{background:lightsteelblue;border-radius: 10px;border: 3px solid darkslategray;padding: 6px 10px;}
-->
</style>
</head>
<body>
<main>
<section>
<?php
require_once('../com_func.php');
$post=sanitize($_POST);
$id=$post['id'];
$name=$post['name'];
try
{
$dbh=dbconnect();
$dbh->query('SET NAMES utf8');
$sql='DELETE FROM admin WHERE id=?';
$stmt=$dbh->prepare($sql);
$data[]=$id;
$stmt->execute($data);
$dbh=null;
}
catch(Exception $e)
{
print ' ただいま障害により大変ご迷惑をおかけしております。';
exit();
}
?>
管理者名:<?php print $name; ?><br>
この管理者を削除しました。<br>
<br>
<button class="btn" onclick="location.href='goods_ctl.php'">商品管理へ</button>
</section>
</main>
</body>
</html>
動作確認
商品・管理者管理[goods_ctl.php]を実行し、
[管理者一覧]をクリックします。

管理者一覧が表示されます。

[管理者修正]をクリックします。

修正したい管理者の[選択]をクリックします。

[管理者名]または[パスワード]を修正します。
[パスワード]は必ず2度入力する必要があります。
[修正]をクリックします。

修正が完了した旨、表示されます。

[パスワード]を入力しなかったり、
2つのパスワードが一致しない場合、
エラー表示されますので、
[戻る]をクリックして入力しなおしてください。

[管理者削除]をクリックします。

削除したい管理者の[選択]をクリックします。

選択した管理者を削除するのかの確認が出ます。

削除が完了しました。

これで、管理者の追加修正削除ができるように
なりました。
コメント