显示不同媒体类型的Feed的最佳方式是什么?

时间:2016-05-28 09:45:39

标签: php mysql

我最近创建了一个名为feed.php的php文件,它用于从MySQL数据库中获取项目并在网页上显示它们(以新闻源样式的方式)。我完成它的方式涉及使用19 if / elseif / else语句 - 这个数字正在增长。

简而言之,这些陈述的作用决定了信息的显示方式。我将包含下面的代码,但它很长且重复。

<?

$con = mysqli_connect("localhost","username","password","database");

if (!$con)
{
  die('Could not connect: ' . mysqli_connect_error());
}


$query = "SELECT * FROM mainfeed ORDER BY timestamp DESC LIMIT 0 , 1000";

$comments = mysqli_query($con, $query);

echo "<h1>Recent Posts</h1><br><br><hr>";

while($row = mysqli_fetch_array($comments, MYSQLI_ASSOC))
{
  $comment = $row['comment'];
  $timestamp = $row['timestamp'];
  $file = $row['file'];
  $info = pathinfo($file);
  $info['extension'];
  $comment = htmlspecialchars($row['comment'],ENT_QUOTES);
  $ytlink = $row['ytlink'];
  $tag = $row['tag'];
  $tag2 = $row['tag2'];
  $tag3 = $row['tag3'];
  $handle = $row['handle'];
  $score = $row['score'];
  $id = $row['id'];

  $ytarray=explode("/", $ytlink);
  $ytendstring=end($ytarray);
  $ytendarray=explode("?v=", $ytendstring);
  $ytendstring=end($ytendarray);
  $ytendarray=explode("&", $ytendstring);
  $ytcode=$ytendarray[0];

  $display = Array('jpg', 'jpeg', 'png', 'PNG', 'gif');
  $vid = Array('MOV', 'mov', 'mp4');


if($tag != ''){
    $tagdisp = "<br><a href='/$tag' class='posttag'>$tag</a>";

}

elseif($tag==''){
    $tagdisp="";

}

if($tag2 != ''){
    $tagdisp2 = "<a href='/$tag2' class='posttag'>$tag2</a>";

}

elseif($tag2==''){
    $tagdisp2="";

}

if($tag3 != ''){
    $tagdisp3 = "<a href='/$tag3' class='posttag'>$tag3</a>";

}

elseif($tag3==''){
    $tagdisp3="";

}

if($tag != 'explicit' && $tag2 != 'explicit' && $tag3 != 'explicit'){

if ($file != NULL) {

  if (in_array($info['extension'], $display)){

  echo " <div class='card'>
      <h3>Handle: $handle</h3><br />
      <p>$comment</p><br /><br />
      <a href='$file'><img src='$file' style='width:70%; margin-left:15%; margin-right:15%; margin-top:5px; border-style:none;'></a><br>
      <p>Post #$id</p>
      <p id='scorecount-$id'>Score: $score</p><br>
      <button onclick='myfunction($id,1)'>&#8679;</button><button onclick='myfunction($id,-1)'>&#8681;</button><br>
      <br>$tagdisp $tagdisp2 $tagdisp3<br>
      <p style='color: grey'>$timestamp</p><hr>
    </div>
  ";
  }

  elseif(in_array($info['extension'], $vid)) {
    echo " <div class='card'>
    <h3>Handle: $handle</h3><br />
    <p>$comment</p><br /><br />
     <video controls='controls' width='70%' src='$file' style='border-style: solid'></video><br>
    <p>Post #$id</p>
      <p id='scorecount-$id'>Score: $score</p><br>
      <button onclick='myfunction($id,1)'>&#8679;</button><button onclick='myfunction($id,-1)'>&#8681;</button><br>
      <br>$tagdisp $tagdisp2 $tagdisp3<br>
    <p style='color: grey'>$timestamp</p><hr>
    </div>
   ";
}

  else {

  echo " <div class='card'>
      <h3>Handle: $handle</h3><br />
      <p>$comment</p><br /><br />
      <a href='$file'><h3>Click Here To View Attached File</h3></a><br>
      <p>Post #$id</p>
      <p id='scorecount-$id'>Score: $score</p><br>
      <button onclick='myfunction($id,1)'>&#8679;</button><button onclick='myfunction($id,-1)'>&#8681;</button><br>
      <br>$tagdisp $tagdisp2 $tagdisp3<br>
      <p style='color: grey'>$timestamp</p><hr>
    </div>
  ";

  }
}

elseif($ytlink != NULL) {

  echo " <div class='card'>
      <h3>Handle: $handle</h3><br />
      <p>$comment</p><br /><br />
      <iframe width=\"420\" height=\"315\" src=\"http://www.youtube.com/embed/$ytcode\" frameborder=\"0\" allowfullscreen></iframe><br />
      <p>Post #$id</p>
      <p id='scorecount-$id'>Score: $score</p><br>
      <button onclick='myfunction($id,1)'>&#8679;</button><button onclick='myfunction($id,-1)'>&#8681;</button><br>
      <br>$tagdisp $tagdisp2 $tagdisp3<br>
      <p style='color: grey'>$timestamp</p><hr>
    </div>
  ";

}

else {

  echo " <div class='card'>
      <h3>Handle: $handle</h3><br />
      <p>$comment</p><br />
      <p>Post #$id</p>
      <p id='scorecount-$id'>Score: $score</p><br>
      <button onclick='myfunction($id,1)'>&#8679;</button><button onclick='myfunction($id,-1)'>&#8681;</button><br>
      <br>$tagdisp $tagdisp2 $tagdisp3<br>
      <p style='color: grey'>$timestamp</p><hr>
    </div>
  ";

}

}

if($tag == 'explicit' OR $tag2 == 'explicit' OR $tag3 == 'explicit'){

if ($file != NULL) {

  if (in_array($info['extension'], $display)){

  echo " <div class='cardexp'>
      <h3>Handle: $handle</h3><br />
      <p>$comment</p><br /><br />
      <img src='$file' style='width:70%; margin-left:15%; margin-right:15%; margin-top:5px; border-style:solid;'><br>
      <p>Post #$id</p>
      <p id='scorecount-$id'>Score: $score</p><br>
      <button onclick='myfunction($id,1)'>&#8679;</button><button onclick='myfunction($id,-1)'>&#8681;</button><br>
      <br>$tagdisp $tagdisp2 $tagdisp3<br>
      <p style='color: grey'>$timestamp</p><hr>
    </div>
  ";
  }

  elseif(in_array($info['extension'], $vid)) {
    echo " <div class='cardexp'>
    <h3>Handle: $handle</h3><br />
    <p>$comment</p><br /><br />
     <video controls='controls' width='70%' src='$file' style='border-style: solid'></video><br>
    <p>Post #$id</p>
      <p id='scorecount-$id'>Score: $score</p><br>
      <button onclick='myfunction($id,1)'>&#8679;</button><button onclick='myfunction($id,-1)'>&#8681;</button><br>
      <br>$tagdisp $tagdisp2 $tagdisp3<br>
    <p style='color: grey'>$timestamp</p><hr>
    </div>
   ";
}

  else {

  echo " <div class='cardexp'>
      <h3>Handle: $handle</h3><br />
      <p>$comment</p><br /><br />
      <a href='$file'><h3>Click Here To View Attached File</h3></a><br>
      <p>Post #$id</p>
      <p id='scorecount-$id'>Score: $score</p><br>
      <button onclick='myfunction($id,1)'>&#8679;</button><button onclick='myfunction($id,-1)'>&#8681;</button><br>
      <br>$tagdisp $tagdisp2 $tagdisp3<br>
      <p style='color: grey'>$timestamp</p><hr>
    </div>
  ";

  }
}

elseif($ytlink != NULL) {

  echo " <div class='cardexp'>
      <h3>Handle: $handle</h3><br />
      <p>$comment</p><br /><br />
      <iframe width=\"420\" height=\"315\" src=\"http://www.youtube.com/embed/$ytcode\" frameborder=\"0\" allowfullscreen></iframe><br />
      <p>Post #$id</p>
      <p id='scorecount-$id'>Score: $score</p><br>
      <button onclick='myfunction($id,1)'>&#8679;</button><button onclick='myfunction($id,-1)'>&#8681;</button><br>
      <br>$tagdisp $tagdisp2 $tagdisp3<br>
      <p style='color: grey'>$timestamp</p><hr>
    </div>
  ";

}


else {

  echo " <div class='cardexp'>
      <h3>Handle: $handle</h3><br />
      <p>$comment</p><br />
      <p>Post #$id</p>
      <p id='scorecount-$id'>Score: $score</p><br>
      <button onclick='myfunction($id,1)'>&#8679;</button><button onclick='myfunction($id,-1)'>&#8681;</button><br>
      <br>$tagdisp $tagdisp2 $tagdisp3<br>
      <p style='color: grey'>$timestamp</p><hr>
    </div>
  ";

}

}

}

mysqli_close($con);

?>

我觉得我用来创建这个Feed的方法(以及我告诉浏览器显示不同媒体类型的方式,可能不是我可以做到的最佳方式。

如果我要重写这个文件,那么实现相同结果的最佳(最有效和最有效)方法是什么?

非常感谢。

1 个答案:

答案 0 :(得分:1)

function getCardTemplate($comment, $id, $score, $tagdisp, $tagdisp2, $tagdisp3, $timestamp, $innerTemplate) {
  return " <div class='card'>
      <h3>Handle: $handle</h3><br />
      <p>$comment</p><br /><br />".$innerTemplate. 
     "<p>Post #$id</p>
      <p id='scorecount-$id'>Score: $score</p><br>
      <button onclick='myfunction($id,1)'>&#8679;</button><button onclick='myfunction($id,-1)'>&#8681;</button><br>
      <br>$tagdisp $tagdisp2 $tagdisp3<br>
      <p style='color: grey'>$timestamp</p><hr>
    </div>
  ";
}

然后传递所需的文字为$innerTemplate。您仍然会遇到很多情况,但它的重复性会更低,更易读,也更容易维护。