1

それぞれの行に画像、動画、音声のリストを含む 3 つのテーブル行があります。

    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 に答える