글 등록할 때 자동으로 숫자가 올라가게 할 수 있을까요?? > 그누4 질문답변

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

글 등록할 때 자동으로 숫자가 올라가게 할 수 있을까요?? 정보

글 등록할 때 자동으로 숫자가 올라가게 할 수 있을까요??

본문

글 등록할 때 자동으로 숫자가 올라가게 할 수 있을까요??

예를들어..
글을 쓸 때 자동으로 여분필드 wr_5번 값에..
1
2
3
4
 이런식으로 자동으로 숫자가 늘어나게 하고 싶은데요..

이렇게 할려면 어떤 식으로 해야할까요??
설명을 할려니 쉽지가 않네요.ㅠㅠ

댓글 전체

write_update.skin.php 에서

$wr_5++;
$sql = " update $write_table set wr_5 = '$wr_5' where wr_id = '$wr_id' ";
      sql_query($sql);

이러면 되지 않을까요????
write.php 파일에서 그냥 <?=$wr_5?> 이렇게 추가를 해 놓고..
write_update.skin.php 파일에 위 소스를 추가했는데.. 안되네요.ㅠㅠ

자동증가가 안되고 계속 1에서 멈춰있어요.
맞을꺼야님 이 제시해준건 이미 글이 올라가 있는 상태에서 수정할때 값이 올라가는거 아닌가요..?

글쓸때마다 올라가는걸 원하시는건가요;;?

만약 글쓸 때 마다 올라가는거라면 글을 쓸때마다 하나의 row가 늘어나므로 전의 row값을 가져올 필요가 있겠죠.


INSERT 되기 전에

$sql = "SELECT wr_5 FROM $write_table order by wr_5 DESC LIMIT 1";
$result = sql_fetch($sql);
$wr_5 = $result['wr_5'] + 1;
이렇게 해야겠죠.

만약 글을 수정할때 마다 값을 올리고 싶은거라면
맞을꺼야님 대로 하셔서도 됩니다. varchar형이라고 하더라도 mysql은 똑똑하기 때문에 + 1을 해주거든요


이걸 하시려는 의도를 명확히 적어주시면 다른 개발자 분들이 더 좋은 솔루션을 재공해줄수도 있어요! 의도가 제대로 파악이 안되서 다른 분들이 다 다른 해법을 내놓으시는거 같아요
제가 필요한 기능은..
글을 쓸 때 기본적으로 글 번호가 추가가 되잖아요..
글을 4개를 쓰면 번호가 1,2,3,4 /....이런식으로 계속 늘어나는것처럼..
특정 필드 예를들어 wr_5번 필드에 글 번호와 비슷하게 자동으로 숫자가 늘어나게 하고싶습니다.

게시판에서 순서라는 항목을 하나 추가를 해서
글을 하나 쓸 때마다 1번째 쓴 사람, 2번째 쓴 사람 .. 이것을 게시글 번화와 별도로.. 구분을 하고 싶어서요..
처음에 글을 쓰면 글 상세보기에서 번호가 0001번으로 출력이 되고..
두번째 글을 쓰면 0002번으로 출력되고..
만약 123번째 글을 쓰면 0123 이런식으로 계속 숫자가 증가가 되게 할려고 합니다.


하루군님께서 알려주신 소스로도 수정을 해 봤는ㄷ..ㅠㅠ 출력이 안되버리네요.ㅠㅠ

제가 했던 방법이..
1. write파일에서 <?=$wr_5?>를 추가하고..
2. write_update.skin.php파일에서 위 소스를 그대로 넣었고,
3. view.php 파일에서 <?=$view[wr_]?> 이렇게 썼는데..
 글 쓸때마다 숫자가 증가가 되는게 아니라.. 그대로 1만 계속 출력이 되네요.ㅠㅠ
$sql = " insert into $write_table
                set wr_num = '$wr_num',
                    wr_reply = '$wr_reply',
                    wr_comment = 0,
                    ca_name = '$ca_name',
                    wr_option = '$html,$secret,$mail',
                    wr_subject = '$wr_subject',
                    wr_content = '$wr_content',
                    wr_link1 = '$wr_link1',
                    wr_link2 = '$wr_link2',
                    wr_link1_hit = 0,
                    wr_link2_hit = 0,
                    wr_trackback = '$wr_trackback',
                    wr_hit = 0,
                    wr_good = 0,
                    wr_nogood = 0,
                    mb_id = '$member[mb_id]',
                    wr_password = '$wr_password',
                    wr_name = '$wr_name',
                    wr_email = '$wr_email',
                    wr_homepage = '$wr_homepage',
                    wr_datetime = '$g4[time_ymdhis]',
                    wr_last = '$g4[time_ymdhis]',
                    wr_ip = '$_SERVER[REMOTE_ADDR]',
                    wr_1 = '$wr_1',
                    wr_2 = '$wr_2',
                    wr_3 = '$wr_3',
                    wr_4 = '$wr_4',
                    wr_5 = '$wr_5',
                    wr_6 = '$wr_6',
                    wr_7 = '$wr_7',
                    wr_8 = '$wr_8',
                    wr_9 = '$wr_9',
                    wr_10 = '$wr_10' ";

이 쿼리문 바로 위에 소스를 넣어야 동작할꺼에요.
제가 한 방법은 wr_5의 네임값 없이 database에 의존하면서 글을 쓸때마다 올라가게끔 하는거거든요

