for문에서는 셀렉트박스 속성값이 안넘어가나요?? ㅠㅠ > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

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문 안에서는 안되는건가요???? ㅠㅠ

댓글 전체

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>

이런식으로 하시면 될듯 하네요
$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;
 }

이넘 아래 있는 함수도 위와 동일한 방법으로 적용하면 됩니다..
전체 54 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT