반응형

글쓰기를 하기 전에 등록 버튼에 멀티값을 달아준다.

 

/index.php

<?php
include $_SERVER["DOCUMENT_ROOT"]."/inc/header.php";

$search_keyword = $_GET['search_keyword'];

if($search_keyword){
    $search_where = " and (subject like '%".$search_keyword."%' or content like '%".$search_keyword."%')";
}

$pageNumber  = $_GET['pageNumber']??1;//현재 페이지, 없으면 1
if($pageNumber < 1) $pageNumber = 1;
$pageCount  = $_GET['pageCount']??10;//페이지당 몇개씩 보여줄지, 없으면 10
$firstPageNumber  = $_GET['firstPageNumber'];
if($firstPageNumber < 1) $firstPageNumber = 1;

    $multi=$_GET['multi']??"free";//게시판 구분자
    $boards = new Boards($multi);//인스턴스를 생성한다
    $rsc=$boards->boardLists($multi, $search_keyword, $pageNumber, $pageCount);//클래스에 있는 함수를 이용해 게시물 리스트를 가져온다.
//    print_r($rsc);
?>
        <div><?php //클래스 적용부분
            $bi=$boards->boardInfo();
            echo $bi["boardName"]." ( 총 게시물수 : ".$bi["boardCount"]." / 마지막등록일 : ".$bi["boardLastDate"].")";
        ?></div>
        <!-- 더보기 버튼을 클릭하면 다음 페이지를 넘겨주기 위해 현재 페이지에 1을 더한 값을 준비한다. 더보기를 클릭할때마다 1씩 더해준다. -->
        <input type="hidden" name="nextPageNumber" id="nextPageNumber" value="<?php echo $pageNumber+1;?>">
        <table class="table">
        <thead>
            <tr>
            <th scope="col">번호</th>
            <th scope="col">글쓴이</th>
            <th scope="col">썸네일</th>
            <th scope="col">제목</th>
            <th scope="col">등록일</th>
            </tr>
        </thead>
        <tbody id="board_list">
            <?php
                $totalCount = Boards::totalCount($multi,$search_keyword);//전체 게시물 수를 가져오는 클래스
                $idNumber = $totalCount - ($pageNumber-1)*$pageCount;
                foreach($rsc as $r){
                    //검색어만 하이라이트 해준다.
                    $subject = str_replace($search_keyword,"<span style='color:red;'>".$search_keyword."</
                        span>",$r->subject);
                   
            ?>

                <tr>
                    <th scope="row"><?php echo $idNumber--;?></th>
                    <td><?php echo member_name($r->userid);?></td>
                    <td><?php
                        if(!empty($r->thumb)){
                            echo "<img src='/data/".$r->thumb."' width='50'>";
                        }else{
                            echo "null";
                        }
                    ?></td>
                    <td>
                        <?php
                            if($r->parent_id){
                                echo "&nbsp;&nbsp;<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-arrow-return-right\" viewBox=\"0 0 16 16\">
                                <path fill-rule=\"evenodd\" d=\"M1.5 1.5A.5.5 0 0 0 1 2v4.8a2.5 2.5 0 0 0 2.5 2.5h9.793l-3.347 3.346a.5.5 0 0 0 .708.708l4.2-4.2a.5.5 0 0 0 0-.708l-4-4a.5.5 0 0 0-.708.708L13.293 8.3H3.5A1.5 1.5 0 0 1 2 6.8V2a.5.5 0 0 0-.5-.5z\"/>
                              </svg>";
                            }
                        ?>  
                    <a href="/view.php?bid=<?php echo $r->bid;?>"><?php echo $subject?></a>
                    <?php if($r->filecnt){?>
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-card-image" viewBox="0 0 16 16">
                        <path d="M6.002 5.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z"/>
                        <path d="M1.5 2A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-13zm13 1a.5.5 0 0 1 .5.5v6l-3.775-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062L1.002 12v.54A.505.505 0 0 1 1 12.5v-9a.5.5 0 0 1 .5-.5h13z"/>
                        </svg>
                    <?php }?>
                    <?php if($r->memocnt){?>
                        <span <?php if((time()-strtotime($r->memodate))<=86400){ echo "style='color:red;'";}?>>
                            [<?php echo $r->memocnt;?>]
                        </span>
                    <?php }?>
                    <?php if($r->newid){?>
                        <span class="badge bg-danger">New</span>
                    <?php }?>
                </td>
                    <td><?php echo $r->regdate?></td>
                </tr>
            <?php }?>
        </tbody>
        </table>
        <!-- <div class="d-grid gap-2" style="margin:20px;">
            <button class="btn btn-secondary" type="button" id="more_button">더보기</button>
        </div> -->
        <form method="get" action="<?php echo $_SERVER["PHP_SELF"]?>">
        <div class="input-group mb-12" style="margin:auto;width:50%;">
                <input type="text" class="form-control" name="search_keyword" id="search_keyword" placeholder="제목과 내용에서 검색합니다." value="<?php echo $search_keyword;?>" aria-label="Recipient's username" aria-describedby="button-addon2">
                <button class="btn btn-outline-secondary" type="button" id="search">검색</button>
        </div>
        </form>
        <p>
            <?php echo Boards::paging($multi, $search_keyword, $pageNumber, $pageCount, $firstPageNumber);?>
        </p>

        <p style="text-align:right;">

            <?php
                if($_SESSION['UID']){
            ?>
                <a href="write.php?multi=<?php echo $multi;?>"><button type="button" class="btn btn-primary">등록</button><a>
                <a href="/member/logout.php"><button type="button" class="btn btn-primary">로그아웃</button><a>
            <?php
                }else{
            ?>
                <a href="/member/login.php"><button type="button" class="btn btn-primary">로그인</button><a>
                <a href="/member/signup.php"><button type="button" class="btn btn-primary">회원가입</button><a>
            <?php
                }
            ?>
        </p>

<script>
    $("#more_button").click(function () {
       
        var data = {//more_list_page.php에 넘겨주는 파라미터 값이다.
            pageNumber : $('#nextPageNumber').val() ,
            pageCount : <?php echo $pageCount;?>,
            totalCount : <?php echo $totalCount;?>,
            search_keyword : <?php echo $search_keyword;?>
        };
            $.ajax({
                async : false ,
                type : 'post' ,//post방식으로 넘겨준다. ajax는 반드시 post로 해준다.
                url : 'more_list_page.php' ,
                data  : data ,//위에서 만든 파라미터들을 넘겨준다.
                dataType : 'html' ,//리턴받을 형식이다. html말고 text난 json도 있다. json을 가장 많이 쓴다.
                error : function() {} ,
                success : function(return_data) {
                    if(return_data==false){
                        alert('마지막 페이지입니다.');
                        return;
                    }else{
                        $("#board_list").append(return_data);//table 마지막에 붙여준다. 반대는 prepend가 있다.
                        $("#nextPageNumber").val(parseInt($('#nextPageNumber').val())+1);//다음페이지를 위해 1씩 증가해준다.
                    }
                }
        });
    });
</script>

<?php
include $_SERVER["DOCUMENT_ROOT"]."/inc/footer.php";

그리고 글쓰기 화면에서도 저장할때 multi값을 넘겨주도록 소스를 수정해주어야한다.

 

/write.php

<?php include $_SERVER["DOCUMENT_ROOT"]."/inc/header.php";

if(!$_SESSION['UID']){
    echo "<script>alert('회원 전용 게시판입니다.');history.back();</script>";
    exit;
}

$multi=$_GET['multi']??"free";//게시판 구분자
$bid=$_GET["bid"];//get으로 넘겼으니 get으로 받는다.
$parent_id=$_GET["parent_id"];

if($bid){//bid가 있다는건 수정이라는 의미다.

    $result = $mysqli->query("select * from board where bid=".$bid) or die("query error => ".$mysqli->error);
    $rs = $result->fetch_object();

    if($rs->userid!=$_SESSION['UID']){
        echo "<script>alert('본인 글이 아니면 수정할 수 없습니다.');history.back();</script>";
        exit;
    }

    $fquery="select * from file_table where status=1 and bid=".$rs->bid." order by fid asc";
    $file_result = $mysqli->query($fquery) or die("query error => ".$mysqli->error);
    while($frs = $file_result->fetch_object()){
        $fileArray[]=$frs;
    }

}

if($parent_id){//parent_id가 있다는건 답글이라는 의미다.

    $result = $mysqli->query("select * from board where bid=".$parent_id) or die("query error => ".$mysqli->error);
    $rs = $result->fetch_object();
    $rs->subject = "[RE]".$rs->subject;
}

    //기존에 삽입한 이미지가 있다면 정보를 불러온다.
    if($bid){
        $results = $mysqli->query("select GROUP_CONCAT(fid) as fids from file_table_summer where bid=".$bid) or die("query error => ".$mysqli->error);
        $fs = $results->fetch_object();
    }
?>
        <form method="post" action="write_ok.php" onsubmit="return sendform();" enctype="multipart/form-data">
            <input type="hidden" name="multi" value="<?php echo $multi;?>">    
            <input type="hidden" name="bid" value="<?php echo $bid;?>">
            <input type="hidden" name="parent_id" value="<?php echo $parent_id;?>">
            <input type="hidden" name="file_table_id" id="file_table_id" value="">
            <input type="hidden" name="summer_fid" id="summer_fid" value="<?php echo $fs->fids;?>">
            <div class="mb-3">
            <label for="exampleFormControlInput1" class="form-label">이름</label>
                <input type="text" name="username" class="form-control" id="exampleFormControlInput1" value="<?php echo member_name($_SESSION['UID']);?>">

            <label for="exampleFormControlInput1" class="form-label">제목</label>
                <input type="text" name="subject" class="form-control" id="exampleFormControlInput1" placeholder="제목을 입력하세요." value="<?php echo $rs->subject;?>">
            </div>
            <div class="mb-3">
            <label for="exampleFormControlTextarea1" class="form-label">내용</label>
            <!-- summernote 추가분 -->
            <div class="mb-3">
                <iframe id="summer" src="summernote.php?content=<?php echo urlencode(htmlspecialchars_decode($rs->content));?>" style="width:100%; height:520px; border:none" scrolling = "no"></iframe>
                <textarea id="content" name="content" style="display: none;"></textarea>
            </div>
            </div>
            <div class="mb-3">
                <input type="file" name="upfile[]" id="upfile" multiple class="form-control" aria-label="Large file input example">
            </div>
            <!-- 첨부된 이미지 표시 -->
            <div class="row row-cols-1 row-cols-md-6 g-4" id="imageArea">
                <?php
                    foreach($fileArray as $fa){
                ?>
                <div class="col" id="f_<?php echo $fa->fid;?>">
                    <div class="card h-100">
                        <img src="/data/<?php echo $fa->filename?>" class="card-img-top" >
                    <div class="card-body">
                        <button type="button" class="btn btn-warning" onclick="file_del(<?php echo $fa->fid;?>)">삭제</button>
                    </div>
                    </div>
                </div>
                <?php }?>
               
            </div>
            <!-- 첨부된 이미지 -->
            <br />
            <button type="submit" class="btn btn-primary">등록</button>
        </form>

<script>

    function sendform(){
        var contents=$('#summer').get(0).contentWindow.$('#summernote').summernote('code');//iframe에 있는 summernote함수를 작동시킨다.

        if ($('#summer').get(0).contentWindow.$('#summernote').summernote('isEmpty')) {
          alert('내용을 입력하세요.');
          return false;
        }

        $("#content").html(contents);

        return true;
    }

    $("#upfile").change(function(){

        var files = $('#upfile').prop('files');
        for(var i=0; i < files.length; i++) {
            attachFile(files[i]);
        }

        $('#upfile').val('');

    });  

    function attachFile(file) {
        var formData = new FormData();
        formData.append("savefile", file);
        $.ajax({
            url: 'save_image.php',
            data: formData,
            cache: false,
            contentType: false,
            processData: false,
            dataType : 'json' ,
            type: 'POST',
            success: function (return_data) {
                if(return_data.result=="member"){
                    alert('로그인 하십시오.');
                    return;
                }else if(return_data.result=="size"){
                    alert('10메가 이하만 첨부할 수 있습니다.');
                    return;
                }else if(return_data.result=="image"){
                    alert('이미지 파일만 첨부할 수 있습니다.');
                    return;
                }else if(return_data.result=="error"){
                    alert('첨부하지 못했습니다. 관리자에게 문의하십시오.');
                    return;
                }else{
                    fid = $("#file_table_id").val() + return_data.fid + ",";
                    $("#file_table_id").val(fid);
                    var html = "<div class='col' id='f_"+return_data.fid+"'><div class='card h-100'><img src='/data/"+return_data.savename+"' class='card-img-top'><div class='card-body'><button type='button' class='btn btn-warning' onclick='file_del("+return_data.fid+")'>삭제</button></div></div></div>";
                    $("#imageArea").append(html);
                }
            }
        });

    }



    function file_del(fid){

        if(!confirm('삭제하시겠습니까?')){
        return false;
        }
           
        var data = {
            fid : fid
        };
            $.ajax({
                async : false ,
                type : 'post' ,
                url : 'file_delete.php' ,
                data  : data ,
                dataType : 'json' ,
                error : function() {} ,
                success : function(return_data) {
                    if(return_data.result=="member"){
                        alert('로그인 하십시오.');
                        return;
                    }else if(return_data.result=="my"){
                        alert('본인이 작성한 글만 삭제할 수 있습니다.');
                        return;
                    }else if(return_data.result=="no"){
                        alert('삭제하지 못했습니다. 관리자에게 문의하십시오.');
                        return;
                    }else{
                        $("#f_"+fid).hide();
                    }
                }
        });

    }

</script>

<?php
include $_SERVER["DOCUMENT_ROOT"]."/inc/footer.php";
?>

어디가 바뀌었는지 한번 잘 찾아보자.

 

이제 글을 쓰고 저장 버튼을 눌렀을때 작동하던 write_ok.php 파일을 수정해 클래스를 이용한 글 저장 작업을 해보도록 하겠다.

 

/write_ok.php

<?php session_start();
include $_SERVER["DOCUMENT_ROOT"]."/inc/dbcon.php";
include_once $_SERVER["DOCUMENT_ROOT"]."/lib/lib.php";//클래스를 불러오기 위해 include
ini_set( 'display_errors', '0' );
if(!$_SESSION['UID']){
    echo "<script>alert('회원 전용 게시판입니다.');location.href='/index.php';</script>";
    exit;
}

$subject=$_POST["subject"];
$content=$_POST["content"];
$multi=$_POST["multi"];
$bid=$_POST["bid"];//bid값이 있으면 수정이고 아니면 등록이다.
$parent_id=$_POST["parent_id"];//parent_id가 있으면 답글이다.
$userid=$_SESSION['UID'];//userid는 세션값으로 넣어준다.
$status=1;//status는 1이면 true, 0이면 false이다.
$file_table_id=$_POST["file_table_id"];
$summer_fid=rtrim($_POST["summer_fid"],',');

$bid=Boards::boardWrite($multi, $bid, $parent_id, $subject, $content);//글 저장하는 클래스
if($bid==-1){
    echo "<script>alert('본인 글이 아니면 수정할 수 없습니다.');location.href='/';</script>";
    exit;
}

if($_FILES["upfile"]["name"][0]){//첨부한 파일이 있으면

    for($k=0;$k<count($_FILES["upfile"]["name"]);$k++){

        if($_FILES['upfile']['size'][$k]>10240000){//10메가
            echo "<script>alert('10메가 이하만 첨부할 수 있습니다.');history.back();</script>";
            exit;
        }

        if($_FILES['upfile']['type'][$k]!='image/jpeg' and $_FILES['upfile']['type'][$k]!='image/gif' and $_FILES['upfile']['type'][$k]!='image/png'){//이미지가 아니면, 다른 type은 and로 추가
            echo "<script>alert('이미지만 첨부할 수 있습니다.');history.back();</script>";
            exit;
        }

        $save_dir = $_SERVER['DOCUMENT_ROOT']."/data/";//파일을 업로드할 디렉토리
        $filename = $_FILES["upfile"]["name"][$k];
        $ext = pathinfo($filename,PATHINFO_EXTENSION);//확장자 구하기
        $newfilename = date("YmdHis").substr(rand(),0,6);
        $upfile = $newfilename.".".$ext;//새로운 파일이름과 확장자를 합친다
       
        if(move_uploaded_file($_FILES["upfile"]["tmp_name"][$k], $save_dir.$upfile)){//파일 등록에 성공하면 디비에 등록해준다.
            $sql="INSERT INTO testdb.file_table
            (bid, userid, filename)
            VALUES(".$bid.", '".$_SESSION['UID']."', '".$upfile."')";
            $result=$mysqli->query($sql) or die($mysqli->error);
        }

    }

}

if($file_table_id){
    $fid=explode(",",$file_table_id);
    foreach($fid as $f){
        if($f){
            $uq="update file_table set bid=".$bid." where fid=".$f;
            $ur=$mysqli->query($uq) or die($mysqli->error);
        }
    }
}

if($summer_fid){
    $results = $mysqli->query("select * from file_table_summer where fid in (".$summer_fid.")") or die("query error => ".$mysqli->error);
    while($fs = $results->fetch_object()){
        if(strpos($content,$fs->filename)){//등록한 글에 삽입한 이미지가 남아 있으면 테이블 정보 업데이트
            $uq="update file_table_summer set bid=".$bid." where fid=".$fs->fid;
            $ur=$mysqli->query($uq) or die($mysqli->error);
        }else{//그렇지 않으면 파일을 지우고 테이블의 정보도 지운다.
            $delete_file=$_SERVER["DOCUMENT_ROOT"]."/data/".$fs->filename;
            unlink($delete_file);
            $dq="delete from file_table_summer where fid=".$fs->fid;
            $dr=$mysqli->query($dq) or die($mysqli->error);
        }
    }
}


if($bid){
    echo "<script>location.href='/index.php';</script>";
    exit;
}else{
    echo "<script>alert('글등록에 실패했습니다.');history.back();</script>";
    exit;
}


?>

이번엔 클래스를 수정해준다.

 

/lib/lib.php

<?php session_start();
include $_SERVER["DOCUMENT_ROOT"]."/inc/dbcon.php";

//글 작성자의 이름을 가져오기 위해 함수를 사용했다. 매개변수인 userid를 통해 이름을 알아낸 후 그 값을 리턴해 준다.
function member_name($userid){
    global $mysqli;//$mysqli 는 dbconn.php에서 만들어진 변수이기때문에 함수안에서 사용하려면 global로 선언해주어야한다.
    $query = "select username from members where userid='".$userid."'";
    $result = $mysqli->query($query) or die("query error => ".$mysqli->error);
    $rs = $result->fetch_object();
    return $rs->username;
}

class Boards {
    private $boardName;//게시판명
    private $boardCount;//게시물수
    private $boardLastDate;//마지막으로 게시물이 등록된 날짜

    public function boardname($multi){
        switch($multi) {
            case "free":$rs="자유게시판";
            break;
            case "humor":$rs="유머게시판";
            break;
            case "star":$rs="연예인게시판";
            break;
        }
        return $rs;
    }

    public function __construct($multi="free"){//생성자다. 생성자에 파라미터가 있다. 파라미터값이 없으면 "free"로 지정한다.
        global $mysqli;
        $query = "select regdate, cnt from board b1
        join (
                select b2.multi, count(*) as cnt from board b2 where status=1 group by b2.multi
        ) board2 on b1.multi=board2.multi
        where b1.multi='".$multi."'
        and status=1 order by bid desc limit 1;";
        $result = $mysqli->query($query) or die("query error => ".$mysqli->error);
        $rs = $result->fetch_object();
        $this->boardName=self::boardname($multi);
        $this->boardCount=$rs->cnt;
        $this->boardLastDate=$rs->regdate;
    }

    public function boardInfo(){
        $bi = array(
            "boardName"=>$this->boardName,
            "boardCount"=>$this->boardCount,
            "boardLastDate"=>$this->boardLastDate
        );
        return $bi;//게시판 정보를 배열로 만들어서 리턴한다.
    }

    public function boardLists($multi="free", $search_keyword = null, $pageNumber = 1, $pageCount = 10){
        global $mysqli;
        $sql = "select b.*, if((now() - regdate)<=86400,1,0) as newid
        ,(select count(*) from memo m where m.status=1 and m.bid=b.bid) as memocnt
        ,(select m.regdate from memo m where m.status=1 and m.bid=b.bid order by m.memoid desc limit 1) as memodate
        ,(select count(*) from file_table f where f.status=1 and f.bid=b.bid) as filecnt
        ,(select filename from file_table_summer fs where fs.status=1 and fs.bid=b.bid order by fs.fid asc limit 1) as thumb
        from board b where multi='".$multi."' ";
        $sql .= " and status=1";
        if(!empty($search_keyword)){
            $search_where = " and (subject like '%".$search_keyword."%' or content like '%".$search_keyword."%')";
        }
        $sql .= $search_where;
        $order = " order by ifnull(parent_id, bid) desc, bid asc";
        if($pageNumber < 1) $pageNumber = 1;
        $startLimit = ($pageNumber-1)*$pageCount;//쿼리의 limit 시작 부분
        $limit = " limit $startLimit, $pageCount";

        $query = $sql.$order.$limit;
        $result = $mysqli->query($query) or die("query error => ".$mysqli->error);
        while($rs = $result->fetch_object()){
            $rsc[]=$rs;
        }
       
        return $rsc;
    }

    public static function totalCount($multi="free", $search_keyword = null){//전체게시물 수 구하기
        global $mysqli;
        $sqlcnt = "select count(*) as cnt from board where multi='".$multi."' ";
        $sqlcnt .= " and status=1";
        if(!empty($search_keyword)){
            $search_where = " and (subject like '%".$search_keyword."%' or content like '%".$search_keyword."%')";
        }
        $sqlcnt .= $search_where;
        $countresult = $mysqli->query($sqlcnt) or die("query error => ".$mysqli->error);
        $rscnt = $countresult->fetch_object();
        $totalCount = $rscnt->cnt;
        return $totalCount;
    }

    public static function paging($multi="free", $search_keyword = null, $pageNumber = 1, $pageCount = 10, $firstPageNumber = 1){
        $totalCount=self::totalCount($multi, $search_keyword);//전체 게시물 수를 구하는 클래스
        $totalPage = ceil($totalCount/$pageCount);//전체 페이지를 구한다.
        $lastPageNumber = $firstPageNumber + $pageCount - 1;//페이징 나오는 부분에서 레인지를 정한다.
        if($lastPageNumber > $totalPage) $lastPageNumber = $totalPage;        

        $paging="
            <nav aria-label=\"Page navigation example\">
                <ul class=\"pagination justify-content-center\">
                    <li class=\"page-item\">
        ";
        $pageNumber1=$firstPageNumber-$pageCount;
        $paging.="
            <a class=\"page-link\" href=\"".$_SERVER['PHP_SELF']."?pageNumber=".$pageNumber1."&firstPageNumber=".$pageNumber1."&search_keyword=".$search_keyword."&multi=".$multi."\">Previous</a>";
        $paging.="</li>";
        for($i=$firstPageNumber;$i<=$lastPageNumber;$i++){
            $paging.='
                <li class="page-item ';
            if($pageNumber==$i){
                $paging.='active';
            }
            $paging.='
                "><a class="page-link" href="'.$_SERVER['PHP_SELF'].'?pageNumber='.$i.'&firstPageNumber='. $firstPageNumber.'&search_keyword='.$search_keyword.'&multi='.$multi.'">'.$i.'</a></li>
            ';
        }
        $pageNumber2=$firstPageNumber+$pageCount;
        $paging.='
            <li class="page-item">
                    <a class="page-link" href="'.$_SERVER['PHP_SELF'].'?pageNumber='.$pageNumber2.'&firstPageNumber='.$pageNumber2.'&search_keyword='.$search_keyword.'&multi='.$multi.'">Next</a>
                </li>
            </ul>
            </nav>
        ';

        //error_log ('['.__FILE__.']['.__FUNCTION__.']['.__LINE__.']['.date("YmdHis").']'.print_r($paging,true)."\n", 3, './php_log_'.date("Ymd").'.log');//로그를 남긴다.

        return $paging;

    }

    public static function boardWrite($multi="free", $bid = null, $parent_id = null, $subject, $content){//게시물 등록
        global $mysqli;
        $userid=$_SESSION['UID'];
        if($bid){//bid값이 있으면 수정이고 아니면 등록이다.
            $result = $mysqli->query("select * from board where bid=".$bid) or die("query error => ".$mysqli->error);
            $rs = $result->fetch_object();
            if($rs->userid!=$_SESSION['UID']){
                return -1;
                exit;
            }
            $sql="update board set subject='".$subject."', content='".$content."', modifydate=now() where bid=".$bid;
        }else{
            if($parent_id){//답글인 경우 쿼리를 수정해서 parent_id를 넣어준다.
                $sql="insert into board (userid,subject,content,parent_id,multi) values ('".$userid."','".$subject."','".$content."',".$parent_id.",'".$multi."')";
            }else{
                $sql="insert into board (userid,subject,content,multi) values ('".$userid."','".$subject."','".$content."','".$multi."')";
            }
        }
        $result=$mysqli->query($sql) or die($mysqli->error);
        if(!$bid)$bid = $mysqli -> insert_id;
        return $bid;
    }

   
}

?>

write_ok.php에 있던 소스를 lib.php로 이동해 조금 수정했다.

 

 

 

 

 

반응형

+ Recent posts