관리자 메뉴 db저장 관련 문의

관리자 메뉴 db저장 관련 문의

QA

관리자 메뉴 db저장 관련 문의

답변 1

본문

안녕하세요~

관리자 메인페이지 좌측에 퀵메뉴 부분을 구현을 하려고 하는데 잘 안되는 부분이 있어서 이렇게 문의 드립니다.

661996078_1668503880.9521.png

위의 이미지는 현재 관리자 메인페이지에 임의로 구현해놓은 것입니다.

좌측이 퀵메뉴가 들어가는 부분이며 중앙 이미지는 메뉴등록 부분입니다.

 

문제점은 메뉴등록시 db에 데이터가 저장이 되어야 하는데 저장이 되지 않고 있습니다.

소스코드는 아래와 같습니다.

ajax.q_menu_setup.php // 메뉴등록 파일


<?php
require_once './_common.php';
 
if ($is_admin != 'super') {
    alert('최고관리자만 접근 가능합니다.');
}
 
// 메뉴테이블 생성
if (!isset($g5['qmenu_table'])) {
    die('<meta charset="utf-8">dbconfig.php 파일에 <strong>$g5[\'qmenu_table\'] = G5_TABLE_PREFIX.\'qmenu\';</strong> 를 추가해 주세요.');
}
 
if (!sql_query(" DESCRIBE {$g5['qmenu_table']} ", false)) {
    sql_query(
        " CREATE TABLE IF NOT EXISTS `{$g5['qmenu_table']}` (
                  `qm_no` int(11) NOT NULL AUTO_INCREMENT,
                  `qm_name` varchar(255) NOT NULL DEFAULT '',
                  `qm_link` varchar(255) NOT NULL DEFAULT '',
                  `qm_rank` int(11) NOT NULL DEFAULT '0',
                  `qm_use` tinyint(4) NOT NULL DEFAULT '0',
                  PRIMARY KEY (`qm_no`)
                ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ",
        true
    );
}
 
$sql = " select * from {$g5['qmenu_table']} order by qm_no ";
$result = sql_query($sql);
 
