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

db변수값 미출력문제.. 도와주세요ㅠ 채택완료

sar 5년 전 조회 6,201

안녕하세요! 그누보드기반 홈페이지 제작하다가 막혀서 질문드립니다ㅠㅠ

페이지내에서 항목버튼을 누르면 (새로고침없이) 지정영역에 내용이 바뀌게 하고싶어서요

</p>

<p><!--내용출력영역--></p>

<p><div id="con_frame"><?php include(G5_PATH.'/content/con1.php')?></div></p>

<p><div id="con_menu"></p>

<p><button onclick="change1()">버튼1</button>
</p>

<p><button onclick="change2()">버튼2</button>
</p>

<p></div>    </p>

<p><script src="<?php echo G5_JS_URL ?>/jquery-1.8.3.min.js"></script></p>

<p><script></p>

<p>function change1() {</p>

<p>$('#con_frame').load('<?=G5_URL?>/content/con2.php');</p>

<p>}</p>

<p>function change2() {</p>

<p>$('#con_frame').load('<?=G5_URL?>/content/con1.php'); /*첫화면보여주기*/</p>

<p>} </p>

<p></script></p>

<p>

 

위 viewer.php에 이렇게 코드를 짰는데 상단첫줄처럼 include로 con1.php를 가져오면

파일내용이 잘 출력됩니다만, 막상 버튼을 눌러보면 파일내 변수값이 출력되지 않습니다

con1,con2.php 파일내에 include_once('./_common.php'); 와 함께 아래코드를 포함했습니다

</p>

<p>/* 설정값 가져오기 */

$ch_ar = array();

$str_secret = ' where (1) ';</p>

<p>if($member['mb_id'] == $mb['mb_id']) {

    $str_secret .= " and ar_secret != 'H' ";

} else {

    $str_secret .= " and ar_secret = '' ";

}</p>

<p>$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;

}</p>

<p>

 

정확히는 [article_table] 해당 테이블값이 불러와지지 않습니다(/data/dbconfig.php 안에 정의했어요!)

편의상생략했으나 con~파일들이 3개이상이고 모두 include로 viewer.php내에 포함시키면 변수값이 제대로 불러와지는데 왜 function 함수로 가져오면 출력이 안 되는 걸까요..?

 

다른 페이징 소스로

</p>

<p><form method="post"></p>

<p>    <input type="submit" name="test" id="test" value="버튼이름" />
</p>

<p></form></p>

<p><?php</p>

<p>function testfun() {</p>

<p>    include(G5_PATH.'/content/con1.php');</p>

<p>    }</p>

<p>    if(array_key_exists('test',$_POST)){ testfun();</p>

<p>    } ?></p>

<p>

 

이렇게도 써봤는데 함수안의 include로 불러왔더니 역시 변수값이 출력되지 않았습니다

분명 상단에 _commom.php 포함해주고 그냥include했을때는 제대로 보이니 파일 소스의 오류같지는 않아서... 혹시 php랑 자바스크립트간의 변수넘기는 문제와 관련이 있나요..?

 

며칠 해결해보려고했는데 코딩초보라 모르겠습니다ㅠㅠ.. 이런쪽 문제같다~정도의 조언이나 가이드만이라도 주시면 감사할 것 같습니다...

 

 

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

답변 4개

채택된 답변
+20 포인트
플래토
5년 전

$.load를 이용해서 호출하는 페이지를 삽입하게 하시려면

iframe을 부르듯 파라미터를 넘기셔야 합니다.

con1.php입장에서 불려지는 시점에 전달받은 값이 없는데 어떻게 출력을할지 잘 고려하셔야합니다.

(하드코딩으로 지정할수도있겠지만)

 

즉, 호출하는페이지와 호출되는페이지가

서버상에서 동시에 호출되면 include를 이용해서 1개의 페이지로 구성해서 서버사이드 작업수행후 

브라우저로 전송하게 하시거나

 

페이지가 조건에 따라 혹은 이벤트에 따라 다르게 호출되게 하려면

$.load()와 같은 방법으로 호출할때는 파라미터를 전달해서 

불려지는페이지가 변수들을 인지할수있게 구성을 해주셔야합니다.

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

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

sar
5년 전

조언주신분들 정말 감사드립니다! 제가 개념이 어려워 말씀해주신것들 차근히 살펴보고 문제 파악해보고 오겠습니다 감사합니다ㅠㅠ..

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

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

5년 전

con화일에서

</strong></p>

<p><span class="token keyword keyword-if">if</span><span class="token punctuation">(</span><span class="token variable">$member</span><span class="token punctuation">[</span><span class="token single-quoted-string string">'mb_id'</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token variable">$mb</span><span class="token punctuation">[</span><span class="token single-quoted-string string">'mb_id'</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></p>

<p><strong>

<---이 코드에서

</strong><span class="token variable">$mb</span><span class="token punctuation">[</span><span class="token single-quoted-string string">'mb_id'</span><span class="token punctuation">] </span><strong>
값을 어디서 구해오는가요?

이 값이 없으니 include와 다르게 나오는 것이 아닌지 확인해보세요

 

화일 하단에 echo 'con111111111111111111';<--이걸 넣어서 잘 나오는지 확인도 해보세요

 

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

답변에 대한 댓글 1개

s
sar
5년 전
넵 해당 부분 포함되어있습니다. 하단에 echo도 제대로 출력되네요..

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

con1.php 에서 출력하는 부분이 없는데요?

혹시 con1.php 에서 세팅된 php 변수를 불러온 페이지에서 사용하시려는 거면 불가능합니다.

php 는 서버에서 모두 실행되고 난뒤 해당 결과값만 브라우저에 html 이나 json등의 문자열을 송신하는거거든요.

제가 말한게 맞다면 con1.php 에서는 계산된 값을 json 과 같은 형태로 출력을 해주시고 호출한 페이지에서 객체로 받아서 javascript 로 프로그래밍 하셔야 합니다.

jQuery 에서는 $.ajax 의 콜백함수로 이 작업을 할 수 있습니다.

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

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

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

로그인