개발 Q&A

제목 계층형게시판 질문
카테고리 DB
글쓴이 yumin 작성시각 2019/01/03 11:39:04
댓글 : 9 추천 : 0 스크랩 : 0 조회수 : 10746   RSS

계층형에서 group ord depth 가 있는데

                     group ord depth

1번 글             1      1    0 

답글 1-1           1      2    1

답글 1-2           1      3    1

 

여기서 ord값을  예시 처럼 순차적으로 증가 시켜주고 싶은데 업데이트문을 작성을 할떄 조건을 어떻게 주면 좋을 까요?

 

제가 해본 방법으론 저렇게가 안나오더라구요 마지막 ord 값만 가져올수 있으면 되는데요

 

 

 다음글 PHPExcel에대해 질문구해봅니다! (3)
 이전글 domain.com/abc와 같은 상대 경로로 다른 I... (6)

댓글

한대승(불의회상) / 2019/01/03 11:44:52 / 추천 0
select max(ord) + 1 from {table} where group = 1

이렇게 하면 되지 않을까요?

yumin / 2019/01/03 12:01:13 / 추천 0
$sql = "SELECT max(ord) FROM ci_board WHERE group_num='" . $arrays['parent'] . "'";
$query=$this->db->query($sql);

$result = $query->row();

$sql0 = "UPDATE ci_board SET ".$result."+1 WHERE group_num='" . $arrays['parent'] . "'";
$this->db->query($sql0);

이렇게 해봤는데 ci 에서 모델 쪽에서 이렇게 하면 안되는데 어디 가 잘못될는지 

$result 값이 안들어 가네요.
한대승(불의회상) / 2019/01/03 12:04:27 / 추천 0
var_dump($result)

해보세요.

yumin / 2019/01/03 12:09:39 / 추천 0
C:\xampp\htdocs\bbs\application\models\board_m.php:114:
object(stdClass)[20]
  public 'max(ord)' => string '1' (length=1)

1이 맞는데 업데이트 문에서는 값이 안들어가서 데이터베이스 오류가 뜨는 것 같습니다

yumin / 2019/01/03 12:15:44 / 추천 0
1이 맞는데 업데이트 문에서는 값이 안들어가서 데이터베이스 오류가 뜨는 것 같습니다
변종원(웅파) / 2019/01/03 12:17:05 / 추천 0

max(ord) as maxOrd

$result->maxOrd 로 써야합니다.

set 구문도 틀렸구요. set ord=ord+$resut 가 되어야 합니다.

yumin / 2019/01/03 12:24:51 / 추천 0

이렇게 해도 안되는데 지금 프레임워크로 진행하고 있습니다

$sql = "SELECT max(ord) as maxOrd FROM ci_board WHERE group_num='" . $arrays['parent'] . "'";

$result=$this->db->query($sql);

$result->maxOrd;

$sql0 = "UPDATE ci_board SET ord=ord+".$result." WHERE group_num='" . $arrays['parent'] . "'";
$this->db->query($sql0);
한대승(불의회상) / 2019/01/03 13:55:35 / 추천 0
@yumin 화이팅~
홍구2 / 2019/01/08 13:54:00 / 추천 0

해당사항이 없을 때 시작값을 1로 두고, DB에 기존이 있다면 거기에 1을 더해줘서 만들면 될 것 같은데요. sql을 임의 작성하기보다 되도록 쿼리빌더에서 제공하는 메서드 쓰는 것을 추천합니다.

$maxOrd = 1;
$row = $this->db->select_max('ord', 'maxOrd')->where('group_num', 1)->get('ci_board')->row();
if ($row->maxOrd !== null) {
	$maxOrd = $row->maxOrd + 1;
}