최광선님의 sms 스킨에 대해서 질문 드립니다. 정보
최광선님의 sms 스킨에 대해서 질문 드립니다.본문
스킨을 적용했는데
회원 이름의 사이드뷰에 링크를 넣지 않고
따로 빼서 메뉴에 넣었습니다.
사이드뷰에 나올때는 포인트가 차감이 되는데
메뉴에 올리면 포인트가 차감이 않되는군요...
어디를 고쳐야 되는지... 감감...해서... ㅜ.ㅜ
댓글 전체

아마도 포인트 테이블의 인덱스가
KEY index1 (mb_id,po_rel_table,po_rel_id,po_rel_action)
로 되어 있어 이에 입력시 duplicate 에러를 수반하는게 아닌가 싶습니다.
result.php 의 해당부분..
@mysql_query("update $g4[member_table] set mb_point=mb_point-$sms_point where mb_id = '$member[mb_id]'") or error("포인트 저장시 에러가 발생했습니다<br>".mysql_error());
@mysql_query("insert into $g4[point_table] (mb_id, po_datetime, po_content, po_point) values ('$member[mb_id]','$g4[time_ymdhis]','SMS보내기','-$sms_point')") or error("포인트 저장시 에러가 발생했습니다<br>".mysql_error());
lib/common.lib.php의 해당부분
// 포인트 부여
function insert_point($mb_id, $point, $content='', $rel_table='', $rel_id='', $rel_action='')
{
global $config;
global $g4;
global $is_admin;
// 포인트 사용을 하지 않는다면 return
if (!$config[cf_use_point]) { return 0; }
// 포인트가 없다면 업데이트 할 필요 없음
if ($point == 0) { return 0; }
// 회원아이디가 없다면 업데이트 할 필요 없음
if ($mb_id == "") { return 0; }
$mb = sql_fetch(" select mb_id from $g4[member_table] where mb_id = '$mb_id' ");
if (!$mb[mb_id]) { return 0; }
// 이미 등록된 내역이라면 건너뜀
if ($rel_table || $rel_id || $rel_action)
{
$sql = " select count(*) as cnt from $g4[point_table]
where mb_id = '$mb_id'
and po_rel_table = '$rel_table'
and po_rel_id = '$rel_id'
and po_rel_action = '$rel_action' ";
$row = sql_fetch($sql);
if ($row[cnt])
return -1;
}
// 포인트 건별 생성
$sql = " insert into $g4[point_table]
set mb_id = '$mb_id',
po_datetime = '$g4[time_ymdhis]',
po_content = '".addslashes($content)."',
po_point = '$point',
po_rel_table = '$rel_table',
po_rel_id = '$rel_id',
po_rel_action = '$rel_action' ";
sql_query($sql);
// 포인트 내역의 합을 구하고
$sql = " select sum(po_point) as sum_po_point from $g4[point_table] where mb_id = '$mb_id' ";
$row = sql_fetch($sql);
$sum_point = $row[sum_po_point];
// 포인트 UPDATE
$sql = " update $g4[member_table] set mb_point = '$sum_point' where mb_id = '$mb_id' ";
sql_query($sql);
return 1;
}
테이블 부분..
##
## Table structure for table `$g4[point_table]`
##
DROP TABLE IF EXISTS $g4[point_table];
CREATE TABLE $g4[point_table] (
po_id int(11) NOT NULL auto_increment,
mb_id varchar(20) NOT NULL default '',
po_datetime datetime NOT NULL default '0000-00-00 00:00:00',
po_content varchar(255) NOT NULL default '',
po_point int(11) NOT NULL default '0',
po_rel_table varchar(20) NOT NULL default '',
po_rel_id varchar(20) NOT NULL default '',
po_rel_action varchar(255) NOT NULL default '',
PRIMARY KEY (po_id),
KEY index1 (mb_id,po_rel_table,po_rel_id,po_rel_action)
) TYPE=MyISAM;
어떤 형식으로 적용하셨는지가 궁금합니다.
직접 테스트할 여건이 못되기에
result.php의 포인트 처리부분만 생각에 의해 처리를 해 보았습니다.
// 적용할 포인트를 정하세요 (현재 -10점)
$sms_point = "10";
$sms_point2 = (-1) * $sms_point;
$wr_id = date("Ymdhis", time(););
if ($result == 'OK') {
//@mysql_query("update $g4[member_table] set mb_point=mb_point-$sms_point where mb_id = '$member[mb_id]'") or error("포인트 저장시 에러가 발생했습니다<br>".mysql_error());
//@mysql_query("insert into $g4[point_table] (mb_id, po_datetime, po_content, po_point) values ('$member[mb_id]','$g4[time_ymdhis]','SMS보내기','-$sms_point')") or error("포인트 저장시 에러가 발생했습니다<br>".mysql_error());
insert_point($member[mb_id], $sms_point2, "$g4[time_ymdhis] SMS보내기", 'SMS', $wr_id, "$g4[time_ymdhis] SMS보내기");
KEY index1 (mb_id,po_rel_table,po_rel_id,po_rel_action)
로 되어 있어 이에 입력시 duplicate 에러를 수반하는게 아닌가 싶습니다.
result.php 의 해당부분..
@mysql_query("update $g4[member_table] set mb_point=mb_point-$sms_point where mb_id = '$member[mb_id]'") or error("포인트 저장시 에러가 발생했습니다<br>".mysql_error());
@mysql_query("insert into $g4[point_table] (mb_id, po_datetime, po_content, po_point) values ('$member[mb_id]','$g4[time_ymdhis]','SMS보내기','-$sms_point')") or error("포인트 저장시 에러가 발생했습니다<br>".mysql_error());
lib/common.lib.php의 해당부분
// 포인트 부여
function insert_point($mb_id, $point, $content='', $rel_table='', $rel_id='', $rel_action='')
{
global $config;
global $g4;
global $is_admin;
// 포인트 사용을 하지 않는다면 return
if (!$config[cf_use_point]) { return 0; }
// 포인트가 없다면 업데이트 할 필요 없음
if ($point == 0) { return 0; }
// 회원아이디가 없다면 업데이트 할 필요 없음
if ($mb_id == "") { return 0; }
$mb = sql_fetch(" select mb_id from $g4[member_table] where mb_id = '$mb_id' ");
if (!$mb[mb_id]) { return 0; }
// 이미 등록된 내역이라면 건너뜀
if ($rel_table || $rel_id || $rel_action)
{
$sql = " select count(*) as cnt from $g4[point_table]
where mb_id = '$mb_id'
and po_rel_table = '$rel_table'
and po_rel_id = '$rel_id'
and po_rel_action = '$rel_action' ";
$row = sql_fetch($sql);
if ($row[cnt])
return -1;
}
// 포인트 건별 생성
$sql = " insert into $g4[point_table]
set mb_id = '$mb_id',
po_datetime = '$g4[time_ymdhis]',
po_content = '".addslashes($content)."',
po_point = '$point',
po_rel_table = '$rel_table',
po_rel_id = '$rel_id',
po_rel_action = '$rel_action' ";
sql_query($sql);
// 포인트 내역의 합을 구하고
$sql = " select sum(po_point) as sum_po_point from $g4[point_table] where mb_id = '$mb_id' ";
$row = sql_fetch($sql);
$sum_point = $row[sum_po_point];
// 포인트 UPDATE
$sql = " update $g4[member_table] set mb_point = '$sum_point' where mb_id = '$mb_id' ";
sql_query($sql);
return 1;
}
테이블 부분..
##
## Table structure for table `$g4[point_table]`
##
DROP TABLE IF EXISTS $g4[point_table];
CREATE TABLE $g4[point_table] (
po_id int(11) NOT NULL auto_increment,
mb_id varchar(20) NOT NULL default '',
po_datetime datetime NOT NULL default '0000-00-00 00:00:00',
po_content varchar(255) NOT NULL default '',
po_point int(11) NOT NULL default '0',
po_rel_table varchar(20) NOT NULL default '',
po_rel_id varchar(20) NOT NULL default '',
po_rel_action varchar(255) NOT NULL default '',
PRIMARY KEY (po_id),
KEY index1 (mb_id,po_rel_table,po_rel_id,po_rel_action)
) TYPE=MyISAM;
어떤 형식으로 적용하셨는지가 궁금합니다.
직접 테스트할 여건이 못되기에
result.php의 포인트 처리부분만 생각에 의해 처리를 해 보았습니다.
// 적용할 포인트를 정하세요 (현재 -10점)
$sms_point = "10";
$sms_point2 = (-1) * $sms_point;
$wr_id = date("Ymdhis", time(););
if ($result == 'OK') {
//@mysql_query("update $g4[member_table] set mb_point=mb_point-$sms_point where mb_id = '$member[mb_id]'") or error("포인트 저장시 에러가 발생했습니다<br>".mysql_error());
//@mysql_query("insert into $g4[point_table] (mb_id, po_datetime, po_content, po_point) values ('$member[mb_id]','$g4[time_ymdhis]','SMS보내기','-$sms_point')") or error("포인트 저장시 에러가 발생했습니다<br>".mysql_error());
insert_point($member[mb_id], $sms_point2, "$g4[time_ymdhis] SMS보내기", 'SMS', $wr_id, "$g4[time_ymdhis] SMS보내기");
끙... 아무리 헤매도 어렵군요.. ㅡ.ㅡ
그냥 메뉴에 sms.php 를 링크시켰거든요...
이래저래 해봐도 아직 해결이 않되네요...
그냥 메뉴에 sms.php 를 링크시켰거든요...
이래저래 해봐도 아직 해결이 않되네요...

링크를 어떻게 거셨는지가 궁금합니다......
<a href="<?=$g4[path]?>/sms/sms.php>sms보내기</a>
그냥 이렇게요... ㅡ.ㅡ
그냥 이렇게요... ㅡ.ㅡ

일단 보내기가 성공하였다면 포인트 처리 부분인데 위에서도 말씀 드렸다시피
KEY index1 (mb_id,po_rel_table,po_rel_id,po_rel_action) 의 KEY index 에서 중복 오류로 포인트 부분이
처리되지 않는듯 보입니다. 혹시나 에러부분을 아시려면 result.php의 아래 부분을 찾아 @를 지우신후 한번
해 보시기 바랍니다.
@mysql_query("update $g4[member_table] set mb_point=mb_point-$sms_point where mb_id = '$member[mb_id]'") or error("포인트 저장시 에러가 발생했습니다<br>".mysql_error());
@mysql_query("insert into $g4[point_table] (mb_id, po_datetime, po_content, po_point) values ('$member[mb_id]','$g4[time_ymdhis]','SMS보내기','-$sms_point')") or error("포인트 저장시 에러가 발생했습니다<br>".mysql_error());
KEY index1 (mb_id,po_rel_table,po_rel_id,po_rel_action) 의 KEY index 에서 중복 오류로 포인트 부분이
처리되지 않는듯 보입니다. 혹시나 에러부분을 아시려면 result.php의 아래 부분을 찾아 @를 지우신후 한번
해 보시기 바랍니다.
@mysql_query("update $g4[member_table] set mb_point=mb_point-$sms_point where mb_id = '$member[mb_id]'") or error("포인트 저장시 에러가 발생했습니다<br>".mysql_error());
@mysql_query("insert into $g4[point_table] (mb_id, po_datetime, po_content, po_point) values ('$member[mb_id]','$g4[time_ymdhis]','SMS보내기','-$sms_point')") or error("포인트 저장시 에러가 발생했습니다<br>".mysql_error());
@를 지워도 마찬가지네요... 포인트에 대한 에러메시지도 뜨지 않습니다.
링크를
<a href=<?=$g4[path]?>/sms/member_sms.php?recv_mb_id=test>SMS 보내기</a>
이런식으로 하면 test 에게 메시지 보내는 화면이 나오면서 포인트 차감이 제대로 됩니다... ㅜ.ㅜ
링크를 조금 어떻게 바꾸면 될까도 싶은데... 영... 않되는데요...
그나저나 천상재회님 정말 고맙습니다... ^^
링크를
<a href=<?=$g4[path]?>/sms/member_sms.php?recv_mb_id=test>SMS 보내기</a>
이런식으로 하면 test 에게 메시지 보내는 화면이 나오면서 포인트 차감이 제대로 됩니다... ㅜ.ㅜ
링크를 조금 어떻게 바꾸면 될까도 싶은데... 영... 않되는데요...
그나저나 천상재회님 정말 고맙습니다... ^^

글쎄요..아직도 제가 이해를 못한 부분이 위에 기재하신 부분에 회원아이디를 받으면 되는데 누구를 받아야 할지가
궁금합니다.
그냥 현재 그누 좌측메뉴처럼 질문 답변 식이라면 링크에 아이디가 들어가지 않겠지요....
아이디를 뽑으신다면 어떤 형식으로 뽑으실런지요...?
궁금합니다.
그냥 현재 그누 좌측메뉴처럼 질문 답변 식이라면 링크에 아이디가 들어가지 않겠지요....
아이디를 뽑으신다면 어떤 형식으로 뽑으실런지요...?
test 라는 아이디에 핸폰번호를 00으로 해서 위처럼 링크를 거니까
받는번호 : 00@test
이렇게 나오는군요... 그러니 보낼때마다 지우고 번호를 넣어야죠...
그래서 member_sms.php 의 받는번호란의 value 를 그냥 공백으로 했습니다. (무식하면 용감하다고... ㅜ.ㅜ)
좋은 방법이 쥐어짜도 모르겠어요... ㅠ.ㅠ
받는번호 : 00@test
이렇게 나오는군요... 그러니 보낼때마다 지우고 번호를 넣어야죠...
그래서 member_sms.php 의 받는번호란의 value 를 그냥 공백으로 했습니다. (무식하면 용감하다고... ㅜ.ㅜ)
좋은 방법이 쥐어짜도 모르겠어요... ㅠ.ㅠ