2012-07-31 4 views
0

자바 스크립트 함수에서 PHP로 변수를 전달하는 데 문제가 있습니다. open_boosters는 site3.php에 전달할 배열에서 임의의 변수를 반환합니다. PHP 코드가 먼저 실행된다는 것을 알지만, 사용자가 아무 것도 클릭하지 않고이 변수들을 어떻게 전달할 수 있습니까?변수가 PHP로 전달되지 않습니다.

> Main.html

<p id="generatenumbers"></p> 
<script> 
var open_boosters = function() 
    { 
     var i, j; 
     var array=[]; 

     for(i=0; i < 13; i++) 
     { 
      (array[i] = Math.floor(Math.random()*14)+16); 

       for(j=0;j<i;j++) 
       { 
        while(array[i]==array[j]) 
        { 
         (array[i]= Math.floor(Math.random()*14)+16); 
        } 
       } 
       return array[i]; 
     } 
    } 

window.addEventListener('DOMContentLoaded', function() 
    { 
    var randnumb = open_boosters(); 

    document.getElementById("generatenumbers").innerHTML=open_boosters(); 
    document.getElementById("randImg").src = "site3.php?rndNum"+randnumb; 
    }, false); 
</script> 

site3.php

<?php 
$mysqli=mysqli_connect('localhost','root','','draftdb'); 
if (!$mysqli) 
die("Can't connect to MySQL: ".mysqli_connect_error()); 

$stmt = $mysqli->prepare("SELECT display.PICTURE_ID 
FROM cards 
INNER JOIN display ON cards.DISPLAY_ID = display.DISPLAY_ID 
WHERE display.DISPLAY_ID=? AND cards.CARD_TYPE ='rare'"); 

$displayid = isset($_GET['randnumb'])? $_GET['randnumb'] : false; 

//echo "Number: ".$displayid." "; 
$stmt->bind_param("i", $displayid); 
$stmt->execute(); 
$stmt->bind_result($image); 
$stmt->fetch(); 
//header("Content-Type: image/jpeg"); 
echo $image; 
?> 
+0

Open_boosters를 함수가 아닌 변수로 선언해야합니다. 'function open_boosters() {...}' – Matt

+1

''rndNum' 다음에'='가 누락 되었습니까? ' "site3.php? rndNum"+ randnumb;' – Wiseguy

+1

JS :''site3.php? rndNum = "+ randnumb'. PHP에서 :'isset ($ _ GET [ 'rndNum']? $ _ GET [ 'rndNum'] : false)'. 즉석에서 이미지 'src'를 변경하면 원하는 결과를 얻을 수 있을지 확실하지 않습니다. – Palladium

답변

2

내가 코멘트에 제안 된 대부분의 변화에 ​​의해 다음은이 작업을 얻을 수 :

  • open_boosters() 기능을 확인
  • URL에 대한
  • 사용 같은 randnumb 변수 모두 getElementById 설정 기능을 = 누락
  • 추가는
<p id="generatenumbers"></p> 
<img src="" id="randImg" /> 

<script> 
function open_boosters() 
{ 
    var i, j; 
    var array=[]; 

    for(i=0; i < 13; i++) 
    { 
     (array[i] = Math.floor(Math.random()*14)+16); 
     for(j=0;j<i;j++) 
     { 
      while(array[i]==array[j]) 
      { 
       (array[i]= Math.floor(Math.random()*14)+16); 
      } 
     } 
     return array[i]; 
    } 
} 

window.addEventListener('DOMContentLoaded', function() 
{ 
    var randnumb = open_boosters(); 

    document.getElementById("generatenumbers").innerHTML=randnumb; 
    document.getElementById("randImg").src = "site3.php?rndNum="+randnumb; 
}, false); 

</script> 

난수는 site3.php 스크립트를 사용할 수있게됩니다 $_GET['rndNum'] ($_GET['randnumb'] 아님).

관련 문제