본문 바로가기
Programming

[PHP 강좌] 42. 설치형 게시판 만들기 5 - 회원관리

by Mizix 2010. 2. 11.
반응형
지난시간에는 게시판을 생성하고 수정관리하는 페이지를 만들었습니다.

오늘은 회원들을 관리하는 페이지를 만들어 보도록 하겠습니다.

들어간 소스들은 지난시간의 게시판 관리 부분과 크게 차이가 없으니 설명은 생량하도록 하겠습니다.

<?
// 1. 공통 인클루드 파일
include "./admin_head.php";

// 2. 페이지 변수 설정
if($_GET[page] && $_GET[page] > 0){
    // 현재 페이지 값이 존재하고 0 보다 크면 그대로 사용
    $page = $_GET[page];
}else{
    // 그 외의 경우는 현재 페이지를 1로 설정
    $page = 1;
}
// 한 페이지에 보일 글 수
$page_row = 10;
// 한줄에 보여질 페이지 수
$page_scale = 10;
// 페이징을 출력할 변수 초기화
$paging_str = "";

// 3. 전체 회원 갯수 알아내기
$sql = "select count(*) as cnt from bd__member where 1";
$total_count = sql_total($sql);

// 4. 페이지 출력 내용 만들기
$paging_str = paging($page, $page_row, $page_scale, $total_count);

// 5. 시작 열을 구함
$from_record = ($page - 1) * $page_row;

// 6. 목록 구하기
$query = "select * from bd__member where 1 order by m_idx desc limit ".$from_record.", ".$page_row;
$data = sql_list($query);
?>
<br/>
<table style="width:1000px;height:50px;border:5px #CCCCCC solid;">
    <tr>
        <td align="center" valign="middle" style="font-zise:15px;font-weight:bold;">회원 목록</td>
    </tr>
</table>
<br/>
<table cellspacing="1" style="width:1000px;height:50px;border:0px;background-color:#999999;">
    <tr>
        <td align="center" valign="middle" width="5%" style="height:30px;background-color:#CCCCCC;">번호</td>
        <td align="center" valign="middle" width="20%" style="height:30px;background-color:#CCCCCC;">아이디</td>
        <td align="center" valign="middle" width="45%" style="height:30px;background-color:#CCCCCC;">이름</td>
        <td align="center" valign="middle" width="30%" style="height:30px;background-color:#CCCCCC;">레벨</td>
    </tr>
<?
if($total_count > 0){
    for($i=0;$i<count($data);$i++){
?>
    <tr>
        <td align="center" valign="middle" style="height:30px;background-color:#FFFFFF;"><?=($total_count - (($page - 1) * $page_row) - $i )?></td>
        <td align="center" valign="middle" style="height:30px;background-color:#FFFFFF;"><a href="./admin_member_modify.php?m_idx=<?=$data[$i][m_idx]?>&page=<?=$page?>"><?=$data[$i][m_id]?></a></td>
        <td align="center" valign="middle" style="height:30px;background-color:#FFFFFF;"><a href="./admin_member_modify.php?m_idx=<?=$data[$i][m_idx]?>&page=<?=$page?>"><?=$data[$i][m_name]?></a></td>
        <td align="center" valign="middle" style="height:30px;background-color:#FFFFFF;">
        <?
        if($data[$i][m_level] == 1){
            echo "일반회원";
        }else if($data[$i][m_level] == 9){
            echo "어드민";
        }else{
            echo $data[$i][m_level];
        }?>
        </td>
    </tr>
<?
    }
}else{?>
    <tr>
        <td align="center" valign="middle" colspan="4" style="height:50px;background-color:#FFFFFF;">회원이 하나도 없습니다.</td>
    </tr>
<?}?>
</table>
[admin_member_list.php 소스]

[실행화면]



<?
// 1. 공통 인클루드 파일
include "./admin_head.php";

// 2. 회원 설정 데이터 불러오기
$sql = "select * from bd__member where m_idx = '".$_GET[m_idx]."'";
$data = sql_fetch($sql);
if(!$data[m_idx]){
    alert("없는 회원입니다.");
}
// 3. 입력 HTML 출력
?>
<br/>
<table style="width:1000px;height:30px;border:5px #CCCCCC solid;">
    <tr>
        <td align="center" valign="middle" style="font-zise:15px;font-weight:bold;">회원 정보수정</td>
    </tr>
