PHPでショッピングカートを!【15.管理者一覧修正削除】

PHP

前回まで、商品管理するために管理者追加を作成
していきました。

管理者一覧

それでは、管理者一覧から作りましょう。
商品一覧[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つのパスワードが一致しない場合、
エラー表示されますので、
[戻る]をクリックして入力しなおしてください。

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

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

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

削除が完了しました。

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

コメント

タイトルとURLをコピーしました