자식창에서 부모창으로 입력값 전달할때 문제입니다.

kimyh의 이미지

다음은 3단계 주소 자동 입력 소스 입니다.
부모창(add_form.php) 을 열고 자식창 (addressSearch.php)에서
주소를 select box에서자동 선택하고 입력값을 부모창으로 넘기면
자식창은 닫히는데 새롭게뜬 부모창에만 입력폼값이 전달되고 기존 부모창에는 입력폼이 않나옵니다.
기존 부모창에 입력폼 값이 나오고 새로운 부모창이 닫히든가 그렇지 않으면 기존 부무창을 닫고 새로운 부모창만 남게 하면 되는데요.
고수님들 도와주세요.

홈피를 참조해 주세요.
http://www.budongsan.md/board/add_form.php

수정본 소스(3단계 주소 자동 입력 소스입니다.;

<?php
@extract($HTTP_GET_VARS);
@extract($HTTP_POST_VARS);

$dbcon=mysql_connect("fffff","qqqq","wwww");
mysql_select_db("ssss",$dbcon);

$table="t_List";

?>
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> 3단계 자동 Select 박스 </title>

<script>

<!--

function submit_form() {
f = document.usedform;

if (f.address1.selectedIndex == 0) { alert("서울,도,직할시를 선택하십시오."); f.address1.focus(); return }
if (f.address2.selectedIndex == 0) { alert("시,구,군를 선택하십시오."); f.address2.focus(); return }
if (f.address3.selectedIndex == 0) { alert("읍,면,동을 선택하십시오."); f.address3.focus(); return }
document.usedform.submit();
self.close();
}
function change_address2() {
f = document.usedform;
//소분류 초기화
for (i = f.address3.length; i > -1; i--)

f.address3.options[i] = null;

f.address3.options[0] = new Option("-읍,면,동-",0);

//소분류 생성
ndxMaker = f.address2.selectedIndex-1;
if(ndxMaker > -1){
for (i = 1; i < arr[ndxMaker].length; i++) {

strValue = arr[ndxMaker][i];
f.address3.options[f.address3.length] = new Option(strValue,strValue);
}
}
f.address3.selectedIndex=0;
}

function selsetting() {

f = document.usedform;

//중분류 생성
if (arr.length > 0) {
for (i = 0; i < arr.length; i++) {

f.address2.options[f.address2.length] = new Option(arr[i][0],arr[i][0]);
}
}
f.address2.selectedIndex=0;
f.address3.selectedIndex=0;
}

function change_address1() {

f = document.usedform;

//소분류 초기화
for (i = f.address3.length; i > -1; i--)

f.address3.options[i] = null;

f.address3.options[0] = new Option("-읍,면,동-",0);

//중분류 초기화
for (i = f.address2.length; i > -1; i--)

f.address2.options[i] = null;

f.address2.options[0] = new Option("-시,구,군-",0);

//-------------------------------------------------------- 데이터베이스 자료로 분류 생성

if(f.address1.selectedIndex==0){

arr=new Array();
}

<?php
@extract($HTTP_GET_VARS);
@extract($HTTP_POST_VARS);

$select1 = "select group1 from $table where num = '1' order by group1 asc";
$result1 = mysql_query($select1,$dbcon);
$i = 1;

while ($row1 = mysql_fetch_row($result1)) {

print "if (f.address1.selectedIndex == $i) { \n";
print "arr=new Array(); \n";

$select2 = "select group2 from $table where num = '2' and group1 = '$row1[0]'".
"order by group2 asc";
$result2 = mysql_query($select2,$dbcon);

$j = 0;

while ($row2 = mysql_fetch_row($result2)) {

print "arr[$j]=new Array(); \n";
print "arr[$j][0]='$row2[0]'; \n";

$select3 = "select group3 from $table where num = '3' and group1 = '$row1[0]' ".
"and group2 = '$row2[0]' order by group3 asc";
$result3 = mysql_query($select3,$dbcon);

$k = 1;

while($row3 = mysql_fetch_row($result3)) {

print "arr[$j][$k]= '$row3[0]'; \n";

$k++;
}
$j++;
}

print "} \n ";
$i++;

}

mysql_free_result($result1);
mysql_free_result($result2);
mysql_free_result($result3);

?>

//----------------------------------------------------------------------------------------------
selsetting();
}
//-->
</script>
</head>

<body bgcolor=#FFFFFF>

<!--자동 select 박스 -->
<center>

<form name=usedform method=post action="../add_form.php" target="windows_parent">

<select name=address1 size=1 onChange='change_address1()'>

<option selected>-서울,도,직할시-</option>
<?php
$pre_address = mysql_query("select distinct group1 from $table where num='1' order by group1 asc",$dbcon);
while($row = mysql_fetch_row($pre_address)) {
print "<option value='$row[0]'>$row[0]</option>\n";
}
mysql_free_result($pre_address);

?>
</select>
<font color=#336699>▶</font>
<select name=address2 size=1 onChange='change_address2()'>

$address2 = address2
<option>-시,구,군-</option>       
</select>

<font color=#336699>▶</font>

<select name=address3 size=1>
<option>-읍,면,동-</option>       
</select><br><p>

입력하신 부동산 주소가 정확합니까?<br><p>

<input type="button" value="위와같은 주소를 입력합니다." onClick='submit_form()'>

</form>
</center>
<!-- 엔드 -->
</body>
</html>
<?php
mysql_close($dbcon);
?>
 09/26 

홈피를 참조해 주세요.
http://www.budongsan.md/board/add_form.php
ssehoony의 이미지

문제 해결을 크게 잘 못 하셨네요.

일단 부모 -> 자식 -> 손자
이런구조이지요.

부모 -> 자식 -> 다른부모
이런구조가 아닙니다.
자식에서 부모창을 자바스크립트로 수정할때는
opener 라는 오브젝트를 사용해서 합니다.
form 을 이용해 submit 하는게 아니지요.
다른 사이트의 id 중복 확인 같은거 어떻게 하는지 확인해 보세요.

그리고 이런 자료는 http://phpschool.com 에서 검색하시면
자료가 많이 있을 겁니다.

kimyh의 이미지

감사합니다.
저도 말씀 하시게 맞다고 생각 합니다.
그래서 오늘 내내 phpschool 질답 게시판에서 씨름하고 이곳에 왔습니다.
부모창을 자바스크립트로 열려고 수도없이 수정도 해 봤는데 어느부분을 고처야 할지를 모르겠군요.
form 을 이용해 submit 하는부분 전체를 바꿔야 하나요.
고견 듣고 싶습니다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

카二리의 이미지

코드가 너무 보기 복잡하네요-.,-

만약 X라는 윈도우에서 -> 새로 Y 윈도우를 오픈한후 -> 원래 X 윈도우의 field로
값을 넘기시려는 거라면, 새로연 Y 윈도우에서 opener 라는 object가 X윈도우의 window 값을 가르킵니다.

그리하야 Y 윈도우에서 opener.document.getElementById('아이디'); 정도를 해서 가져온 element의 value에 X윈도우의 필드에서 가져온 value를 넣어주시면 되겠죠

=3 =33

새 생각 :)

