$sql="select * from news where hotnews='1' order by news_order asc";
$order = $_POST['order'];
$list = sql_query($sql);
$i=0;
while($row=sql_fetch_array($list)){
$n_num=$row['n_num'];
if($row['news_order'] != $order[$i]){
echo $order[$i].$row['news_order']."ssss</br>";
$sql= "update news set news_order ='$order[$i]' where n_num='$n_num'";
sql_query($sql);
}else{
echo $order[$i].$row['news_order']."xxxx</br>";
}
$i++;
}

값을 넣을때마다 news_order값이 1씩 증가해서 news_order에 각각 순서대로 1,2,3,4 이런식으로 들어갔는데 1,5,6으로 이미지 옆에 표시된게 news_order라는 컬럼값인데 중간에 값없는건 컬럼삭제해서 이런거고
순서변경을 통해 위치가 이동이되고 순서변경을 눌렀을때 위에 sql문이 작동하는데 한계단씩 이동은 정상적으로 news_order값이 변경되서 위치가 바뀌는데 두단계씩 예를들어 맨밑에꺼를 맨위로 올리면 가운대로 이동합니다.. 어떻게 해야될까요?
답변 4개 / 댓글 2개
정렬이 잘안되시면 news_order 이 varchar 로되어있으면 order by news_order*1 asc 로하시면 정렬될것입니다.
답변을 작성하려면 로그인이 필요합니다.
순서대로 1,2,3,4가 order이라는 각 컬럼에 값이있으면 업데이트문을 작성할때 한개씩 이동하고 순서저장을 눌렀을땐 제대로 들어가지만 위에 이미지처럼 3번째를 첫번째로 올려버리면 순서가 이상하게 꼬여서 값이 업데이트가되네요.. 이 방법을 해결하고싶은데 도저히 머리로는 정리가안되네요
while부분에 있는 sql문에 값을 제대로 넣어야되는데 이 방식이아닌거 같아서 힘드네요..
간단히 설명하면 페이지에서 순서를 변경한상태로 순서저장버튼을 누르면 위에 sql문이 실행되는데
tr위치가 두단계이상 위치를 변경하면 같이 다 밀려서 예상과 다른값으로 저장이되네요.