<?php
$g_title = "해커들의 놀이터";
$js_array = ['js/member.js'];
$menu_code = "member";
include "inc_common.php";
include "inc_header.php";
include "../inc/dbconfig.php";
include "../inc/member.php"; // 회원관리 Class
include "../inc/lib.php"; // 페이지네이션
$sn = (isset($_GET["sn"]) && $_GET["sn"] != "" && is_numeric($_GET["sn"])) ? $_GET["sn"] : "";
$sf = (isset($_GET["sf"]) && $_GET["sf"] != "") ? $_GET["sf"] : "";
$paramArr = ["sn" => $sn, "sf" => $sf];
// $total, $limit, $page_limit, $page, $param
$mem = new Member($db);
$total = $mem->total($paramArr);
$limit = 5;
$page_limit = 5;
$page = (isset($_GET["page"]) && $_GET["page"] != "" && is_numeric($_GET["page"])) ? $_GET["page"] : 1;
$param = "";
$memArr = $mem->list($page, $limit, $paramArr);
?>
<main class="border rounded-2 p-5 " style="height: calc(100vh - 265px);">
<div class="container">
<h3 class="">회원관리</h3>
</div>
<table class="table table-border">
<tr>
<th>번호</th>
<th>아이디</th>
<th>이름</th>
<th>이메일</th>
<th>등록일시</th>
<th>관리</th>
</tr>
<?php
foreach ($memArr as $row) {
// 2025-07-23 22-35
// $row["create_at"] = substr($row["create_at"], 0, 16);
?>
<tr>
<td><?= $row["idx"]; ?></td>
<td><?= $row["id"]; ?></td>
<td><?= $row["name"]; ?></td>
<td><?= $row["email"]; ?></td>
<td><?= $row["create_at"]; ?></td>
<td>
<button class="btn btn-primary btn-sm">수정</button>
<button class="btn btn-danger btn-sm">삭제</button>
</td>
</tr>
<?php
}
?>
</table>
<div class="container d-flex gap-2 w-50">
<select class="form-select w-25" name="sn" id="sn">
<option value="1">이름</option>
<option value="2">아이디</option>
<option value="3">이메일</option>
</select>
<input type="text" class="form-control w-25" id="sf" name="sf">
<button class="btn btn-primary w-25" id="btn_search">검색</button>
<button class="btn btn-success" id="btn_all">전체목록</button>
</div>
<div class="d-flex justify-content-between align-items-start mt-5">
<?php
$param = "&sn=" . $sn . "&sf=" . $sf;
echo my_pagination($total, $limit, $page_limit, $page, $param);
?>
<button class="btn btn-primary" id="btn_excel">엑셀로 저장</button>
</div>
</main>
<?php
include "inc_footer.php";
?>

<div class="container d-flex gap-2 w-50">
<select class="form-select w-25" name="sn" id="sn">
<option value="1">이름</option>
<option value="2">아이디</option>
<option value="3">이메일</option>
</select>
<input type="text" class="form-control w-25" id="sf" name="sf">
<button class="btn btn-primary w-25" id="btn_search">검색</button>
<button class="btn btn-success" id="btn_all">전체목록</button>
</div>

document.addEventListener("DOMContentLoaded", () => {
const btn_search = document.querySelector("#btn_search")
btn_search.addEventListener("click", () => {
const sf = document.querySelector("#sf")
if (sf.value == "") {
alert("검색어를 입력해 주세요.")
sf.focus()
return false
}
const sn = document.querySelector("#sn")
location.href = "./member.php?sn=" + sn.value + "&sf=" + sf.value
})
const btn_all = document.querySelector("#btn_all")
btn_all.addEventListener("click", () => {
location.href = "member.php"
})
})
// 회원목록
public function list($page, $limit, $paramArr)
{
$start = ($page - 1) * $limit;
$where = "";
if ($paramArr["sn"] != "" && $paramArr["sf"]) {
switch ($paramArr["sn"]) {
case 1:
$sn_str = "name";
break;
case 2:
$sn_str = "id";
break;
case 3:
$sn_str = "email";
break;
}
$where = " WHERE " . $sn_str . "=:sf";
}
$sql = "SELECT idx, id, name, email, DATE_FORMAT(create_at,'%Y-%m-%d %H-%i') AS create_at
FROM member " . $where . "
ORDER BY idx DESC LIMIT " . $start . "," . $limit;
$stmt = $this->conn->prepare($sql);
if ($where != "") {
$stmt->bindParam(":sf", $paramArr["sf"]);
}
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute();
return $stmt->fetchAll();
}

switch ($paramArr["sn"]) {
case 1:
$sn_str = "name";
break;
case 2:
$sn_str = "id";
break;
case 3:
$sn_str = "email";
break;
}






// DB 데이터 총 데이터 개수 구하기
public function total($paramArr)
{
$where = "";
if ($paramArr["sn"] != "" && $paramArr["sf"]) {
switch ($paramArr["sn"]) {
case 1:
$sn_str = "name";
break;
case 2:
$sn_str = "id";
break;
case 3:
$sn_str = "email";
break;
}
$where = " WHERE " . $sn_str . "=:sf";
}
$sql = "SELECT COUNT(*) cnt FROM member" . $where;
$stmt = $this->conn->prepare($sql);
if ($where != "") {
$stmt->bindParam(":sf", $paramArr["sf"]);
}
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute();
$row = $stmt->fetch();
return $row["cnt"];
}
오랜만에 글을 작성하네요. 그동안 기사 시험 준비하고 장염 걸려서 고생하고 아주 시간 가는 줄 몰랐네요.
다음 시간에는 엑셀 저장을 해보겠습니다.
긴 글 봐주셔서 감사합니다.