kimyh의 이미지

오늘 꼭박 하루를 phpschool질답 게시판에서 헤매도 않되 이곳에 다시 왔습니다.
제가 워낙 초보인데다 오기(?) 하나는 대단해 꼭 끝장을 보고야 말겠습니다.

아예처음부터 다시 질문을 드릴가 합니다. 선배님들에겐 별로 일것 같은데요.

문제는 자식창(팝업창)에서 자바스크립트로 셀렉트박스의 선택된값을 부모창에 보내주어야 하는데 post나 get 형태의 form으로 보내주려한데 있는것 같습니다.

그래서 소스중 <!--자동 select 박스 --> 이부분이하를 자바스크립트 형태로 바꿀려고 모든검색을 다해봤으나 도무지 이해를 할수가 없습니다.

현재는 홈피를 클리해보시면 아시다 시피 부모창하고 새로운 창이 하나더 떠서 창이 2개가 되는데 기존 부모창에는 자식창에서 선택된 값이 들어가지를 않고 새롭게 든 창에만 셀렉트 박스 값이 들어가 있습니다.

저는 이것을 반대로 기존 부모창에 셀렉트 박스의 선택된 값이 들어가고 자식창은 닫히면서 새로운창도 열리지 않게 하고자 하는것입니다.

참고로 관련부분의 소스를 올려드립니다.

