나직한 문의.....

나직한 문의.....

QA

나직한 문의.....

본문

var match_cnt = <?php echo $match_student?>;

 

for (i=0;i<student_cnt ;i++ ) {

var new_row1 = "<tr class='new_row'><th><b>*</b> </th><td> <input type='text' name='student[]' class='required' value='<?=strip_tags($match_student[1][$i])?>' >

생략

 

 

위 스크립트에서

 

<?=strip_tags($match_student[1][$i])?>' $i는 안나오고

이렇게 <?=strip_tags($match_student[1][3])?>' 직접 숫자를 넣어서 하면 나오는데

어떻게 해야 할까요?

 

여기까지는 했습니다.

 

<?php
$list = array($match_student[1]);
?>

 

<script>
$(document).ready(function () {

 

 

for (i=0;i<student_cnt ;i++ ) {

 

var arr1 = <?php echo  json_encode($list);?> ;

var row = "<input value='"+ arr1 +" > html코드 생략" ;

이렇게 하니

 

20,51,90,10,527,1

이렇게 함께 나와버립니다.

i값에 해당하는게 각각나와야 하는데요,,

 

value='"+ arr1 +" 이부분을 

어떻게 해야 할지...

value='"+ arr1[i] +" 이렇게해도 안되구요,

이 질문에 댓글 쓰기 :

답변 4

 
  if((student_cnt-1)/img_cnt >2.5) {

       console.log( arr[i] );

  }

  위와 같이 출력해 보구 개발자 창 콘솔을 확인해 보세요 

 콘솔에 원하는대로 증가된 값이 나와야 되는데 그러지 못한다면

 이프문이 잘못되었을 수도 있습니다

  

 

 

 

 

코드 짤때 도움이 될만한 몇가지를 적어봅니다

[1]. 우선 코드 분리를 하세요

    자바 스크립트와 PHP 소스를 섞어서 쓰다 보면 프로그래밍 하는 사람이나 혹은 이를 보는 사람 둘다

    헷갈릴 수 있습니다  

    전에도 살짝 얘기해 드린듯 한데 섞어서 한꺼번에 비빔밥 버무리듯 하면 맛은 있을지 몰라도

    눈에 보이는 아름다움이 많이 상쇄 됩니다

 

     되도록 소스 코드를 분리하세요

    ( 되도록이라고 쓰지만 필히 분리하는게 좋습니다 php코드와 자바스크립트가 섞인 코드가 1만줄 이상이라면... )

 

     예 )

-------------------------------------------------------------------

<script>

     for(var i=0; i < <?php echo $total_cnt;?>; i++){

          alert(i); // 알러트 출력

    }

</script>

-------------------------------------------------------------------

    위의 소스는 그리 좋지 않습니다

 

    아래와 같이 php 코드를 먼저 변수로 정의하고 그 다음 자바 스크립트만으로 소스를 짜는게 좋습니다

-------------------------------------------------------------------

<script>

// 상단에 php활요한 변수 기재  그 이후 자바스크립트 코딩

    var total_cnt = '<?php echo $total_cnt;?>';

    for(var i=0; i < total_cnt; i++){

          alert(i); // 알러트 출력

    }

</script>

 

또는

<script>

// 일부 php코드가 들어가서 페이지의 자바스크립트 제일 상단에 일반 변수로 기재

    var total_cnt = '<?php echo $total_cnt;?>';

</script>

<script>

// 자바스크립트 코드만으로 완전 분리 (  js 파일로 따로 만들어 이곳 혹은 다른 곳에서도 재활용 가능 )

    for(var i=0; i < total_cnt; i++){

          alert(i); // 알러트 출력

    }

</script>

 

--------------------------------------------------------------------

    위와 같이 분리를 하는 이유는 자바스크립트 만으로 코드가 이뤄졌다면 가독성이 좀 더 원할할 뿐더러

    상황에 따라 자바스크립트만을 따로 똑 떼어서 js 파일로 만들어 연결 시킬수 있기 때문입니다

    재활용성이  높아집니다

    php와 뒤섞여 있을때 간혹 php코드를 자바스크립트 코드로 착각하고 증가 시키거나 호출하거나

    그 반대로 호출하거나 증가 시키거나 하는 실수를 범합니다

 

[ 2]. 배열을 활용해 보세요

    for문등으로 어떠한 대상을 반복해서 사용해야 한다면 배열 활용이 크게 도움이 됩니다

    예 )

    var result_array = [20,51,90,10,527,1];

    var total_cnt  = result_array.length; // 위의 배열 갯수

    for( var i=0;  i < total_cnt; i++ ){

             alert ( result_array[i] ); // 포문을 돌면서 배열 하나씩 출력

    }

     

[3].  for문 안에 있는 증가 변수  ( 2번의 예에서는 ===>   var i   )  에만 의존하지 마시구

    상황에 따라서는 다른 변수를 지정 증가 혹은 감소를 상황에 따라 제어를 해야 합니다

    즉 i 는 증가하구 다른 변수를 넣어서 상황 제어용으로 써야 합니다

 

    예 )  배열에 들어간 숫자가 짝수인 것의 전체 갯수는 ?

    var j=0; // 짝수인것에 체크하는 증가 변수

    for( var i=0;  i < total_cnt; i++ ){

             if(result_array[i] % 2 == 0){  // 들어온 배열이 짝수라면

                  alert ( result_array[i] );   // 포문을 돌면서 배열 하나씩 출력

                  j++; //  들어온 배열이 짝수가 전체 몇개 인지 확인용 변수

            }

    }

 

    출력

    alert(j);   => 배열에 들어간 숫자가 짝수인 것의 전체 갯수

 

 

 

 

 

<?php echo  json_encode($list);?> 

1.정확히 위의 값이 어떻게 출력되나요 

 

2.  결과 값이 value='20'   value='51'   value='90' ...  이와 같이 출력 되어야 하나요

     정확히 출력되어야 할 자바스크립트 소스를 PHP코드 없이 작성해 주세요 

   되도록 출력 완료형으로  이렇게 이렇게 출력되어야 합니다 하구 화살표로 자리매김 해서 알려주세요

 

   예 ) 

 

            var arr1 = ['20,51,90,10,527,1' ];

            for(var i=0;  i < student_cnt ; i++ ) {

                   var arr1   = arr1[i];   //  ===================> 아래 변수에 들어가는 값

                   var row   = "<input value='"+ arr1 +" >";

            }

   

 

 

 

 

