for문에서는 셀렉트박스 속성값이 안넘어가나요?? ㅠㅠ 정보
for문에서는 셀렉트박스 속성값이 안넘어가나요?? ㅠㅠ본문
$SQL = "select * from table";
$Rs = mysql_query($SQL);
$TotalCount = mysql_num_rows($Rs);
for($i=0;$i<10;$i++) {
if ($i < $TotalCount) {
$id = mysql_result($Rs, $i, "id");
$exam_pay= mysql_result($Rs, $i, "exam_pay");
}
<form name="formTop" method="post">
<td>
<select name="exam_pay" onChange="SetStatus()">
<option value="1" <? if($exam_pay == '1') echo "selected"; ?>>미납</option>
<option value="2" <? if($exam_pay == '2') echo "selected"; ?>>입금</option>
</select>
</td>
</tr>
<script language="javascript">
function SetStatus() {
MyIFrame.document.location = "_set_pay.php?id=<?=$id?>&exam_pay=" + formTop.exam_pay.options[formTop.exam_pay.selectedIndex].value;
}
</script>
</form>
<?
}
mysql_free_result($Rs);
?>
그누보드 질문은 아니지만 프로그램하다가 막혀서 이렇게 질문을 합니다 ^^;;
for문을 지우고 <form> ~ </form>까지만 실행시키면 제대로 값이 넘어갑니다.
근데 for문안에 넣고 실행시키면 formTop.exam_pay.options' is null or not an object
오류가 발생합니다.
for문 안에서는 안되는건가요???? ㅠㅠ
$Rs = mysql_query($SQL);
$TotalCount = mysql_num_rows($Rs);
for($i=0;$i<10;$i++) {
if ($i < $TotalCount) {
$id = mysql_result($Rs, $i, "id");
$exam_pay= mysql_result($Rs, $i, "exam_pay");
}
<form name="formTop" method="post">
<td>
<select name="exam_pay" onChange="SetStatus()">
<option value="1" <? if($exam_pay == '1') echo "selected"; ?>>미납</option>
<option value="2" <? if($exam_pay == '2') echo "selected"; ?>>입금</option>
</select>
</td>
</tr>
<script language="javascript">
function SetStatus() {
MyIFrame.document.location = "_set_pay.php?id=<?=$id?>&exam_pay=" + formTop.exam_pay.options[formTop.exam_pay.selectedIndex].value;
}
</script>
</form>
<?
}
mysql_free_result($Rs);
?>
그누보드 질문은 아니지만 프로그램하다가 막혀서 이렇게 질문을 합니다 ^^;;
for문을 지우고 <form> ~ </form>까지만 실행시키면 제대로 값이 넘어갑니다.
근데 for문안에 넣고 실행시키면 formTop.exam_pay.options' is null or not an object
오류가 발생합니다.
for문 안에서는 안되는건가요???? ㅠㅠ
댓글 전체

