2014-07-07 41 views
-2

我試圖動態輸出一個帶有數據庫的菜單樹。代碼似乎沒有記錄JavaScript函數或正確寫入。有人有想法嗎?使用PHP嵌入JavaScript函數

<? php 
echo "<script type='text/javascript' src='dtree.js'></script>"; 

$db = new MyDB(); 

$sql =<<<EOF 
SELECT DISTINCT CATEGORY FROM ITEM; 
EOF; 

$ret = $db->query($sql); 
$i = 1; 
echo "<script type='text/javascript'>";   

    echo "d = new dTree('d');"; 
    echo "d.add(0,-1,'Introduction', 'index.html','','','img/blue.gif');";  
    while($row = $ret->fetchArray(SQLITE3_ASSOC)){ 
     echo "d.add(" . $i . ", 0, '" . $row['CATEGORY'] . "',);"; 
     $i++; 
    } 
echo "document.write(d);"; 

echo "</script>"; 
$db->close(); 

echo "Operation done successfully\n"; 

?> 
+2

什麼是實際寫入瀏覽器? –

+2

輸出是什麼?那是對的嗎?你有任何的JavaScript錯誤?或者,甚至PHP錯誤? – giorgio

+0

只寫入「操作成功」。 沒有javascript或php錯誤。 :/ – L30

回答

0

在你的while循環中,省略了dTree.add按鈕的最後一個參數,檢查第一個行while循環:

while($row = $ret->fetchArray(SQLITE3_ASSOC)){ 
    echo "d.add(" . $i . ", 0, '" . $row['CATEGORY'] . "',);"; 
    $i++; 
} 

您應該刪除逗號(,),或添加一個參數值。所以下面的兩個例子都是正確的。

echo "d.add(" . $i . ", 0, '" . $row['CATEGORY'] . "', '');"; 
echo "d.add(" . $i . ", 0, '" . $row['CATEGORY'] . "');"; 

爲了使它有點更清晰,下面第一行是你的JavaScript的樣子,現在,其他兩個是應輸出有效的JavaScript的例子。

d.add(1, 0, 'A string',); // NOT correct, see the last comma 
d.add(1, 0, 'A string', ''); // correct, by adding an empty string, BUT LOOK IN THE DOCS FOR THE RIGHT PARAMETER TYPE 
d.add(1, 0, 'A string'); // Also correct, no fourth parameter