채택완료

write_update.tail.skin.php 에 순번 다는 쿼리좀 봐주세요

2022-08-13 (토) 16:09:44 2,910
Copy
sql_query( " UPDATE {$write_table} SET wr_10 = concat( ( SELECT count(*) FROM {$write_table} WHERE wr_datetime >= curdate() ), '등' )  WHERE wr_id = '{$wr_id}' " );

위 코드를  write_update.tail.skin.php 에 넣었습니다.

문제는 회원들 여러명이 등시에 글을 쓸경우

중복 카운드가 발생하거나 기록이 안되는 현상이 발생합니다.

write_update.tail.skin.php 에서 $list[$i]['num'] 를 가져오는게 안되서 위 코드를 쓴건데 역시 문제가 있네요.

좀더 나은 방법이 있을까요?

하고싶은건 write_update.tail.skin.php 에서 $list[$i]['num']를 가져오는 방법을 알고싶습니다. (방금 작성한 글이 오늘 몇번째로 작성된건지에 따라 처리할 일을 하고 목록으로 넘어야 하기에..)

|

답변 4개 / 댓글 4개

채택된 답변
+20 포인트
Copy
write_update.head.skin.php에서 다음과 같이 해보세요

if(!$w){ //---수정시는 제외하고 등록시에만 처리

 

 $today = G5_TIME_YMD; $add_qry ='';

if($board['bo_1_subj'] < $today){ $wr_10 = 1; $add_qry="bo_1_subj = '$today',"; }

else $wr_10 = $board['bo_1'] + 1;

 

 sql_query("update {$g5['board_table']} set $add_qry bo_1='$wr_10' where bo_table='$bo_table' ");

 

}

$wr_10 .='등'; //wr_10에 굳이 몇등 할때의 <등>을 넣고자한다면

-------------------------

그리고 수정시에 등위가 삭제되면 안되니 write.skin.php에서 form안에 추가

<input type='hidden' name='wr_10' value="<?php echo $write['wr_10']?>">

답변에 대한 댓글 1개

2022-08-14 (일) 08:51:31
한번 해보겠습니다. 감사합니다.
2022-08-13 (토) 16:54:13

wr_num 이 아닌 wr_id 로 하셔야 유니크로 기록 됩니다.

update 전에 해당 게시판의 wr_datetime 으로 오늘 게시글수 +1 하시면되시구요

그리고 update 하실때 update.head 가 아닌 update.tail 로 하세요. 그래야 글 작성이 끝난 시점에서

정확한 카운트가 가능하거든요.

답변에 대한 댓글 1개

2022-08-13 (토) 17:04:43
애드프로님께서 말씀하신걸 구현한다고 한게 위 질문의 코드인데... 아닌가요.. ㅜㅜ; 어디서부터 잘못된걸까요 ^^;

[code]
sql_query( " UPDATE {$write_table} SET wr_10 = concat( ( SELECT count(*) FROM {$write_table} WHERE wr_datetime >= curdate() ), '등' ) WHERE wr_id = '{$wr_id}' " );
[/code]
2022-08-13 (토) 16:39:15

https://myinfrabox.tistory.com/75

lock 사용법을 검토해 보세요.

답변에 대한 댓글 1개

2022-08-13 (토) 17:07:39
공부해보겠습니다. 감사합니다.

write_update.tail.skin.php 이 페이지에서

$wr_num 변수 가져와질겁니다.

답변에 대한 댓글 1개

2022-08-13 (토) 16:34:46
$wr_num 가지고 지금 작성한 글이 오늘 몇번째 글인지 알수가 있을까요?

답변을 작성하려면 로그인이 필요합니다.