$colspan = 4;
?>

 
<!-- 퀵메뉴 설정 팝업 { -->
    <div id="menu_setup_bg" class="hidden" onclick="javascript:closePop();"></div>
<form name="fq_menu_setup" action="/admin/adm_include/q_menu_setup/q_menu_setup_update.php" method="post">
<div id="menu_setup" class="hidden">
    <h3>퀵메뉴 링크관리(메뉴명,링크 내용 삭제 후 저장하시면 자동으로 삭제 됩니다.)</h3>
    <div class="setup_wrap">
        <table width="100%" border="0" cellspacing="0" cellpadding="0">
            <colgroup>
                <col width="15%" />
                <col width="" />
                <col width="10%" />
                <col width="10%" />
            </colgroup>
            <thead>
                <tr>
                    <th scope="col">메뉴명</th>
                    <th scope="col">링크</th>
                    <th scope="col">출력순</th>
                    <th scope="col">사용여부</th>
                </tr>
            </thead>
            <tbody id="setup_tbody">
            <?php
                for ($i = 0; $row = sql_fetch_array($result); $i++) {
                    $qm_name = str_replace($search, $replace, $row['qm_name']);
                ?>              
                                <style>
                #menu_setup #use_check<?php echo $i; ?> {display:none}
                #menu_setup #use_check<?php echo $i; ?> + label.check_label {display:inline-block;position:relative;width:30px;height:14px;border-radius:20px;background:#c4c4c4;-webkit-transition:0.2s;-ms-transition:0.2s;transition:0.2s;cursor:pointer}
                #menu_setup #use_check<?php echo $i; ?> + label.check_label:after {content:'';display:block;position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:12px;background-color:#fff;-webkit-transition:0.2s;-ms-transition:0.2s;transition:0.2s}
                #menu_setup #use_check<?php echo $i; ?>:checked + label.check_label {background:#03a9f5}
                #menu_setup #use_check<?php echo $i; ?>:checked + label.check_label:after {left:auto;right:2px}
                @media \0screen {
                /* 익스8이하는 체크박스보이기 */
                #menu_setup #use_check<?php echo $i; ?> {display:inline-block;border:none;width:15px;height:15px}
                #menu_setup #use_check<?php echo $i; ?> + label.check_label  {display:none}
                }
                </style>
                    <tr id="tr0">
                        <td>
                            <input type="text" name="qm_name[]" value="<?php echo get_sanitize_input($qm_name); ?>">
                        </td>
                        <td>
                            <input type="text" name="qm_link[]" value="<?php echo $row['qm_link'] ?>">
                        </td>
                        <td>
                            <input type="text" name="qm_rank[]" value="<?php echo $row['qm_rank'] ?>">
                        </td>
                        <td class="check">
                            <input type="checkbox" name="qm_use[0]" id="use_check<?php echo $i; ?>" value="yes" checked >
                            <label for="use_check<?php echo $i; ?>" class="check_label"></label>
                            <input type="hidden" name="qm_no[]" value="<?php echo $row['qm_no'] ?>">
                        </td>
                    </tr>                                              
                <?php
                }
                ?>
                            </tbody>
        </table>
     
        <div class="add_remove"><span id="add_btn"><img src="/admin/img/add.png" /></span><span id="del_btn"><img src="/admin/img/remove.png" /></span></div>
            <script>
            var count = 3; // 행개수
            var full_count = 12; // 최대 행개수
                $(function() {
                    /*$(window).load(function(){ // 처음 실행 시 onload
                        $('#add_btn').trigger('click');// 추가버튼 자동클릭
                    });*/
                    $('#add_btn').click(function() { // 추가
                        ++count;// 행 추가할때마다 행개수 +1
                        if(count>full_count){// 최대 행개수보다 크면 리턴
                            alert("최대 12개까지만 가능합니다.");
                            return;
                        }
                        // 행 추가
                        $("#setup_tbody").append('<tr id=tr'+count+'><td><input type="text" name="qm_name[]"></td><td><input type="text" name="qm_link[]"></td><td><input type="text" name="qm_rank[]"></td><td class="check"><input type="checkbox" name="qm_use[]" id="use_check_'+count+'" value="use_'+count+'"><label for="use_check_'+count+'" class="check_label"></label><input type="hidden" name="qm_no[]"></td></tr>');
                    });
                    $('#del_btn').click(function() { // 삭제
                        //if(count<=1){// 행이 하나일 때 삭제 안함
                        //  alert("더이상 삭제할 수 없습니다");
                        //  return;
                        //}
                        // 마지막 tr 삭제
                        $('#tr'+count).remove();
                        count--; // tr 한줄씩 삭제
                    });
                });
            $('#add_btn').trigger('click');// 추가버튼 자동클릭
            </script>
    </div><!-- setup_wrap -->
 
    <button type="submit" class="save_btn">저장</button>
    <div id="setup_close" onclick="javascript:closePop()">
        <img src="/admin/img/pupup_close.png" />
    </div>
</div>
</form>
<!-- } 퀵메뉴 설정 팝업 -->
<script>
    $("#menu_setup").css("display","block");
    $("#menu_setup_bg").css("display","block")
    setTimeout(function() {
        $("#menu_setup").removeClass("hidden").css({"top":"150px"});
        $("#menu_setup_bg").removeClass("hidden");
    },300);
    $("#sh_adm_hd").css("z-index","-1");    
</script>

 

q_menu_setup_update.php // 메뉴업데이트 파일


<?php
require_once './_common.php';
 
check_demo();
 
if ($is_admin != 'super') {
    alert('최고관리자만 접근 가능합니다.');
}
 
check_admin_token();
 
// 이전 메뉴정보 삭제
$sql = " delete from {$g5['qmenu_table']} ";
sql_query($sql);
 
$group_code = null;
$primary_code = null;
$count = isset($_POST['code']) ? count($_POST['code']) : 0;
 