for 문안에 form 이 연속적으로 들어가고 있네요.
for() 밖으로 <form> 과 </form> 을 빼주시고
<select name="exam_pay" onChange="SetStatus()">
<option value="1" <? if($exam_pay == '1') echo "selected"; ?>>미납</option>
<option value="2" <? if($exam_pay == '2') echo "selected"; ?>>입금</option>
</select>
를
<select name="exam_pay[]" onChange="SetStatus(this.value)">
<option value="1" <? if($exam_pay == '1') echo "selected"; ?>>미납</option>
<option value="2" <? if($exam_pay == '2') echo "selected"; ?>>입금</option>
</select>
이렇게
for 문 밖으로 빼낸
<script language="javascript">
function SetStatus() {
MyIFrame.document.location = "_set_pay.php?id=<?=$id?>&exam_pay=" + formTop.exam_pay.options[formTop.exam_pay.selectedIndex].value;
}
</script>
</form>
를
<script language="javascript">
function SetStatus(v) {
MyIFrame.document.location = "_set_pay.php?id=<?=$id?>&exam_pay=" + v.value;
}
</script>
</form>
이런식으로 하시면 될듯 하네요
for() 밖으로 <form> 과 </form> 을 빼주시고
<select name="exam_pay" onChange="SetStatus()">
<option value="1" <? if($exam_pay == '1') echo "selected"; ?>>미납</option>
<option value="2" <? if($exam_pay == '2') echo "selected"; ?>>입금</option>
</select>
를
<select name="exam_pay[]" onChange="SetStatus(this.value)">
<option value="1" <? if($exam_pay == '1') echo "selected"; ?>>미납</option>
<option value="2" <? if($exam_pay == '2') echo "selected"; ?>>입금</option>
</select>
이렇게
for 문 밖으로 빼낸
<script language="javascript">
function SetStatus() {
MyIFrame.document.location = "_set_pay.php?id=<?=$id?>&exam_pay=" + formTop.exam_pay.options[formTop.exam_pay.selectedIndex].value;
}
</script>
</form>
를
<script language="javascript">
function SetStatus(v) {
MyIFrame.document.location = "_set_pay.php?id=<?=$id?>&exam_pay=" + v.value;
}
</script>
</form>
이런식으로 하시면 될듯 하네요
$i = 0;
for($i=0;$i<10;$i++) {
if ($i < $TotalCount) {
$id = mysql_result($Rs, $i, "id");
$exam_pay= mysql_result($Rs, $i, "exam_pay");
}
위 문법을 보세요..
기본 문법에 대해 개념부터 잡으셔야겠네요
위의 코드 내용으로 봐선 각 아이디에 대해 무언가 작업을 하려고 하는거 같은데...
질의한 내용은 몇개의 데이터가 추출될지 모르지만
위의 루프를 실행하고 나오게 되면
$id 와 $exam_pay 의 값은 마지막 값을 갖게 됩니다...
루프속에서 $id 와 $exam_pay 의 값은 다음 루프에 의해 들어오는 값으로 앞에 입력된 값들은
모두 덮어 새로운 뒤의 값이 되는 거죠...
위와 같이 처리하고 싶으시다면 배열을 사용하세요
$id[$i] = mysql_result($Rs, $i, "id");
$exam_pay[$i]= mysql_result($Rs, $i, "exam_pay");
그리고
for($i=0;$i<10;$i++) {
$sel_exampay1 = $sel_exampay1 = "";
if ($i < $TotalCount)
{
if($exam_pay == '1') $sel_exampay1 = "selected";
if($exam_pay == '2') $sel_exampay2 = "selected";
echo "
<select name='exam_pay' onChange='SetStatus(\"$id[$i]\", this.value)'>
<option value='1' $sel_exampay1>미납</option>
<option value='2' $sel_exampay1>입금</option>
</select> ";
}
}
이와 같은 방법으로 구현하면 되겠네요
아래 자바스크립트 함수쪽에도 위에서 $id를 배열 처리 헸으니까
function SetStatus(id, val) {
MyIFrame.document.location = "_set_pay.php?id="+id+"&exam_pay=" + val;
}
이넘 아래 있는 함수도 위와 동일한 방법으로 적용하면 됩니다..
for($i=0;$i<10;$i++) {
if ($i < $TotalCount) {
$id = mysql_result($Rs, $i, "id");
$exam_pay= mysql_result($Rs, $i, "exam_pay");
}
위 문법을 보세요..
기본 문법에 대해 개념부터 잡으셔야겠네요
위의 코드 내용으로 봐선 각 아이디에 대해 무언가 작업을 하려고 하는거 같은데...
질의한 내용은 몇개의 데이터가 추출될지 모르지만
위의 루프를 실행하고 나오게 되면
$id 와 $exam_pay 의 값은 마지막 값을 갖게 됩니다...
루프속에서 $id 와 $exam_pay 의 값은 다음 루프에 의해 들어오는 값으로 앞에 입력된 값들은
모두 덮어 새로운 뒤의 값이 되는 거죠...
위와 같이 처리하고 싶으시다면 배열을 사용하세요
$id[$i] = mysql_result($Rs, $i, "id");
$exam_pay[$i]= mysql_result($Rs, $i, "exam_pay");
그리고
for($i=0;$i<10;$i++) {
$sel_exampay1 = $sel_exampay1 = "";
if ($i < $TotalCount)
{
if($exam_pay == '1') $sel_exampay1 = "selected";
if($exam_pay == '2') $sel_exampay2 = "selected";
echo "
<select name='exam_pay' onChange='SetStatus(\"$id[$i]\", this.value)'>
<option value='1' $sel_exampay1>미납</option>
<option value='2' $sel_exampay1>입금</option>
</select> ";
}
}
이와 같은 방법으로 구현하면 되겠네요
아래 자바스크립트 함수쪽에도 위에서 $id를 배열 처리 헸으니까
function SetStatus(id, val) {
MyIFrame.document.location = "_set_pay.php?id="+id+"&exam_pay=" + val;
}
이넘 아래 있는 함수도 위와 동일한 방법으로 적용하면 됩니다..
많이 헤매고 있었는데 감사합니다. ID부분도 덕분에 잘 해결되었습니다 ^^