2013-09-26 3 views
-1

자바 스크립트에 배열 목록이 있습니다. 이 배열은 그의 길이를 바꿀 수 있습니다. 데이터베이스에서 일부 작업을 수행해야하므로 PHP에서 액세스해야합니다. 문제는이 어레이의 길이가 변경 될 수 있다는 것입니다.PHP에서 자바 스크립트 배열로 반복

<html> 
<head> 
</head> 
<body> 
<script type='text/javascript'> 
    var blocks = [ 
    { w: 500, h: 600 }, 
    { w: 300, h: 200 }, 
    { w: 150, h: 150 }, 
    { w: 150, h: 150 }, 
    { w: 200, h: 250 }, 
    { w: 100, h: 250 } 
    ]; 

    order_blocks(blocks); //blocks are ordered and can be added new blocks 

    //Next code is only to test 
    for(var n = 0 ; n < blocks.length ; n++) { 
    var block = blocks[n]; 
    if (block.fit) { 
     var str1 = "Block " + (n+1) + ": (" + block.w + "," + block.h + ")"; 
     document.write(str1); 
    } 
    } 
</script> 
<?php 
    if (!isset($_POST[numblocks])) 
    { 
     echo '<form action="'.$_SERVER[PHP_SELF].'" method=post name=pass> 
        <input type=hidden name=numblocks> 
        <input type=hidden name=block1_w> 
        <input type=hidden name=block1_h> 
      </form>'; 
     echo '<script languaje="JavaScript"> 
        document.pass.numblocks.value=blocks.length; 
        document.pass.block1_w.value=blocks[0].w; 
        document.pass.block1_h.value=blocks[0].h; 
        document.pass.submit(); 
      </script>'; 
    }  
    echo '<br><br>There are '.$_POST["numblocks"].' Blocks<br>'; 
    echo 'Block 1 ('.$_POST["block1_w"].','.$_POST["block1_h"].')<br>'; 
?> 
</body> 
</html> 

과정은 다음과 같습니다 :

  1. 자바 스크립트 :이 코드는 내가 배열 블록을 생성하고 order_blocks을 적용합니다.
  2. PHP : POST 메서드로 JavaScript 변수를 전달합니다.

코드에서 배열의 첫 번째 요소를 올바르게 전달할 수 있지만 배열을 반복해야합니다.

+0

내가 어떤 PHP 코드를 볼 수 없습니다 (적어도에 노력) "배열을 통해 반복하는합니다." – djot

+0

올바른 djot. PHP 블록에서 배열을 반복하는 방법을 모르겠습니다. 내가 잘 표현하지 못하면 미안해. – TuLKaRiS

+0

그럼 내가 도와 드릴까요? http://php.net/manual/en/control-structures.foreach.php – djot

답변

0

이 교체 :이와

echo '<form action="'.$_SERVER[PHP_SELF].'" method=post name=pass> 
       <input type=hidden name=numblocks> 
       <input type=hidden name=block1_w> 
       <input type=hidden name=block1_h> 
     </form>'; 
echo '<script languaje="JavaScript"> 
       document.pass.numblocks.value=blocks.length; 
       document.pass.block1_w.value=blocks[0].w; 
       document.pass.block1_h.value=blocks[0].h; 
       document.pass.submit(); 
     </script>'; 

을 (작동합니다) :

echo '<form action="'.$_SERVER[PHP_SELF].'" method=post name=pass> 
       <input type=hidden name="numblocks"> 
       <input type=hidden name="block1_w[]"> 
       <input type=hidden name="block1_h[]"> 
     </form>'; 
echo '<script language="text/javascript"> 
      for(var i = 0; i < blocks.length; i++) { 
       document.pass.numblocks.value=blocks.length; 
       document.pass.block1_w[i].value=blocks[i].w; 
       document.pass.block1_h[i].value=blocks[i].h; 

      } 
     </script>'; 
+0

감사합니다 mansoulx하지만 그게 assigment을 만들지 마라. document.pass.block1_w [i] .value = blocks [i] .w; – TuLKaRiS