2015-01-17 5 views
0

데이터베이스에서 데이터를 가져와 Javascript의 배열에 넣으려고했으나 Javascript가 PHP 명령 영역에서 작동하지 않습니다.PHP에서 자바 스크립트 배열

전체 PHP 코드는 다음과 같습니다.

<?php 
    mysql_connect("mysql.metropolia.fi","localhost","") or die("ERROR!!"); 
    mysql_select_db("localhost") or die("COULDN'T FIND IT!!") or die("COULDN'T FIND DB"); 


    $sql = mysql_query("SELECT * FROM METEKSAN_HABER_CUBUGU"); 

    $haber = 'haber'; 
    $list = array(); 
    $i=0; 

    while($rows = mysql_fetch_assoc($sql)){ 

     $list[] = $rows[$haber]; 
     $i++; 
    } 

    echo $i; 
    echo '<script type="text/javascript"> 
      var yazi=new Array();'; 
    echo $i; 

    for ($k = 0 ; $k < $i ; $k++){ 

     echo 'yazi['.$k.']="<a href="duyuru.php">'.$list[$k].'</a>'; 

    } 
    echo '</script>'; 
?> 

하지만 언제입니까?

echo '<script type="text/javascript"> 
     var yazi=new Array();'; 

이 명령 줄은 문제가 시작됩니다. 그 명령 뒤에 'echo $i;'이라고 쓰지 만 화면에는 아무것도 표시되지 않지만 그 명령 앞에 쓰면 결과가 나옵니다. 즉, 명령 전에 모든 것이 잘 작동 함을 의미합니다. 문제에 대해 어떻게 생각하세요? 왜 Javascript 명령을 시작할 수 없습니까? 내가 뭔가 잘못 쓰고 있니? 제발 도와주세요.

감사합니다.

업데이트;

웹 소스를 열었을 때 문제가있는 것 같습니다. 그래서 쓸 수있는 방법을 물어 보는 것이 더 낫다고 생각합니다.

<script type="text/javascript"> 
       /*Example message arrays for the two demo scrollers*/ 

       var yazi=new Array() 
       yazi[0]='<a href="duyuru.php">METEKSAN Savunma, Yeni Dönemin Örnek Oyuncusu Olmaya Hazır</a>' 
       yazi[1]='<a href="duyuru.php">METEKSAN Savunma Bloomberg TVde</a>' 
</script> 

PHP에서이 자바 스크립트 코드 ??

당신은 당신이 당신의 브라우저에서 현재 그것을 실행하는 것이

while($rows = mysql_fetch_assoc($sql)){ 
    $list[] = '<a href="duyuru.php">'.$rows[$haber].'</a>'; 
} 
$js_array = json_encode($list); 
echo "<script>var yazi = ". $js_array . ";</script>"; 
+0

아마도'script' 태그를 닫는 것을 잊었을까요? – webNeat

+1

화면에 아무것도 표시되지 않는다고 말하면됩니다. 아마도 HTML로보고 있기 때문에 '

2

에서 내 출력을 볼 수 있습니까? 그런 다음 브라우저가 JS 코드로 출력을 실행하려고하므로 페이지 소스를 열 때 두 번째 출력을 찾아야합니다. cli에서 실행하면 모든 것이 예상대로 작동합니다.

의견에 따라 수정 : 나는 분명히 전에 썼다. 현재 html의 122 행을 보면 인용 부호에 문제가 있음을 알 수 있습니다. 다음을 시도하십시오.

for ($k = 0 ; $k < $i ; $k++){ 
    echo 'yazi['.$k.']=\'<a href="duyuru.php">'.$list[$k].'</a>\';'; 
} 

결국이 종류의 js 렌더링을 사용하지 않아야합니다. 제레미의 제안은 json_encode 올바른 방법입니다.

.... 
$list = array() 
while($rows = mysql_fetch_assoc($sql)) { 
    $list[] = $rows[$haber]; 
} 

echo '<script type="text/javascript">' . "\n"; 

echo 'var yazi='; 

echo json_encode($list,JSON_HEX_APOS | JSON_HEX_QUOT); 
echo ";\n"; 

echo '</script>' . "\n"; 

이 무엇을하고 있는지 :

+0

정답입니다. –

+0

정말 유감 스럽지만 코드에이 대답을 적용 할 수없고 어디에 넣을 지 모릅니다. 도와 주 시겠어요? @EdCottrell – Burak

+0

정말 유감 스럽지만 코드에이 대답을 적용 할 수없고 어디에 넣을 지 모릅니다. 제발 도와주세요. @jeremycastelli – Burak

1

당신은 훨씬 더 컴팩트 한 코드가있을 수

  1. $의 난에 추가 된 요소를 계산 할 필요가 없습니다를 계산 ($ 배열) 당신에게 줄 것이다 cutrrent 번호.하지만 어쨌든 그것은 필요하지 않습니다.
  2. 에코 뒤에 몇 줄 바꿈을 추가하면 소스 코드를 더 잘 읽을 수 있습니다.
  3. json_encode은 소스 코드로 직접 사용할 수있는 PHP 배열에서 JSON 배열을 포맷합니다.