이거 어려운거 같은데 여기까지 왔습니다. 난데없는 제이슨코드까지 찾아서 배운거 같구요,ㅋ

2.  결과 값이 value='20'  value='51'  value='90' ...맞습니다. 그렇게 출력되어야 합니다.

알려주신  var arr1  = arr1[i];  변수에 들어가는 걸 정의해도

순차적으로 증가하지 않고 아마 [0]번 값만 반복되버리는 상황입니다.

var arr = <?php echo  json_encode($list);?> ;
console.log(arr);
console.log(arr[3]);
찍어보면 전체도 한개도 잘나옵니다. 이제
for (var i = 0; i < arr.length; i++) {

  if((student_cnt-1)/img_cnt >2.5) {

 var new_row1 = "<tr><th><b>*</b> </th><td> <input type='text' name='same_student[]' value='"+ arr[i] + "' '></td>
이렇게 + arr[i] + 하면 문제가 있고 value='"+ arr[3] + "' 숫자를 직접해보면 해당 3번째가 잘나오고 이유를 모르겠습니다.

의심스러운건
스크립트 실행시키기 전에
tr을 몇개 생성할지 자동으로 정하도록 했는데
3개라면

3개의 tr이 생성되면서

  var new_row1 = "<tr><th><b>*</b> </th><td> <input type='text' name='same_student[]' value='"+ arr[i] + "' '></td>  이게

  $(".old_row1").replaceWith(new_row1); 으로 replace되어서

동시에 3개가 들어가니 i값이 증가되지 않고 arr[0]번값만 반복되는건지...뭔지...초보라 감이 오지 않습니다. 흑흑

참고로 표 3개 생성되면
replace되지 않은 부분에 <?=$k?>를 넣어봤더니 이건 순차적으로 0. 1. 2 잘 나옵니다.
replace되는 부분에 <?=$k?>넣어보니 0, 0, 0 이라고 바뀌지 않는 현상입니다.
왜 내 스크립트만 안될까요,,ㅡㅜㅜ
0,1,2 ,,이렇게 php는 잘나오는거는 php실행되면서 0,1,2 나오는것이며
이후 replace스크립트가 실행되어 그런거 아닌가 싶구요,,,생각해보니
결론은 생성되는 tr사이즈를 읽어서 순차적으로 i값을 뿌려줘야 할거 같습니다. 그렇지만 코드가 ㅎ..

말씀하신 부분이 자바스크립트 반복문으로 php 배열 변수를 접근하려는 모양이신데

그 부분이 잘못되신거 같습니다..


var match_cnt = <?php echo $match_student?>;
 
for (i=0;i<student_cnt ;i++ ) {
var new_row1 = "<tr class='new_row'><th><b>*</b> </th><td> <input type='text' name='student[]' class='required' value='<?=strip_tags($match_student[1][$i])?>' >
생략

php코드가 자바스크립트 코드 보다 먼저 수행하고 그 다음에 자바스크립트 코드가 수행하기 때문에

안되는 겁니다.

$match_student 이 값을 javascript 배열로 담아서 출력을 하시든 아니면

php코드로 다 짜셔서 하시든 하셔야 할거 같아요^^;

tmp = "<?=implode(',' , $match_student[1])?>".split(',');

for (i=0;i< tmp.length; i++ ) {

 new_row1 ="~~~~value='"+tmp[i]+"'>";

구조적인 문제요?
print_r($match_student); 를 코드 맨 위에 넣어서 배열이 어떻게 생겨 먹은 것인지 나오는 결과를 올려보세요
질문으로 보아 $match_student[1][0]= 20; $match_student[1][1]= 51; ~~~이렇게 된 것으로 보이는데 아닌가봐요?

답변을 작성하시기 전에 로그인 해주세요.
전체 80
QA 내용 검색

회원로그인

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