여분필드를 53번까지 추가하기위해 진행해보았습니다.

여분필드를 53번까지 추가하기위해 진행해보았습니다.

QA

여분필드를 53번까지 추가하기위해 진행해보았습니다.

답변 5

본문

여분필드를 53번까지 추가하기위해 진행해보았습니다.

phpadmin에서 테이블에 wr_1~10까지의 구조와 같게 11부터 53까지 추가하였습니다.

3543063980_1624433719.9839.png

 

그 후 게시판 스킨 폴더에 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'");

?>
 

이렇게 추가를 한 상태입니다.

 

그런데 게시판에 글작성을 하고 뷰페이지와 수정하게 되면 여분필드의 선택된 값들이 이상하게 뜨고 있어서요...

 

3543063980_1624433832.3738.png

 

이런식으로 오류가 뜨는 상태인데, 문제가 무었인지 알 수 있을까요...? 

이 질문에 댓글 쓰기 :

답변 5

write_update.php 에서 alert 하고 goto_url 부분 주석처리하시고
print_r($_POST); 하셔서 값이 정상적으로 오는지 확인하셔야 할 듯해요.

네. 그리고 보니까 ㅡㅡ;;;;; write_update.skin.php 에 넣으셨네요.
아마 wr_11~50 값이 전달이 안될겁니다. write_update.php 파일이 아니니깐요.

wr_11 = '".$_POST['wr_11']."',
wr_12 = '".$_POST['wr_12']."',
wr_13 = '".$_POST['wr_13']."',
...

이런식으로 변경하시거나 아까 제가 드린 50번까지 소스를 write_update.skin.php 에 응용하셔서 추가해보세요.

wr_11 = '".$_POST['wr_11']."',

이렇게 저장하셔도 되긴 될겁니다. 제가 아까 보내드린 소스는 $wr_11 이렇게 짧게 만들기 위해 그누보드에 기본 내장된 거여서요.

* 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]);
    }
}
 

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 에서 , 를 제거하는 작업을 먼저 해야합니다


<option value="42000,메이커/코딩" <? if($write['wr_11'] == "메이커/코딩") echo "selected"; ?>>메이커/코딩</option>

옵션값이 이런식으로 되어있는데, 문제있는건가요..?
DB를 확인해보니 값이아예 전달이 안되네요 ㅠ

수정만 50개를 저장하시려는건지 아니면 등록도 저렇게 하시려는건지
등록도 50개 전체를 저장하게 하시려는거면 insert 쪽도 건드려야 하지 않을까요?

그리고 number_format은 int 숫자에만 작동합니다.
한글,영어, 특수문자 전체 안되고 300000 이렇게 숫자만 입력해야 작동합니다.
숫자만 출력하시려면 explode 이용하셔서 분리하신다음에 특수문자 지우시고 number_format() 으로 출력하셔야 되요.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 59
© SIRSOFT
현재 페이지 제일 처음으로