db변수값 미출력문제.. 도와주세요ㅠ
본문
안녕하세요! 그누보드기반 홈페이지 제작하다가 막혀서 질문드립니다ㅠㅠ
페이지내에서 항목버튼을 누르면 (새로고침없이) 지정영역에 내용이 바뀌게 하고싶어서요
<!--내용출력영역-->
<div id="con_frame"><?php include(G5_PATH.'/content/con1.php')?></div>
<div id="con_menu">
<button onclick="change1()">버튼1</button><br>
<button onclick="change2()">버튼2</button><br>
</div>
<script src="<?php echo G5_JS_URL ?>/jquery-1.8.3.min.js"></script>
<script>
function change1() {
$('#con_frame').load('<?=G5_URL?>/content/con2.php');
}
function change2() {
$('#con_frame').load('<?=G5_URL?>/content/con1.php'); /*첫화면보여주기*/
}
</script>
위 viewer.php에 이렇게 코드를 짰는데 상단첫줄처럼 include로 con1.php를 가져오면
파일내용이 잘 출력됩니다만, 막상 버튼을 눌러보면 파일내 변수값이 출력되지 않습니다
con1,con2.php 파일내에 include_once('./_common.php'); 와 함께 아래코드를 포함했습니다
/* 설정값 가져오기 */
$ch_ar = array();
$str_secret = ' where (1) ';
if($member['mb_id'] == $mb['mb_id']) {
$str_secret .= " and ar_secret != 'H' ";
} else {
$str_secret .= " and ar_secret = '' ";
}
$ar_result = sql_query("select * from {$g5['article_table']} {$str_secret} order by ar_order asc");
for($i = 0; $row = sql_fetch_array($ar_result); $i++) {
$ch_ar[$i] = $row;
}
정확히는 [article_table] 해당 테이블값이 불러와지지 않습니다(/data/dbconfig.php 안에 정의했어요!)
편의상생략했으나 con~파일들이 3개이상이고 모두 include로 viewer.php내에 포함시키면 변수값이 제대로 불러와지는데 왜 function 함수로 가져오면 출력이 안 되는 걸까요..?
다른 페이징 소스로
<form method="post">
<input type="submit" name="test" id="test" value="버튼이름" /><br>
</form>
<?php
function testfun() {
include(G5_PATH.'/content/con1.php');
}
if(array_key_exists('test',$_POST)){ testfun();
} ?>
이렇게도 써봤는데 함수안의 include로 불러왔더니 역시 변수값이 출력되지 않았습니다
분명 상단에 _commom.php 포함해주고 그냥include했을때는 제대로 보이니 파일 소스의 오류같지는 않아서... 혹시 php랑 자바스크립트간의 변수넘기는 문제와 관련이 있나요..?
며칠 해결해보려고했는데 코딩초보라 모르겠습니다ㅠㅠ.. 이런쪽 문제같다~정도의 조언이나 가이드만이라도 주시면 감사할 것 같습니다...
!-->!-->!-->
답변 4
$.load를 이용해서 호출하는 페이지를 삽입하게 하시려면
iframe을 부르듯 파라미터를 넘기셔야 합니다.
con1.php입장에서 불려지는 시점에 전달받은 값이 없는데 어떻게 출력을할지 잘 고려하셔야합니다.
(하드코딩으로 지정할수도있겠지만)
즉, 호출하는페이지와 호출되는페이지가
서버상에서 동시에 호출되면 include를 이용해서 1개의 페이지로 구성해서 서버사이드 작업수행후
브라우저로 전송하게 하시거나
페이지가 조건에 따라 혹은 이벤트에 따라 다르게 호출되게 하려면
$.load()와 같은 방법으로 호출할때는 파라미터를 전달해서
불려지는페이지가 변수들을 인지할수있게 구성을 해주셔야합니다.
con1.php 에서 출력하는 부분이 없는데요?
혹시 con1.php 에서 세팅된 php 변수를 불러온 페이지에서 사용하시려는 거면 불가능합니다.
php 는 서버에서 모두 실행되고 난뒤 해당 결과값만 브라우저에 html 이나 json등의 문자열을 송신하는거거든요.
제가 말한게 맞다면 con1.php 에서는 계산된 값을 json 과 같은 형태로 출력을 해주시고 호출한 페이지에서 객체로 받아서 javascript 로 프로그래밍 하셔야 합니다.
jQuery 에서는 $.ajax 의 콜백함수로 이 작업을 할 수 있습니다.
con화일에서
if($member['mb_id'] == $mb['mb_id']) {
$mb['mb_id']
이 값이 없으니 include와 다르게 나오는 것이 아닌지 확인해보세요
화일 하단에 echo 'con111111111111111111';<--이걸 넣어서 잘 나오는지 확인도 해보세요
!-->!-->
조언주신분들 정말 감사드립니다! 제가 개념이 어려워 말씀해주신것들 차근히 살펴보고 문제 파악해보고 오겠습니다 감사합니다ㅠㅠ..