리스트에서 정렬문제 > 그누3질답

그누3질답

리스트에서 정렬문제 정보

그누보드 리스트에서 정렬문제

본문

http://www.sir.co.kr/?doc=bbs/gnuboard.php&bo_table=qa&sselect=wr_name&stext=morning&soperator=0&page=2&wr_id=14898

정렬에 대한 문제인대요, 위에 링크에 링크된 곳과는 다른 곳입니다.
위의 링크에서 완두콩님의 말씀에 의하면 서버에서 mysql이 한글지원되지 않기 때문이라고 합니다.
SHOW VARIABLES 쿼리 날려보면...
character_set  latin1로 나오더군요.
서버관리자에게 요청을 했지만 아직 응답이 없습니다.

위의 링크부분을 간단히 요약하면

bbs/gblist.php 69번째줄쯤에...
$sql_order = " order by $ssort $sorder ";   

이런식으로 되있는부분을.... 아래와 같이 고쳤습니다.
 
if($ssort == "wr_subject")
$ssort_tmp = "BINARY wr_subject";
else
$ssort_tmp = $ssort;
$sql_order = " order by $ssort_tmp $sorder ";

결과가 좋아서 제목정렬은 잘 됩니다.

한가지를 더 추가하고 싶습니다.
게시판에서 옵션1을 사용했습니다. 그부분은 wr_1인 것 같습니다.
이것도 정렬에 넣었는데 이것이 안되는군요.
위의 수정된 내용에 wr_1 하나 더 넣으려면 어떻게 해야 하는가요?
  • 복사

댓글 전체

if (!$ssort) {
    $ssort  = "wr_notice, wr_num, wr_reply";
    $sorder = "";
}
  if($ssort == "wr_1"){
    $ssort_tmp = "BINARY wr_1";
  }else if($ssort == "wr_subject"){
    $ssort_tmp = "BINARY wr_subject";
  }else{
    $ssort_tmp = $ssort;
  }
    $sql_order = " order by $ssort_tmp $sorder ";

위가 정렬부분 전체입니다.
안녕하세요?
몇시간 밖에 못주무신 것 같아요...

 if($ssort == "wr_1"){
    $ssort_tmp = "BINARY wr_1";
  }else if($ssort == "wr_subject"){
    $ssort_tmp = "BINARY wr_subject";
  }else{
    $ssort_tmp = $ssort;
  }
    $sql_order = " order by $ssort_tmp $sorder ";

이렇게하라는 말씀인가요?
작동되는군요....
다시 해야된다면 문법에 맞게 좋은 가르침 부탁드립니다.

저는 완전히 백지상태입니다.
if($ssort){  // 정렬이면 -> 정렬인 경우는 넘어오는 변수가 1가지므로 2번째 방법은 안하는게 좋을듯..
  if($ssort == "wr_1"){
    $ssort_tmp = " wr_1";
  }else if($ssort == "wr_subject"){
    $ssort_tmp = " wr_subject";
  }else{
    $ssort_tmp = $ssort;
  }
}
죄송하지만 직접 만들어서 보여주실 수는 없는가요?
저는 문외한입니다.
고수님들이 이리 요걸 요렇게 해라 조걸 조렇게 해라하면 고대로 옮겨적을 뿐입니다.

죄송하지만 위에서 1,2번을 적용해서 보여주세요....
2가지 방법이 있겠네요..
1. 조건문으로 $ssort 가 wr_subject 인지 wr_1 인지를 비교해서 $ssort_tmp 쿼리를 조정하는것과
2. 붙이기 접두어인 . 을 이용해서 조건문 2개를 만드는 방법이 있겠네요..
* 그리고 위에 문법이 조금 안맞는것 같은데요..
if($ssort){  // 정렬이면
  if($ssort == "비교문"){
이렇게 조건문을 붙여야 정확할것 같습니다...
sjsjin 님!!
님이 가르쳐주신 틀에 맞추어서 아래처럼 했습니다. 잘 작동은 합니다.
감사드리구요...제대로 했는지 한번만 더 확인해주시길 부탁드립니다.

아래에서 더 추가하려면 --els if--부분만 여러번 반복해도 될 것 같더군요.

 if($ssort == "wr_1"){
    $ssort_tmp = "BINARY wr_1";
    $sql_order = " order by $ssort_tmp $sorder ";
  }else if($ssort == "wr_subject"){
    $ssort_tmp = "BINARY wr_subject";
    $sql_order = " order by $ssort_tmp $sorder ";
  }else{
    $ssort_tmp = $ssort;
    $sql_order = " order by $ssort $sorder ";   
  }

위에서 마지막의 $sql_order = " order by $ssort $sorder ";  부분은 $sql_order = " order by $ssort_tmp $sorder "; 로 해도 되더군요. 이것도 어느것이 맞는지 확인부탁드립니다.

다시 한번 감사드립니다.
마지막은 편하신대로 하면 됩니다..
그런데 문법은 처음 사용하던 문법이네요..버그가 있기 때문에 제가 일부러 위에걸로 예를 든건데요..
if($ssort){  <- 이게 먼저 들어가고 다시,
  if($ssort == "wr_1){ 어쩌고....
위처럼 $ssort 인지를 처음한번 확인하고 다시 아래에서 확인하는건 간혹가다 튕기는 경우가 있기 때문입니다..
그래서 $ssort 면 무조건 스톱시키고 안에서 다시 조건문으로 비교하게 하는 거지요..
그리고 조건문을 많이 달면 않좋습니다. for,while,if,swich 문등이 비슷비슷하면서도 괜히 있는게 아니거든요..ㅡㅡ;
정규식도 마찬가지고....자신이 써보고 가장 좋다고 생각되는걸 쓰면 됩니다..손에 익히는게 중요하니까요..
© SIRSOFT
현재 페이지 제일 처음으로