반응형
이번엔 삭제를 해보자. 이전에 게시물 삭제는 해봤으니 삭제 컨트롤러에 파일이 있으면 삭제하는 부분을 추가해주면된다. 해보자
/app/Controllers/Board.php
<?php
namespace App\Controllers;
use App\Models\BoardModel;//사용할 모델을 반드시 써줘야한다.
class Board extends BaseController
{
public function list()
{
$db = db_connect();
$query = "select * from board order by bid desc";
$rs = $db->query($query);
$data['list'] = $rs->getResult();//결과값 저장
return render('board_list', $data);//view에 리턴
}
public function write()
{
if(!isset($_SESSION['userid'])){
echo "<script>alert('로그인하십시오.');location.href='/login'</script>";
exit;
}
return render('board_write');
}
public function save()
{
if(!isset($_SESSION['userid'])){
echo "<script>alert('로그인하십시오.');location.href='/login'</script>";
exit;
}
$db = db_connect();
$bid=$this->request->getVar('bid');//bid값이 있으면 수정이고 아니면 등록이다.
$subject=$this->request->getVar('subject');
$content=$this->request->getVar('content');
if($bid){
$query = "select * from board where bid=".$bid;
$rs = $db->query($query);
if($_SESSION['userid']==$rs->getRow()->userid){
$sql="update board set subject='".$subject."', content='".$content."' where bid=".$bid;
$rs = $db->query($sql);
return $this->response->redirect(site_url('/boardView/'.$bid));
}else{
echo "<script>alert('본인이 작성한 글만 수정할 수 있습니다.');location.href='/login';</script>";
exit;
}
}
$file = $this->request->getFile('upfile');//첨부한 파일의 정보를 가져온다.
if($file->getName()){//파일 정보가 있으면 저장한다.
$filename = $file->getName();//기존 파일명을 저장할때 필요하다. 여기서는 사용하지 않는다.
//$filepath = WRITEPATH. 'uploads/' . $file->store(); 매뉴얼에 나와있는 파일 저장 방법이다.여기서는 안쓴다.
$newName = $file->getRandomName();//서버에 저장할때 파일명을 바꿔준다.
$filepath = $file->store('board/', $newName);//CI4의 store 함수를 이용해 저장한다.
}
$sql="insert into board (userid,subject,content) values ('".$_SESSION['userid']."','".$subject."','".$content."')";
$rs = $db->query($sql);
$insertid=$db->insertID();
if($file->getName()){
$sql2="INSERT INTO file_table
(bid, userid, filename, type)
VALUES('".$insertid."', '".$_SESSION['userid']."', '".$filepath."', 'board')";
$rs2 = $db->query($sql2);
}
return $this->response->redirect(site_url('/board'));
}
public function view($bid = null)
{
$db = db_connect();
$query = "select b.*,f.filename from board b
left join file_table f on b.bid=f.bid where f.type='board' and b.bid=".$bid;
$rs = $db->query($query);
$data['view'] = $rs->getRow();
//error_log ('['.__FILE__.']['.__FUNCTION__.']['.__LINE__.']['.date("YmdHis").']'.print_r($data,true)."\n", 3, './php_log_'.date("Ymd").'.log');//로그를 남긴다.
return render('board_view', $data);
}
public function modify($bid = null)
{
$db = db_connect();
$query = "select * from board where bid=".$bid;
$rs = $db->query($query);
if($_SESSION['userid']==$rs->getRow()->userid){
$data['view'] = $rs->getRow();
return render('board_write', $data);
}else{
echo "<script>alert('본인이 작성한 글만 수정할 수 있습니다.');location.href='/login';</script>";
exit;
}
}
public function delete($bid = null)
{
$db = db_connect();
$query = "select * from board where bid=".$bid;
$rs = $db->query($query);
if($_SESSION['userid']==$rs->getRow()->userid){
$query3 = "select * from file_table where type='board' and bid=".$bid;//파일 테이블에서 파일 경로를 가져온다.
$rs3 = $db->query($query3);
if(unlink('uploads/'.$rs3->getRow()->filename)){//삭제한다.
$query4 = "delete from file_table where type='board' and bid=".$bid;
$rs4 = $db->query($query4);
$query2 = "delete from board where bid=".$bid;
$rs2 = $db->query($query2);
}
return $this->response->redirect(site_url('/board'));
}else{
echo "<script>alert('본인이 작성한 글만 삭제할 수 있습니다.');location.href='/login';</script>";
exit;
}
}
}
delete 함수에 파일을 삭제하기 위한 unlink 함수를 사용했다. 경로를 잘 지정해야한다.
게시물을 삭제하고 public/uploads/board/ 아래에 파일이 삭제됐는지 확인해보자.
다음 시간엔 하나의 게시물에 파일을 여러개 등록하는 예제를 만들어보자.
반응형
'PHP강좌 > [CI4]게시판만들기강좌' 카테고리의 다른 글
[PHP+CI4+mysql]회원 전용 게시판 만들기 강좌 #21. 페이징, Pagination, Pager(내용수정) (0) | 2022.11.18 |
---|---|
[PHP+CI4+mysql]회원 전용 게시판 만들기 강좌 #20. 다중 파일 첨부하기(내용수정) (0) | 2022.11.15 |
[PHP+CI4+mysql]회원 전용 게시판 만들기 강좌 #18. 첨부한 파일 화면에 표시하기(내용수정) (0) | 2022.11.14 |
[PHP+CI4+mysql]회원 전용 게시판 만들기 강좌 #17. 첨부파일 업로드 경로 변경 (0) | 2022.11.14 |
[PHP+CI4+mysql]회원 전용 게시판 만들기 강좌 #16. 파일업로드(내용 수정됨) (0) | 2022.11.14 |