여분필드를 53번까지 추가하기위해 진행해보았습니다.
본문
여분필드를 53번까지 추가하기위해 진행해보았습니다.
phpadmin에서 테이블에 wr_1~10까지의 구조와 같게 11부터 53까지 추가하였습니다.
그 후 게시판 스킨 폴더에 write_update.skin.php파일이 있어,
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
$sql = " update $write_table
set wr_11 = '$wr_11',
wr_12 = '$wr_12',
wr_13 = '$wr_13',
wr_14 = '$wr_14',
wr_15 = '$wr_15',
wr_16 = '$wr_16',
wr_17 = '$wr_17',
wr_18 = '$wr_18',
wr_19 = '$wr_19',
wr_20 = '$wr_20',
wr_21 = '$wr_21',
wr_22 = '$wr_22',
wr_23 = '$wr_23',
wr_24 = '$wr_24',
wr_25 = '$wr_25',
wr_26 = '$wr_26',
wr_27 = '$wr_27',
wr_28 = '$wr_28',
wr_29 = '$wr_29',
wr_30 = '$wr_30',
wr_31 = '$wr_31',
wr_32 = '$wr_32',
wr_33 = '$wr_33',
wr_34 = '$wr_34',
wr_35 = '$wr_35',
wr_36 = '$wr_36',
wr_37 = '$wr_37',
wr_38 = '$wr_38',
wr_39 = '$wr_39',
wr_40 = '$wr_40',
wr_41 = '$wr_41',
wr_42 = '$wr_42',
wr_43 = '$wr_43',
wr_44 = '$wr_44',
wr_45 = '$wr_45',
wr_46 = '$wr_46',
wr_47 = '$wr_47',
wr_48 = '$wr_48',
wr_49 = '$wr_49',
wr_50 = '$wr_50',
wr_51 = '$wr_51',
wr_52 = '$wr_52',
wr_53 = '$wr_53'
where wr_id = '$wr_id' ";
sql_query($sql);
// 자신만의 코드를 넣어주세요.
//휴대전화
$wr_1 = "$hp1-$hp2-$hp3";
$sql1 = " update $write_table set wr_1 = '$wr_1' where wr_id = '$wr_id' ";
sql_query($sql1);
//전화번호
$wr_2 = "$tel1-$tel2-$tel3";
$sql2 = " update $write_table set wr_2 = '$wr_2' where wr_id = '$wr_id' ";
sql_query($sql2);
// 주소
$wr_3 = "$ex_zip|$ex_addr1|$ex_addr2|$ex_addr3|$ex_jibeon";
sql_query(" update $write_table set wr_3 = '$wr_3' where wr_id = '$wr_id' ");
if($add_qry )sql_query("update $write_table set $add_qry where wr_id='$wr_id'");
?>
이렇게 추가를 한 상태입니다.
그런데 게시판에 글작성을 하고 뷰페이지와 수정하게 되면 여분필드의 선택된 값들이 이상하게 뜨고 있어서요...
이런식으로 오류가 뜨는 상태인데, 문제가 무었인지 알 수 있을까요...?
!-->답변 5
write_update.php 에서 alert 하고 goto_url 부분 주석처리하시고
print_r($_POST); 하셔서 값이 정상적으로 오는지 확인하셔야 할 듯해요.
* number_format() 함수 관련 waning 은 파라미터에 숫자형태의 값이 아닌 문자열 형태의 값이 들어갔다는 의미입니다. number_format($view['wr_11']); 같이 썼다면.. $view['wr_11'] 로 변경해야 됩니다. $view['wr_11'] 이 "메이커/코딩" 인 경우..
* if($add_qry )sql_query("update $write_table set $add_qry where wr_id='$wr_id'");
는 삭제하는게 좋아 보이고..
* $wr_1 = "$hp1-$hp2-$hp3";
~
이하 코드는
write_update.head.skin.php 에
$wr_1 = "$hp1-$hp2-$hp3";
$wr_2 = "$tel1-$tel2-$tel3";
$wr_3 = "$ex_zip|$ex_addr1|$ex_addr2|$ex_addr3|$ex_jibeon";
의 내용으로만 넣는게 더 좋습니다.
(write_update.php 에서 업데이트 3번을 추가로 하지 않아도 됩니다.)
/bbs/write_update.php 에서 $wr_1 ~ $wr_10 이 업데이트문에 반영되기 때문에.. write_update.head.skin.php 파일에서 변수만 정리해주면 됩니다.
view.skin.php 파일 183,215,227 라인에 에 number_format() 함수에서 값이 전달이 안된 상태인것 같습니다.
덤으로 /bbs/write_update.php 에 아래것도 $i<=50; 이렇게 수정해주셔야 할 것 같습니다.
for ($i=1; $i<=10; $i++) {
$var = "wr_$i";
$$var = "";
if (isset($_POST['wr_'.$i]) && settype($_POST['wr_'.$i], 'string')) {
$$var = trim($_POST['wr_'.$i]);
}
}
if($add_qry )sql_query("update $write_table set $add_qry where wr_id='$wr_id'");
는 작동하지 않습니다. 확인하세요
view.skin.php 내용에서 number_format 검색해서 확인해보세요
그것은 숫자외에 값이 들어오면 오류가 뜹니다
금액에 , 가 포함되서 디비에 저장했다면 그것을 지우거나, view.skin.php 에서 , 를 제거하는 작업을 먼저 해야합니다
수정만 50개를 저장하시려는건지 아니면 등록도 저렇게 하시려는건지
등록도 50개 전체를 저장하게 하시려는거면 insert 쪽도 건드려야 하지 않을까요?
그리고 number_format은 int 숫자에만 작동합니다.
한글,영어, 특수문자 전체 안되고 300000 이렇게 숫자만 입력해야 작동합니다.
숫자만 출력하시려면 explode 이용하셔서 분리하신다음에 특수문자 지우시고 number_format() 으로 출력하셔야 되요.