여담으로 숫자 123을 0123으로 표현하는 방법은 <?= sprintf("%04d", $wr_5) ?>라고 하시면 됩니다. 이건 123이 들어가면 앞에를 0으로 채워주는 방법입니다. 물론 1이 들어가면 0001이라고 출력되겠죠.
요러면 되지 않을까요?

if ($w == '') {
  $wr5_max = sql_fetch("select MAX(wr_5) as num_in from $write_table"); //wr_5 제일 큰값 구하기
  $wr5 = $wr5_max['num_in'];
  $wr_5 = $wr5 + 1 ;
  $sql = " update $write_table set wr_5 = '$wr_5' where wr_id = '$wr_id' ";
      sql_query($sql);

}

고수분들은 문법을 간략하게 만들어 주실지도..모르겠네요..
거품님 제안대로 max(wr_5)로 하셔도 되겠네요. 같은 버블소트기 때문에 속도는 거의 비슷하지만 문법상 이게 가장 간결해 보입니다. 역시 프로그래밍은 간결과 축약에서 노하우가 보이는 법이죠 +_+
write_update.skin.php파일에 넣는건가요?

<?
if ($w == '') {
  $wr5_max = sql_fetch("select MAX(wr_5) as num_in from $write_table"); //wr_5 제일 큰값 구하기
  $wr5 = $wr5_max['num_in'];
  $wr_5 = $wr5 + 1 ;
  $sql = " update $write_table set wr_5 = '$wr_5' where wr_id = '$wr_id' ";
      sql_query($sql);

}
?>
write_update.skin.php 파일에 위와같이 넣었는데도.. 왜 계속 1로만 나올까요?ㅠㅠ
위 코드가 되어야 정상인데 이상하네요
write_update.head.skin.php에 아래처럼 해보세요(스킨에서 인풋박스 필요없음)

$wr5_max = sql_fetch("select MAX(wr_5) as num_in from $write_table"); //wr_5 제일 큰값 구하기
  $wr_5 = $wr5_max['num_in'];
if(!$w)  $wr_5++;

위 3줄만..
제가 수정한 소스를 모두 올리면..
1. write.php 파일에서

<td>순서</td>
<td><?=$wr_5?></td>만 추가

2. write_update.head.skin.php
<?
$wr5_max = sql_fetch("select MAX(wr_5) as num_in from $write_table"); //wr_5 제일 큰값 구하기
  $wr_5 = $wr5_max['num_in'];
if(!$w)  $wr_5++;
?>
추가

3. view.skin에서
<?= sprintf("%04d", $wr_5) ?> 이렇게 추가를 했습니다.

view 소스는 하루군님이 알려주신 소스로 수정했어요
뭐가 문제인지 모르겠네요..ㅠㅠ
숫자가 계속 0001번에서 멈춰버리네요.ㅠㅠ

write.php 파일에서는 단순히
<?=$wr_5?>
이것만 추가한게 맞을까요??
다른 소스를 더 넣어주지 않아도 상관 없는건가요?
아직 해결 몬하셨나보네욤...
댓글보다가 글하나 남깁니다.

write_update.skin 파일 소스입니다.

<?

$sql = " select count(*) as cnt from $write_table";
$row = sql_fetch($sql);
$a = $row[cnt];

$sql5  = " update $write_table set wr_5 = '$a' where wr_id = '$wr_id' ";
sql_query($sql5);


?>

이것만 하시면 끝.

글보기에 wr_5 출력은 아시겠죠.^^
추가

글보기도 다시 정리해드리면 sprintf를 사용해도 되고 printf를 사용해도 됩니다.
전 프린트f로 ^^ 설명하겠슴... 머 똑같은 것이지만.. 두개 중에 하나 되시길.

view.php

printf("%04d", $view[wr_5]);
와~` 적용이 되네요.. 감사합니다.

그런데 혹시..
글 등록번호와 다르게도 가능할까요??

예를들어
기존에 글이 120개가 등록이 되어있다면..
등록코드가 0121부터 추가가 되잖아요..

혹시 기존 글 번호 무시하고..
글이 120개 있더라도..
001부터 출력되게도 가능할까요?
아... 채택의 의미가 없나보네염. 지송. 전 답변이 처음이라. 한질문에 한 답변 다는것으로 알았네..헤헤.. 제말 이해안가시죠. ㅠㅠ

일단 기존 게시물을 무시하고, 새롭게 값이 적용하고자 한다면,
다음과 같은 방법이 있습니다.

$sql = " select count(wr_10) as cnt from $write_table";
$row = sql_fetch($sql);
$a = $row[cnt];

$sql  = " update $write_table set wr_10 = 'a' where wr_id = '$wr_id' ";
sql_query($sql);

$sql5  = " update $write_table set wr_5 = '$a' where wr_id = '$wr_id' ";
sql_query($sql5);

아 참고로 제가 테스트는 안해봤습니다. ^^ 혹시 에러생기면 말씀해주세염.^^
일단 님,.. 제가 테스트 할수 없어서 그런데. 혹시 다른 고수분들이 답변을 달아줄 수 있을 것입니다. 제가 답을 드릴 수 있는 시간은 오후 10시정도 될듯하네염. 밤샘일 해서 지금 자야하거든염. 급하지 않으시면 이따 저녁에 마저 해결해드리겟습니다.

그럼 슝
전체 66,558 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT