2012-10-28 42 views
0

我最近開始學習網絡開發,目前我正在研究一個網頁,該網頁可以讀取文件夾中的多個音頻文件,並讓用戶撰寫關於他/她聽到的內容的抄本。我前幾天開始創建,我通過php和play(通過用戶實際播放)獲得了一個文件列表,通過對數組進行整理(清楚的是,每次加載頁面時都會有一個隨機文件準備好被播放)。這似乎工作正常。

我也想添加到按鈕,讓用戶聽下一個/上一個文件,但無論何時何地我寫next($array)線它不工作,更糟糕的是,shuffle函數也停止工作。我不知道是不是因爲我在標籤中使用php,但是我的內心有些東西告訴我。

我不知道我是否足夠清楚,但我會很感激任何幫助。因此,這裏是我的代碼:

<html> 
    <head> 
    </head> 
    <body> 
    <p align="center"> 
     <button><-</button> 
     <audio src="./Sound data/AAA2028C4_0.wav" type="audio/wav" align="center" id="RandomAudio" controls="controls"> 
     </audio> 
     <button name="nextButton" onClick="next()">-></button> 
    </p> 

    <script language="JavaScript" type="text/javascript"> 

     <?php 
     //Scan the sound data folder for files 
     $dir = './Sound data'; 
     $files = scandir($dir); 
     $random_file = shuffle($files); 
     ?>; 

     function load(){ 
     var test = "./Sound data/<?php 
     //Select random element from files array  
     echo $files[$random_file]; 
     ?>"; 
     //Play a random file 
     document.getElementById('RandomAudio').src=test; 
     } 

     function next(){ 
     var next = "./Sound data/<?php 
     $next_file = next($random_file); 
     echo $files[$next_file]; 
     ?>"; 
     //Play the next file 
     document.getElementById('RandomAudio').src=next; 
     } 

     window.onload = load; 
    </script> 

    <form method="post" action="testecho.php" align="center"> 
     <strong><label>Transcript : </label></strong> 
     <br> 
     <textarea name ="transcript" rows="2" cols="40"> </textarea> 
     <input type="submit" /> 
    </form> 
    </body> 
</html> 
+1

查看網站的生成代碼。它看起來正確嗎?另外:['next'](http://php.net/next)已經返回下一個值。所以你可以馬上使用它的返回值。 – hakre

回答

2

對於您使用的每個功能,請查看手冊。這有助於習慣他們。

讓我們通過:

$random_file = shuffle($files); 

shuffle函數返回TRUEFALSE。所以$random_file變量只有在數組$files已經成功洗牌或沒有洗牌時纔是信息。

echo $files[$random_file]; 

因此完全是假的。 $files已被洗牌$random_fileTRUEFALSE。但數組鍵是整數字符串。

我很確定你弄清楚如何解決這個問題。

同樣與next

$next_file = next($random_file); 
echo $files[$next_file]; 

即使$next_file已經是如果$random_file將是下一個文件的洗後$files陣列(它不是,見上文),就沒有必要使用它作爲關鍵在下一行:

echo $files[$next_file]; 

這沒有任何意義。一步一步書寫你的代碼。使用調試功能如var_dump來顯示發生了什麼。仔細檢查PHP手冊,瞭解您當前使用的功能。然後逐行編寫代碼,並快速準備好並學到很多東西。

不要盲目飛行。在每個函數調用之前和之後打印出來,並檢查你期望的函數是否真的完成了。

+0

非常感謝!老實說,我沒有想到shuffle會返回一個布爾變量。 – Revangelis

+0

再次感謝,這真的很有幫助,但現在我只能訪問只有緊接着的下一個索引。我的意思是指針在nextelem函數中只是改變了一次。我嘗試了一堆東西,但似乎無法找出問題。 – Revangelis

+0

功能nextelem(){ \t \t \t \t \t VAR \t nextElement =」 ./Sound數據/ 「;? \t \t \t // \t播放下一文件 \t \t的document.getElementById( 'RandomAudio')SRC = nextElement; \t \t \t \t \t的document.getElementById ('position')。innerHTML = nextElement; \t \t} – Revangelis

0

,那麼您已經在功能next的PHP版本衝突。試試它的另一個名字。

2

你不能這樣做,因爲PHP部分將在頁面加載時運行一次。 嘗試在JSON中轉換PHP數組,並直接從JS中使用它,而不使用PHP。

+0

我會試一試,謝謝。 – Revangelis