테스트 사이트 - 개발 중인 베타 버전입니다

쿼리 및 iq_id 질문입니다... 채택완료

lacomparte 7년 전 조회 3,154

** 수정 **

음.. select 한게 없으니 그런거라 생각하고

아래의 쿼리를 실행해서 결과값을 $iq_id에 저장 했습니다.

이렇게 하는게 맞을까요!? 

</p>

<p>if ($w == '') {

    $sql_iqid = sql_fetch("SELECT * FROM {$g5['g5_shop_item_qa_table']} ORDER BY iq_id DESC LIMIT 1");

    $iq_id = $sql_iqid['iq_id'];

}</p>

<p>

 

** 수정 끝 **

 

일단 itemqaform,skin.php 에 파일추가 하게끔

아래의 소스를 추가해주었습니다.

그리고 g5_shop_item_qa 테이블에

qa_file 과 qa_option 필드를 추가해주었습니다

qa_file 은 파일개수를 넣는 필드구요

qa_option 은 write table 의 wr_option 과 같습니다

추후 이미지를 출력하기 위해 html1 로 지정해봤습니다(?)

 

</p>

<p><?php 

            $is_file = true;

            $file_count = 4;

            for ($i=0; $is_file && $i<$file_count; $i++) { 

        ?>

        <tr>

            <th scope="row">파일 #<?php echo $i+1 ?></th>

            <td>

                <input class="upload_name" value="파일선택" disabled="disabled">

                <label for="fileInput<?php echo $i; ?>" class="file_label">찾아보기</label>

                <input type="file" name="bf_file[]" title="파일첨부 <?php echo $i+1 ?> : 용량 <?php echo $upload_max_filesize ?> 이하만 업로드 가능" id="fileInput<?php echo $i; ?>" class="frm_file frm_input"></p>

<p>                <?php if ($is_file_content) { ?>

                <input type="text" name="bf_content[]" value="<?php echo ($w == 'u') ? $file[$i]['bf_content'] : ''; ?>" title="파일 설명을 입력해주세요." class="frm_file frm_input" size="50">

                <?php } ?>

                <?php if($w == 'u' && $file[$i]['file']) { ?>

                <input type="checkbox" id="bf_file_del<?php echo $i ?>" name="bf_file_del[<?php echo $i;  ?>]" value="1"> <label for="bf_file_del<?php echo $i ?>"><?php echo $file[$i]['source'].'('.$file[$i]['size'].')';  ?> <b>파일을 삭제하시려면 체크해주세요</b></label>

                <?php } ?>

                <script>

                    var fileTarget = $("#fileInput<?php echo $i ?>");

                    var name = '';

                    fileTarget.on('change', function(){ // 값이 변경되면 

                        if(window.FileReader){ // modern browser 

                            var filename = $(this)[0].files[0].name; 

                        } else { // old IE 

                            var filename = $(this).val().split('/').pop().split('\\').pop(); // 파일명만 추출 

                        } 

                        // 추출한 파일명 삽입 

                        $(this).siblings('.upload_name').val(filename);

                    }); 

                </script>

            </td>

        </tr></p>

<p>

 

 

 

그런데..

첨부파일을 넣고 질문을 남기면.

board_file 테이블에도 잘 저장이 되고,

data 폴더에도 폴더생성 및 파일 저장까지 잘됩니다.

근데 g5_shop_item_qa 테이블의 해당 게시글의 qa_file 필드는

항상 0입니다.

그래서 체크해보니

iq_id 가 항상 빈값으로 찍히더라구요..

 

근데 아래 소스 보시면 아시겠지만

새글이 insert 된 시점 이후에 iq_id를 가져다 쓰는건데..

왜 iq_id 가 빈값일까요?

 

itemqaformupdate.php 파일입니다

</p>

<p><?php

include_once('./_common.php');</p>

<p>if (!$is_member) {

    alert_close("상품문의는 회원만 작성이 가능합니다.");

}</p>

<p>$iq_id = (int) trim($_REQUEST['iq_id']);

$iq_subject = trim($_POST['iq_subject']);

$iq_question = trim($_POST['iq_question']);

$iq_answer = trim($_POST['iq_answer']);

$hash = trim($_REQUEST['hash']);

$device = trim($_POST['device']);

$prev_url = trim($_POST['prev_url']);

$get_editor_img_mode = $config['cf_editor'] ? false : true;</p>

<p>if ($w == "" || $w == "u") {

    $iq_name     = addslashes(strip_tags($member['mb_name']));

    $iq_password = $member['mb_password'];</p>

<p>    if (!$iq_subject) alert("제목을 입력하여 주십시오.");

    if (!$iq_question) alert("질문을 입력하여 주십시오.");

}</p>

<p>$itemqalist = 'itemqalist';

$mypage = 'mypage_';</p>

<p>/* 2018-01-16 원본 주석처리

if($is_mobile_shop)

    $url = './iteminfo.php?it_id='.$it_id.'&info=qa';

else

    $url = "./item.php?it_id=$it_id&_=".get_token()."#sit_qa";

*/

/* 2018-03-20 주석 처리 

if($is_mobile_shop) {

    if(strpos($prev_url,$itemqalist) == true) {

        if(strpos($prev_url,$mypage)){

            $url = "./mypage_itemqalist.php";    

        } else {

            $url = "./itemqalist.php"; 

        }

    } else {

        $url = "./item.php?it_id=$it_id&_=".get_token()."#itemqa"; 

    }

} else {

    if(strpos($prev_url,$itemqalist) == true) {

        if(strpos($prev_url,$mypage)){

            $url = "./mypage_itemqalist.php";    

        } else {

            $url = "./itemqalist.php"; 

        }

    } else {

        $url = "./item.php?it_id=$it_id&_=".get_token()."#itemqa"; 

    }

}

*/</p>

<p>// 2018-03-21 파일

$upload_max_filesize = ini_get('upload_max_filesize');

if (empty($_POST)) {

    alert("파일 또는 글내용의 크기가 서버에서 설정한 값을 넘어 오류가 발생하였습니다.\\npost_max_size=".ini_get('post_max_size')." , upload_max_filesize=".$upload_max_filesize."\\n게시판관리자 또는 서버관리자에게 문의 바랍니다.");

}</p>

<p>

if(strpos($prev_url,$itemqalist) == true) {

    if(strpos($prev_url,$mypage)){

        $url = "./mypage_itemqalist.php";    

    } else {

        $url = "./itemqalist.php"; 

    }

} else {

    $url = "./item.php?it_id=$it_id&_=".get_token()."#itemqa"; 

}</p>

<p>if ($w == "")

{

    $sql = "insert {$g5['g5_shop_item_qa_table']}

               set it_id = '$it_id',

                   mb_id = '{$member['mb_id']}',

                   iq_secret = '$iq_secret',

                   iq_name  = '$iq_name',

                   iq_email = '$iq_email',

                   iq_hp = '$iq_hp',

                   iq_password  = '$iq_password',

                   iq_subject  = '$iq_subject',

                   iq_question = '$iq_question',

                   iq_time = '".G5_TIME_YMDHIS."',

                   iq_ip = '$REMOTE_ADDR',

                   device = '$device',

                   qa_option = 'html1'";

    sql_query($sql);</p>

<p>    $alert_msg = '1:1문의가 등록 되었습니다.';

}

else if ($w == "u")

{

    if (!$is_admin)

    {

        $sql = " select count(*) as cnt from {$g5['g5_shop_item_qa_table']} where mb_id = '{$member['mb_id']}' and iq_id = '$iq_id' ";

        $row = sql_fetch($sql);

        if (!$row['cnt'])

            alert("자신의 1:1문의만 수정하실 수 있습니다.");

    }</p>

<p>    $sql = " update {$g5['g5_shop_item_qa_table']}

                set iq_secret = '$iq_secret',

                    iq_email = '$iq_email',

                    iq_hp = '$iq_hp',

                    iq_subject = '$iq_subject',

                    device = '$device',

                    iq_question = '$iq_question'

              where iq_id = '$iq_id' ";

    sql_query($sql);</p>

<p>    $alert_msg = '1:1문의가 수정 되었습니다.';

}

else if ($w == "d")

{

    if (!$is_admin)

    {

        $sql = " select iq_answer from {$g5['g5_shop_item_qa_table']} where mb_id = '{$member['mb_id']}' and iq_id = '$iq_id' ";

        $row = sql_fetch($sql);

        if (!$row)

            alert("자신의 1:1문의만 삭제하실 수 있습니다.");</p>

<p>        if ($row['iq_answer'])

            alert("답변이 있는 1:1문의는 삭제하실 수 없습니다.");

    }</p>

<p>    // 에디터로 첨부된 이미지 삭제

    $sql = " select iq_question, iq_answer from {$g5['g5_shop_item_qa_table']} where iq_id = '$iq_id' and md5(concat(iq_id,iq_time,iq_ip)) = '{$hash}' ";

    $row = sql_fetch($sql);</p>

<p>    $imgs = get_editor_image($row['iq_question'], $get_editor_img_mode);</p>

<p>    for($i=0;$i<count($imgs[1]);$i++) {

        $p = parse_url($imgs[1][$i]);

        if(strpos($p['path'], "/data/") != 0)

            $data_path = preg_replace("/^\/.*\/data/", "/data", $p['path']);

        else

            $data_path = $p['path'];</p>

<p>        if( preg_match('/(gif|jpe?g|bmp|png)$/i', strtolower(end(explode('.', $data_path))) ) ){</p>

<p>            $destfile = ( ! preg_match('/\w+\/\.\.\//', $data_path) ) ? G5_PATH.$data_path : '';</p>

<p>            if($destfile && preg_match('/\/data\/editor\/[A-Za-z0-9_]{1,20}\//', $destfile) && is_file($destfile))

                @unlink($destfile);

        }

    }</p>

<p>    $imgs = get_editor_image($row['iq_answer'], $get_editor_img_mode);</p>

<p>    for($i=0;$i<count($imgs[1]);$i++) {

        $p = parse_url($imgs[1][$i]);

        if(strpos($p['path'], "/data/") != 0)

            $data_path = preg_replace("/^\/.*\/data/", "/data", $p['path']);

        else

            $data_path = $p['path'];</p>

<p>        if( preg_match('/(gif|jpe?g|bmp|png)$/i', strtolower(end(explode('.', $data_path))) ) ){</p>

<p>            $destfile = ( ! preg_match('/\w+\/\.\.\//', $data_path) ) ? G5_PATH.$data_path : '';</p>

<p>            if($destfile && preg_match('/\/data\/editor\/[A-Za-z0-9_]{1,20}\//', $destfile) && is_file($destfile))

                @unlink($destfile);

        }

    }</p>

<p>    $sql = " delete from {$g5['g5_shop_item_qa_table']} where iq_id = '$iq_id' and md5(concat(iq_id,iq_time,iq_ip)) = '{$hash}' ";

    sql_query($sql);</p>

<p>    $alert_msg = '1:1문의가 삭제 되었습니다.';

}</p>

<p>

// *******************************

// ******* 2018-03-21 파일 ********

// *******************************

$bo_table = 'ItemQa';

$file_limit = 4;</p>

<p>$file_count = 0;

$upload_count = count($_FILES['bf_file']['name']);</p>

<p>for ($i=0; $i<$upload_count; $i++) {

    if ($_FILES['bf_file']['name'][$i] && is_uploaded_file($_FILES['bf_file']['tmp_name'][$i])) {

        $file_count++;

    }

}

if ($w == 'u') {

    $file = get_file('item_qa', $it_id);

    if ($file_count && (int)$file['count'] > 4){

        alert('기존 파일을 삭제하신 후 첨부파일을 '.$file_limit.'개 이하로 업로드 해주십시오.');

    }

} else {

    if($file_count > 4)

        alert('첨부파일을 '.$file_limit.'개 이하로 업로드 해주십시오.');

}</p>

<p>// 디렉토리가 없다면 생성합니다.

@mkdir(G5_DATA_PATH.'/file/'.$bo_table, G5_DIR_PERMISSION);

@chmod(G5_DATA_PATH.'/file/'.$bo_table, G5_DIR_PERMISSION);</p>

<p>$chars_array = array_merge(range(0,9), range('a','z'), range('A','Z'));

// 가변 파일 업로드

$file_upload_msg = '';

$upload = array();

for ($i=0; $i<count($_FILES['bf_file']['name']); $i++){

    $upload[$i]['file']     = '';

    $upload[$i]['source']   = '';

    $upload[$i]['filesize'] = 0;

    $upload[$i]['image']    = array();

    $upload[$i]['image'][0] = '';

    $upload[$i]['image'][1] = '';

    $upload[$i]['image'][2] = '';</p>

<p>    // 삭제에 체크가 되어있다면 파일을 삭제합니다.

    if (isset($_POST['bf_file_del'][$i]) && $_POST['bf_file_del'][$i]) {

        $upload[$i]['del_check'] = true;</p>

<p>        $row = sql_fetch(" select bf_file from {$g5['board_file_table']} where bo_table = '{$bo_table}' and wr_id = '{$iq_id}' and bf_no = '{$i}' ");

        @unlink(G5_DATA_PATH.'/file/'.$bo_table.'/'.$row['bf_file']);

        // 썸네일삭제

        if(preg_match("/\.({$config['cf_image_extension']})$/i", $row['bf_file'])) {

            delete_board_thumbnail($bo_table, $row['bf_file']);

        }

    }

    else

        $upload[$i]['del_check'] = false;</p>

<p>    $tmp_file  = $_FILES['bf_file']['tmp_name'][$i];

    $filesize  = $_FILES['bf_file']['size'][$i];

    $filename  = $_FILES['bf_file']['name'][$i];

    $filename  = get_safe_filename($filename);</p>

<p>    // 서버에 설정된 값보다 큰파일을 업로드 한다면

    if ($filename) {

        if ($_FILES['bf_file']['error'][$i] == 1) {

            $file_upload_msg .= '\"'.$filename.'\" 파일의 용량이 서버에 설정('.$upload_max_filesize.')된 값보다 크므로 업로드 할 수 없습니다.\\n';

            continue;

        }

        else if ($_FILES['bf_file']['error'][$i] != 0) {

            $file_upload_msg .= '\"'.$filename.'\" 파일이 정상적으로 업로드 되지 않았습니다.\\n';

            continue;

        }

    }</p>

<p>    if (is_uploaded_file($tmp_file)) {

        // 관리자가 아니면서 설정한 업로드 사이즈보다 크다면 건너뜀

        if (!$is_admin && $filesize > 22097152) {

            $file_upload_msg .= '\"'.$filename.'\" 파일의 용량('.number_format($filesize).' 바이트)이 게시판에 설정('.number_format(22097152).' 바이트)된 값보다 크므로 업로드 하지 않습니다.\\n';

            continue;

        }</p>

<p>        //=================================================================\

        // 090714

        // 이미지나 플래시 파일에 악성코드를 심어 업로드 하는 경우를 방지

        // 에러메세지는 출력하지 않는다.

        //-----------------------------------------------------------------

        $timg = @getimagesize($tmp_file);

        // image type

        if ( preg_match("/\.({$config['cf_image_extension']})$/i", $filename) ||

             preg_match("/\.({$config['cf_flash_extension']})$/i", $filename) ) {

            if ($timg['2'] < 1 || $timg['2'] > 16)

                continue;

        }

        //=================================================================</p>

<p>        $upload[$i]['image'] = $timg;</p>

<p>        // 4.00.11 - 글답변에서 파일 업로드시 원글의 파일이 삭제되는 오류를 수정

        if ($w == 'u') {

            // 존재하는 파일이 있다면 삭제합니다.

            $row = sql_fetch(" select bf_file from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '{$iq_id}' and bf_no = '$i' ");

            @unlink(G5_DATA_PATH.'/file/'.$bo_table.'/'.$row['bf_file']);

            // 이미지파일이면 썸네일삭제

            if(preg_match("/\.({$config['cf_image_extension']})$/i", $row['bf_file'])) {

                delete_board_thumbnail($bo_table, $row['bf_file']);

            }

        }</p>

<p>        // 프로그램 원래 파일명

        $upload[$i]['source'] = $filename;

        $upload[$i]['filesize'] = $filesize;</p>

<p>        // 아래의 문자열이 들어간 파일은 -x 를 붙여서 웹경로를 알더라도 실행을 하지 못하도록 함

        $filename = preg_replace("/\.(php|pht|phtm|htm|cgi|pl|exe|jsp|asp|inc)/i", "$0-x", $filename);</p>

<p>        shuffle($chars_array);

        $shuffle = implode('', $chars_array);</p>

<p>        // 첨부파일 첨부시 첨부파일명에 공백이 포함되어 있으면 일부 PC에서 보이지 않거나 다운로드 되지 않는 현상이 있습니다. (길상여의 님 090925)

        $upload[$i]['file'] = abs(ip2long($_SERVER['REMOTE_ADDR'])).'_'.substr($shuffle,0,8).'_'.replace_filename($filename);</p>

<p>        $dest_file = G5_DATA_PATH.'/file/'.$bo_table.'/'.$upload[$i]['file'];</p>

<p>        // 업로드가 안된다면 에러메세지 출력하고 죽어버립니다.

        $error_code = move_uploaded_file($tmp_file, $dest_file) or die($_FILES['bf_file']['error'][$i]);</p>

<p>        // 올라간 파일의 퍼미션을 변경합니다.

        chmod($dest_file, G5_FILE_PERMISSION);

    }

}</p>

<p>for ($i=0; $i<count($upload); $i++)

{

    if (!get_magic_quotes_gpc()) {

        $upload[$i]['source'] = addslashes($upload[$i]['source']);

    }</p>

<p>    $row = sql_fetch(" select count(*) as cnt from {$g5['board_file_table']} where bo_table = '{$bo_table}' and wr_id = '{$iq_id}' and bf_no = '{$i}' ");

    if ($row['cnt'])

    {

        // 삭제에 체크가 있거나 파일이 있다면 업데이트를 합니다.

        // 그렇지 않다면 내용만 업데이트 합니다.

        if ($upload[$i]['del_check'] || $upload[$i]['file'])

        {

            $sql = " update {$g5['board_file_table']}

                        set bf_source = '{$upload[$i]['source']}',

                             bf_file = '{$upload[$i]['file']}',

                             bf_content = '{$bf_content[$i]}',

                             bf_filesize = '{$upload[$i]['filesize']}',

                             bf_width = '{$upload[$i]['image']['0']}',

                             bf_height = '{$upload[$i]['image']['1']}',

                             bf_type = '{$upload[$i]['image']['2']}',

                             bf_datetime = '".G5_TIME_YMDHIS."'

                      where bo_table = '{$bo_table}'

                                and wr_id = '{$iq_id}'

                                and bf_no = '{$i}' ";

            sql_query($sql);

        }

        else

        {

            $sql = " update {$g5['board_file_table']}

                        set bf_content = '{$bf_content[$i]}'

                        where bo_table = '{$bo_table}'

                                  and wr_id = '{$iq_id}'

                                  and bf_no = '{$i}' ";

            sql_query($sql);

        }

    }

    else

    {

        $sql = " insert into {$g5['board_file_table']}

                    set bo_table = '{$bo_table}',

                         wr_id = '{$iq_id}',

                         bf_no = '{$i}',

                         bf_source = '{$upload[$i]['source']}',

                         bf_file = '{$upload[$i]['file']}',

                         bf_content = '{$bf_content[$i]}',

                         bf_download = 0,

                         bf_filesize = '{$upload[$i]['filesize']}',

                         bf_width = '{$upload[$i]['image']['0']}',

                         bf_height = '{$upload[$i]['image']['1']}',

                         bf_type = '{$upload[$i]['image']['2']}',

                         bf_datetime = '".G5_TIME_YMDHIS."' ";

        sql_query($sql);

    }

}</p>

<p>$row = sql_fetch(" select max(bf_no) as max_bf_no from {$g5['board_file_table']} where bo_table = '{$bo_table}' and wr_id = '{$iq_id}' ");

for ($i=(int)$row['max_bf_no']; $i>=0; $i--)

{

    $row2 = sql_fetch(" select bf_file from {$g5['board_file_table']} where bo_table = '{$bo_table}' and wr_id = '{$iq_id}' and bf_no = '{$i}' ");</p>

<p>    // 정보가 있다면 빠집니다.

    if ($row2['bf_file']) break;</p>

<p>    // 그렇지 않다면 정보를 삭제합니다.

    sql_query(" delete from {$g5['board_file_table']} where bo_table = '{$bo_table}' and wr_id = '{$iq_id}' and bf_no = '{$i}' ");

}</p>

<p>$row = sql_fetch(" select count(*) as cnt from {$g5['board_file_table']} where bo_table = '{$bo_table}' and wr_id = '{$iq_id}' ");

sql_query(" update {$g5['g5_shop_item_qa_table']} set qa_file = '{$row['cnt']}' where iq_id = '{$iq_id}' ");</p>

<p>// 자동저장된 레코드를 삭제한다.

sql_query(" delete from {$g5['autosave_table']} where as_uid = '{$uid}' ");</p>

<p>

// *******************************

// ****** //2018-03-21 파일 *******

// *******************************</p>

<p>/*

if ($file_upload_msg) {

    alert($file_upload_msg, G5_SHOP_URL.'/itemqaform.php?it_id='.$it_id);

} else {

    if($w == 'd') {

        alert($alert_msg, $url);

    } else {

        alert_opener($alert_msg, $url);

    }

}

*/

?>

 </p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
o
7년 전

//등록시에 고유 아이디를 정의해 보세요 //66라인에 

</p>

<p>if ($w == "")

{

    $sql = "insert {$g5['g5_shop_item_qa_table']}

               set it_id = '$it_id',

                   mb_id = '{$member['mb_id']}',

                   iq_secret = '$iq_secret',

                   iq_name  = '$iq_name',

                   iq_email = '$iq_email',

                   iq_hp = '$iq_hp',

                   iq_password  = '$iq_password',

                   iq_subject  = '$iq_subject',

                   iq_question = '$iq_question',

                   iq_time = '".G5_TIME_YMDHIS."',

                   iq_ip = '$REMOTE_ADDR',

                   device = '$device',

                   qa_option = 'html1'";

    sql_query($sql);</p>

<p>    $iq_id = sql_insert_id(); //<--- 이부분을 추가해 주세요    

    

    

    $alert_msg = '1:1문의가 등록 되었습니다.';

}

else if ($w == "u")

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

l
lacomparte
7년 전
앗 그런방법이 있군요 감사합니다 :D

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인