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(); 

现在它只是在项目符号列表中列出图像、视频和音频文件名。但我想要做的是我想将每个文件设置为一个超链接,这样如果用户单击其中一个链接,它将在单独的页面中显示图像、视频或音频(将打开一个单独的窗口) ,无论是作为较大的播放器还是显示播放器来播放视频或音频。

我的问题是如何做到这一点,我需要执行以下哪些步骤?

4

2 回答 2

2

我的建议是将每个媒体元素(音频、图像、视频)包装到一个标签中 - 锚 (a) 例如像这样:

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

其中 [xxx] 是图像的 ID 或名称。

previewImage.php你得到它的地方$_GET['imgId'],从 DB 中选择它并显示它。previewVideo.php和_previewAudio.php

于 2013-01-23T15:24:04.427 回答
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
?>
于 2013-01-25T18:58:36.083 回答