</table>
<br/>
<form name="bWriteForm" method="post" action="./admin_member_modify_save.php" style="margin:0px;">
<input type="hidden" name="m_idx" value="<?=$data[m_idx]?>">
<table style="width:1000px;height:30px;border:0px;">
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">회원아이디< /td>
        <td align="left" valign="middle" style="width:800px;height:30px;">&nbsp;<?=$data[m_id]?></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">회원이름< /td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><input type="text" name="m_name" style="width:780px;" value="<?=$data[m_name]?>"></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">레벨</td& gt;
        <td align="left" valign="middle" style="width:800px;height:30px;">
        &nbsp;
        <select name="m_level">
            <option value="1" <?if($data[m_level] == 1){echo "selected";}?>>일반회원</option>
            <option value="9" <?if($data[m_level] == 9){echo "selected";}?>>어드민</option>
        </select>
        </td>
    </tr>
    <!-- 4. 수정 버튼 클릭시 입력필드 검사 함수 write_save 실행 -->
    <tr>
        <td align="center" valign="middle" colspan="2"><input type="button" value=" 회원수정 " onClick="write_save();">&nbsp;&nbsp;&nbsp;<input type="button" value=" 삭제 " onClick="location.replace('./admin_member_delete.php?m_idx=<?=$data[m_idx]?>')">&nbsp;&nbsp;&nbsp;<input type="button" value=" 뒤로가기 " onClick="history.back();"></td>
    </tr>
</table>
</form>
<script>
// 5.입력필드 검사함수
function write_save()
{
    // 6.form 을 f 에 지정
    var f = document.bWriteForm;

    // 7.입력폼 검사

    if(f.m_name.value == ""){
        alert("회원이름을 입력해 주세요.");
        return false;
    }

    // 8.검사가 성공이면 form 을 submit 한다
    f.submit();

}
</script>
[admin_member_modify.php 소스]

<?
// 1. 공통 인클루드 파일
include "./admin_head.php";

// 2. 회원 존재여부 검사
$sql = "select * from bd__member where m_idx = '".$_POST[m_idx]."'";
$data = sql_fetch($sql);
if(!$data[m_idx]){
    alert("없는 회원입니다.");
}

// 3. 넘어온 변수 검사
if(trim($_POST[m_name]) == ""){
    alert("회원이름을 입력해 주세요.");
}

$m_idx = $_POST[m_idx];

// 4. 회원 저장
$sql = "update bd__member set
        m_name = '".trim($_POST[m_name])."',
        m_level = '".$_POST[m_level]."'
        where m_idx = '".$m_idx."'
        ";
sql_query($sql);


// 5. 이름이 바귀었으면 회원 글과 코멘트의 이름 수정
if($data[m_name] != trim($_POST[m_name])){
    $sql = "update bd__board set m_name ='".trim($_POST[m_name])."' where m_id = '".$data[m_id]."'";
    sql_query($sql);

    $sql = "update bd__comment set m_name ='".trim($_POST[m_name])."' where m_id = '".$data[m_id]."'";
    sql_query($sql);
}


// 6. 회원목록 페이지로 보내기
alert("회원이 수정 되었습니다.", "./admin_member_list.php");
?>
[admin_member_modify_save.php 소스]

<?
// 1. 공통 인클루드 파일
include "./admin_head.php";


// 2. 회원 존재여부 검사
$sql = "select * from bd__member where m_idx = '".$_GET[m_idx]."'";
$data = sql_fetch($sql);
if(!$data[m_idx]){
    alert("없는 회원입니다.");
}

$m_idx = $_GET[m_idx];

// 4. 회원 삭제
$sql = "delete from bd__member where m_idx = '".$m_idx."'";
sql_query($sql);

// 5. 글에 딸린 코멘트 및 파일 삭제를 위한 게시글 목록 구하기
$sql = "select * from bd__board where m_id = '".$data[m_id]."'";
$data1 = sql_list($sql);

// 6. 게시글 삭제
$sql = "delete from bd__board where m_id = '".$data[m_id]."'";
sql_query($sql);

// 7. 게시글에 딸린 코멘트 및 게시물 파일 삭제
for($i=0;$i<count($data1);$i++){
    $sql = "delete from bd__comment where b_idx = '".$data1[b_idx]."'";
    sql_query($sql);

    $b_file = "./data/".$data1[b_idx];
    @unlink($b_file);
}

// 8. 코멘트 삭제
$sql = "delete from bd__comment where m_id = '".$data1[m_id]."'";
sql_query($sql);

// 9. 회원목록 페이지로 보내기
alert("회원이 삭제 되었습니다.", "./admin_member_list.php");
?>
[admin_member_delete.php 소스]

다음시간에는 회원쪽의 공통인클루드와 회원가입부분을 배워보도록 하겠습니다.
반응형