2013-01-19 109 views
1

我有一個包含在與各行的圖片,視頻和音頻列表三個錶行:如何輸出圖像,視頻和在新窗口中的音頻播放器

echo '<td width="11%" class="imagetd">'. ((empty ($arrImageFile[$key])) ? "&nbsp;" : '<ul class="qandaul"><li>'.htmlspecialchars(is_array($arrImageFile[$key]) ? implode(",", $arrImageFile[$key]) : $arrImageFile[$key])). '</li></ul></td>' . PHP_EOL; 
    echo '<td width="11%" class="videotd">'. ((empty ($arrVideoFile[$key])) ? "&nbsp;" : '<ul class="qandaul"><li>'.htmlspecialchars(is_array($arrVideoFile[$key]) ? implode(",", $arrVideoFile[$key]) : $arrVideoFile[$key])). '</li></ul></td>' . PHP_EOL; 
    echo '<td width="11%" class="audiotd">'. ((empty ($arrAudioFile[$key])) ? "&nbsp;" : '<ul class="qandaul"><li>'.htmlspecialchars(is_array($arrAudioFile[$key]) ? implode(",", $arrAudioFile[$key]) : $arrAudioFile[$key])). '</li></ul></td>' . PHP_EOL; 

列表是包含數組來自數據庫的數據。以下是視頻陣列和數據庫的代碼。音頻和圖像具有類似的一組高達

$vidquery = "SELECT s.SessionId, q.QuestionId, v.VideoId, VideoFile 
       FROM Session s 
       INNER JOIN Question q ON s.SessionId = q.SessionId 
       INNER JOIN Video_Question vq ON q.QuestionId = vq.QuestionId 
       INNER JOIN Video v ON vq.VideoId = v.VideoId 
       WHERE s.SessionId = ?"; 

    global $mysqli; 
    $vidqrystmt=$mysqli->prepare($vidquery); 
    // You only need to call bind_param once 
    $vidqrystmt->bind_param("i",$_POST["session"]); 
    // get result and assign variables (prefix with db) 
    $vidqrystmt->execute(); 
    $vidqrystmt->bind_result($vidSessionId,$vidQuestionId,$vidVideoId,$vidVideoFile); 

     $arrVideoFile = array(); 

    while ($vidqrystmt->fetch()) { 
    $arrVideoFile[] = basename($vidVideoFile); 
    } 

    $vidqrystmt->close(); 

現在它只是列出了一顆子彈點列表中的圖片,視頻和音頻文件名的時刻。但是我想要做的是將每個文件設置爲超鏈接,這樣如果用戶點擊任一鏈接,它將在單獨的頁面中顯示圖像,視頻或音頻(將打開一個單獨的窗口) ,無論是作爲更大的還是顯示玩家播放視頻或音頻。

我的問題是如何做到這一點,我需要做什麼以下步驟?

+0

如果你不明白的問題,或者您類似感覺問題需要改進,請給我評論。如果你正在研究解決方案,請給我評論,這樣我就知道發生了什麼。謝謝 – user1964964

+0

[請**退出**這個東西出來完全不同的一個新的問題,以欺騙賞金超時!](http://stackoverflow.com/a/14305295/285587) –

+0

爲什麼我不能,另一個問題沒有答案,所以,而不是創造新的問題,我只是取代舊的,並設立了賞金,因爲這不是一個簡單的問題,我想獎勵額外的積分給幫助我的人 – user1881090

回答

1
<?php 
//start:procedure 
$img_result = ''; 
if(empty($arrImageFile[$key])){ 
    $img_result = '&nbsp;'; 
}else{ 
    $img_$result .= '<ul class="qandaul"><li>'; 
    if(is_array($arrImageFile[$key])){ 
    foreach($arrImageFile[$key] as $filename){ 
    $img_$result.= CreateLink($filename, "image"); 
    } 
    }else{ 
    $img_$result.= CreateLink($arrImageFile[$key], "image"); 
    } 
    $img_result.= '</li></ul>'; 
} 
//end:procedure 

echo '<td width="11%" class="imagetd">'.$img_result.'</td>' . PHP_EOL; 


function CreateLink($filename, $type){ 
if($type == 'image'){ 
    return '<a href="imageviewer.php?filename='.$filename.'" title="Click to view in New window" target="_blank">'.htmlspecialchars($filename).'</a>'; 
} 
if($type == 'video'){ 

} 
if($type == 'audio'){ 

} 
} 
?> 

您還可以創建他們正在使用結構化方法的一般功能(從開始上述步驟年底開始)

<?php 
echo '<td width="11%" class="imagetd">'.customfunction($arrImageFile[$key]).'</td>' . PHP_EOL; 
//same idea for other td also 
?> 
2

我的建議是每一個媒體元素(音頻,圖像,視頻)包裝成一個標籤 - (一)例如像這種定位的:

<a href='previewImage.php?imgId=[xxx]' target='_blank'>myImage.jpg</a> 

其中[XXX]是圖像的ID或其名稱。

previewImage.php你可以用$_GET['imgId']得到它,從數據庫中選擇並顯示它。對於previewVideo.phppreviewAudio.php

+0

不明白爲什麼倒下投票,但...從來不知道 –

+0

我不知道誰投了票。我會給它一個嘗試壽,我會回到你的結果 – user1881090

+0

我upvoted你的答案btw回到0 :) – user1881090