홈피 참조; http://www.budongsan.md/board/add_form.php

부모창 관련부분;

function addressSearch(url){
	remote = window.open(url,"remote","width=500 ,height=140,resizable=0,scrollbars=yes")
	remote.winbrowser = self
} 


            <td colspan="3" bgcolor="#E8E8E8"> 
              <input type="text" name="address1" value="<?echo("$address1")?>" size="10" maxlength="15" class=form onkeypress="onlynumber();">
              -&nbsp; 
              <input type="text" name="address2" value="<?echo("$address2")?>" size="7" maxlength="15" class=form onkeypress="onlynumber();">
              -&nbsp; 
              <input type="text" name="address3" value="<?echo("$address3")?>" size="7" maxlength="15" class=form onkeypress="onlynumber();">
              -&nbsp; 
              <input type="text" name="addressadd" size="15" maxlength="10" class=form onkeypress="onlynumber();">
              &nbsp; <font size=2> <a href="javascript:addressSearch('autoselect/addressAuto.php')"><img src="img/zipnaddr.gif" align="absmiddle" border="0"></a> 
  
              </font>
              </td>

자식창 관련부분;

<script>

<!--
function addressSearch() {
	 f = document.usedform;

	 if (f.address1.selectedIndex == 0) { alert("서울,도,직할시를 선택하십시오."); f.address1.focus(); return }
	 if (f.address2.selectedIndex == 0) { alert("시,구,군를 선택하십시오."); f.address2.focus(); return }
	 if (f.address3.selectedIndex == 0) { alert("읍,면,동을 선택하십시오."); f.address3.focus(); return }


	 document.usedform.submit();
        self.close();

}
~~~~~~~~~~~
중략
~~~~~~~~~~~
<!--자동 select 박스  -->
<center>
   <form name=usedform method=post action="../add_form.php" target="windows_self">
		<select name=address1 size=1 onChange='change_address1()'>

	  		<option selected>-서울,도,직할시-</option>
<?php
$pre_address = mysql_query("select distinct group1 from $table where num='1' order by group1 asc",$dbcon);
while($row = mysql_fetch_row($pre_address)) {
    print "<option value='$row[0]'>$row[0]</option>\n";
}
mysql_free_result($pre_address);

?>
			</select>
	<font color=#336699>▶</font>
		<select name=address2 size=1 onChange='change_address2()'>

$address2 = address2
			<option>-시,구,군-</option>       
			</select>

		<font color=#336699>▶</font>

		<select name=address3 size=1>
			<option>-읍,면,동-</option>       
			</select><br><p>

        입력하신 부동산 주소가 정확합니까?<br><p>

<a href="javascript:addressSearch('../add_form.php')"><img src="/board/img/zipnaddr.gif" align="absmiddle" border="0"></a> 
</form>

</center>
<!-- 엔드 -->
</body>
</html>
<?php
mysql_close($dbcon);
?>

기타 전체의 소스는 앞에 내용을 참조해 주세요.
일부는 금일 수정을 해서 바뀐부분도 있슴니다.

홈피 참조; http://www.budongsan.md/board/add_form.php

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

kimyh의 이미지

해결 되어서 지울려다 저처럼 혹시 같은문제로 며칠씩 고생하신분들이 있을지 몰라
내용을 잠간 언급 합니다.
자식창에서 부모창으로 셀렉트된 값을 넘길때
반드시 자바스크립트로만 넘겨야 하는건 아니더군요
sumit방식으로 넘겨도 됩니다.

먼저
부모창에<script>window.name="main"</script> 라고 정의하고
자식창에는 target을 target="main"
이라고 하면 자식창의 모든값을 부모창에 복잡한 자바가 아니고도 서브밋 으로 넘겨지더군요.
새로운 다른 부모창도 않뜨고요.
참조 : 홈피 ; http://www.budongsan.md/board/add_form.php

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.