2012-03-11 92 views
0

我正在尋找將php函數包含到php代碼中的可能性。在php中插入javascript代碼

該代碼應該從搜索php文件中獲得結果,然後以Javascript播放列表的形式將其打印出來。

這是JavaScript代碼:

<script type="text/javascript"> 
$(document).ready(function(){ 

var description = ''; 
var myPlaylist = [ { 

    mp3:'./../sounds/mysql-upload', 
    title:'mysql-title', 
    artist:'mysql-artist', 
    subcategory:'mysql-subcategory', 
    date:'mysql-date', 
    rating:'mysql-rating', 
    }, 

    /* var myPlaylist has to repeat */ 

]; 

$('#main').ttwMusicPlayer(myPlaylist, { 
autoPlay:false, 
description:description, } 
); 

}); 
</script> 

這裏是PHP代碼:

<?php 
    if (!empty($_POST['search'])) { 

    /* Connect to database */ 
    $hostname = ''; 
    $database = ''; 
    $username = ''; 
    $password = ''; 
    if (!($mysql_link = mysql_connect($hostname, $username, $password))) { 
    die('Could not connect'); 
    } 

    /* Select databse */ 
    if (!($db_selected = mysql_select_db($database, $mysql_link))) { 
     die('Could not find database'); 
    } 

    /* Send mysql command */ 
    $sql_cmd = "SELECT * FROM sounds WHERE `keywords` LIKE '" 
    . $_POST['search']."%'"; 
    if (!($res = mysql_query($sql_cmd))) { 
     die('Invalid MySQL query'); 
    } 

    /* Show results */ 
    while ($dsatz = mysql_fetch_assoc($res)) { 

    $upload = $dsatz["upload"]; 
    $title = $dsatz["title"]; 
    $artist = $dsatz["artist"]; 
    $subcategory = $dsatz["subcategory"]; 
    $date = $dsatz["date"]; 
    $rating = $dsatz["rating"]; 

    /* Here should be the Javascript code */ 

    } 

    /* Close database connection */ 
    mysql_close($mysql_link); 
    } 
?> 

請注意,我不希望包括在充分JavaScript函數PHP代碼的結果部分,但應重複的播放列表變量。

+0

注意SQL注入。你的''SELECT * FROM聲音WHERE'關鍵字'LIKE'「。 $ _POST ['search']。「%'」'對它開放。看看'mysql_real_escape_string()'。 – 2012-03-11 10:22:11

+0

因爲它是一個循環,變量每次都會得到不同的值,你的意思是你想召喚js函數嗎? – 2012-03-11 10:22:35

+0

不,我只需要js函數就可以在音樂播放器中包含數據庫的結果。 – 2012-03-11 10:43:34

回答

2

在PHP中,你可以做一個數組,並用這些屬性的陣列填充它。 喜歡的東西:

$results = array(); 
while ($dsatz = mysql_fetch_assoc($res)) { 
    $results[]=$dsatz; } 
$printout = json_encode($results); 

我們把它放入JavaScript中,你可以這樣做:

var myPlaylist = <?php echo $printout; ?>; 
+0

但是,此解決方案不適用於多個結果。阿賈克斯真的是唯一的可能嗎? – 2012-03-11 10:45:31

+1

它的確如此。如果您注意到,$ results是一個數組數組,其中的每個數組都是數據庫的「行」。當我將它轉換爲JSON時,它會被轉換成相同的東西 - 一組與PHP相同的數組。試試看看。 – DanRedux 2012-03-11 10:49:32

+0

你沒有。 json_encodes將數組的$ results數組轉換爲一個字符串,JavaScript可以讀取並轉換爲數組數組。 – DanRedux 2012-03-11 15:44:33

0

這是相當可能的,但如何ABT使用JSON代替。 JSON編碼的字符串可以通過json_encode($array)在php中生成。然後,您可以使用AJAX將json加載到當前頁面。

另一種選擇是,從php代碼生成javascript數組,然後將javascript數組包含到網頁中。