for ($i = 0; $i < $count; $i++) {
    $_POST = array_map_deep('trim', $_POST);
 
    if (preg_match('/^javascript/i', preg_replace('/[ ]{1,}|[\t]/', '', $_POST['qm_link'][$i]))) {
        $_POST['qm_link'][$i] = G5_URL;
    }
 
    $_POST['qm_link'][$i] = is_array($_POST['qm_link']) ? clean_xss_tags(clean_xss_attributes(preg_replace('/[ ]{2,}|[\t]/', '', $_POST['qm_link'][$i]), 1)) : '';
    $_POST['qm_link'][$i] = html_purifier($_POST['qm_link'][$i]);
 
    $code    = is_array($_POST['code']) ? strip_tags($_POST['code'][$i]) : '';
    $qm_name = is_array($_POST['qm_name']) ? strip_tags($_POST['qm_name'][$i]) : '';
    $qm_link = (preg_match('/^javascript/i', $_POST['qm_link'][$i]) || preg_match('/script:/i', $_POST['qm_link'][$i])) ? G5_URL : strip_tags(clean_xss_attributes($_POST['qm_link'][$i]));
 
    if (!$code || !$qm_name || !$qm_link) {
        continue;
    }
 
    // 메뉴 등록
    $sql = " insert into {$g5['qmenu_table']}
                set qm_no           = '" . $qm_no . "',
                    qm_name         = '" . $qm_name . "',
                    qm_link         = '" . $qm_link . "',
                    qm_rank         = '" . sql_real_escape_string(strip_tags($_POST['qm_rank'][$i])) . "',
                    qm_use          = '" . sql_real_escape_string(strip_tags($_POST['qm_use'][$i])) . "' ";
    sql_query($sql);
}
 
goto_url('/admin');

 

dbconfig.php 파일에 아래와 같이 등록

$g5['qmenu_table'] = G5_TABLE_PREFIX.'qmenu'; // 퀵메뉴관리 테이블

 

이렇게 작업을 하였습니다. db테이블 및 컬럼도 정상적으로 생성이 되어있는데 db에 데이터가 등록이 되지 않습니다. 

아직 초보자여서 배우면서 하고 있는데 계속 제자리 걸음이군요...

 

고수님들의 조언과 도움 부탁드리겠습니다.

즐거운 하루 마무리 잘 하시구요. 해결방법 꼭 부탁드리겠습니다.

이 질문에 댓글 쓰기 :

답변 1

* q_menu_setup_update.php 

sql_query($sql);

아래에

echo $sql;

exit;

구문을 넣어 sql문이 정상적인지 확인해 볼 수 있습니다.

이런 방식으로 하나씩 원인을 찾아나가면 됩니다.

마르스컴퍼니 님
제가 초보자이기때문에  답변에 이해가 부족한듯 합니다.
sql 쪽을 검토를 해봤는데 phpmyadmin sql 구문에서도 어떠한 에러는 출력되지 않고 있습니다.
조금만 더 쉽게 설명을 해 주시면 감사하겠습니다.

q_menu_setup_update.php

3라인에 echo 'a'; exit;
코드를 넣어본 후, 브라우저에서 'a' 가 찍히는지 확인합니다.

20라인에 echo $_POST['code']; exit;
코드를 넣어본 후, 브라우저에서 $_POST['code']; 가 정상적으로 출력되는지 확인합니다.

....

이렇게
(어디까지 문제없이 진행되고, 어디서부터 생각했던 것과는 다르게 진행되는지를 찾아보면서)
문제 원인을 찾아나가면 됩니다.

안녕하세요~ 마르스컴퍼니님
조언해 주신대로 하나씩 테스트 해봤는데.. 해결이 되지않아 다른방법을 찾아서 구현해야 할것 같습니다.
이부분만 계속 잡고 있을수가 없네요..ㅠㅠ 너무 초보인지라 어렵군요
조언해 주셔서 감사합니다.

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