글 등록할 때 자동으로 숫자가 올라가게 할 수 있을까요?? 정보
글 등록할 때 자동으로 숫자가 올라가게 할 수 있을까요??본문
글 등록할 때 자동으로 숫자가 올라가게 할 수 있을까요??
예를들어..
글을 쓸 때 자동으로 여분필드 wr_5번 값에..
1
2
3
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);
이러면 되지 않을까요????
$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에서 멈춰있어요.
write_update.skin.php 파일에 위 소스를 추가했는데.. 안되네요.ㅠㅠ
자동증가가 안되고 계속 1에서 멈춰있어요.
$sql = " update $write_table set wr_5 = wr_5 + 1 where wr_id = '$wr_id' ";
이렇게 하시면 되겠습니다.
이렇게 하시면 되겠습니다.
그렇게 해도 결과는 똑같네요.ㅠㅠ
계속 1로만 등록이 되네요..
계속 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을 해주거든요
이걸 하시려는 의도를 명확히 적어주시면 다른 개발자 분들이 더 좋은 솔루션을 재공해줄수도 있어요! 의도가 제대로 파악이 안되서 다른 분들이 다 다른 해법을 내놓으시는거 같아요
글쓸때마다 올라가는걸 원하시는건가요;;?
만약 글쓸 때 마다 올라가는거라면 글을 쓸때마다 하나의 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만 계속 출력이 되네요.ㅠㅠ
글을 쓸 때 기본적으로 글 번호가 추가가 되잖아요..
글을 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이라고 출력되겠죠.
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);
}
고수분들은 문법을 간략하게 만들어 주실지도..모르겠네요..
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로만 나올까요?ㅠㅠ
<?
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줄만..
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 소스는 하루군님이 알려주신 소스로 수정했어요
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 소스는 하루군님이 알려주신 소스로 수정했어요
3. view.skin에서
<?= sprintf("%04d", $view[wr_5]) ?>
<?= sprintf("%04d", $view[wr_5]) ?>
뭐가 문제인지 모르겠네요..ㅠㅠ
숫자가 계속 0001번에서 멈춰버리네요.ㅠㅠ
write.php 파일에서는 단순히
<?=$wr_5?>
이것만 추가한게 맞을까요??
다른 소스를 더 넣어주지 않아도 상관 없는건가요?
숫자가 계속 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 출력은 아시겠죠.^^
댓글보다가 글하나 남깁니다.
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]);
글보기도 다시 정리해드리면 sprintf를 사용해도 되고 printf를 사용해도 됩니다.
전 프린트f로 ^^ 설명하겠슴... 머 똑같은 것이지만.. 두개 중에 하나 되시길.
view.php
printf("%04d", $view[wr_5]);
와~` 적용이 되네요.. 감사합니다.
그런데 혹시..
글 등록번호와 다르게도 가능할까요??
예를들어
기존에 글이 120개가 등록이 되어있다면..
등록코드가 0121부터 추가가 되잖아요..
혹시 기존 글 번호 무시하고..
글이 120개 있더라도..
001부터 출력되게도 가능할까요?
그런데 혹시..
글 등록번호와 다르게도 가능할까요??
예를들어
기존에 글이 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);
아 참고로 제가 테스트는 안해봤습니다. ^^ 혹시 에러생기면 말씀해주세염.^^
일단 기존 게시물을 무시하고, 새롭게 값이 적용하고자 한다면,
다음과 같은 방법이 있습니다.
$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);
아 참고로 제가 테스트는 안해봤습니다. ^^ 혹시 에러생기면 말씀해주세염.^^
1065 : Query was empty
error file : /bbs/write_update.php
이런 오류가 나오네요..
error file : /bbs/write_update.php
이런 오류가 나오네요..
일단 님,.. 제가 테스트 할수 없어서 그런데. 혹시 다른 고수분들이 답변을 달아줄 수 있을 것입니다. 제가 답을 드릴 수 있는 시간은 오후 10시정도 될듯하네염. 밤샘일 해서 지금 자야하거든염. 급하지 않으시면 이따 저녁에 마저 해결해드리겟습니다.
그럼 슝
그럼 슝