2013-01-19 62 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