我最近创建了一个名为 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)'>⇧</button><button onclick='myfunction($id,-1)'>⇩</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)'>⇧</button><button onclick='myfunction($id,-1)'>⇩</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)'>⇧</button><button onclick='myfunction($id,-1)'>⇩</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)'>⇧</button><button onclick='myfunction($id,-1)'>⇩</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)'>⇧</button><button onclick='myfunction($id,-1)'>⇩</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)'>⇧</button><button onclick='myfunction($id,-1)'>⇩</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)'>⇧</button><button onclick='myfunction($id,-1)'>⇩</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)'>⇧</button><button onclick='myfunction($id,-1)'>⇩</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)'>⇧</button><button onclick='myfunction($id,-1)'>⇩</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)'>⇧</button><button onclick='myfunction($id,-1)'>⇩</button><br>
<br>$tagdisp $tagdisp2 $tagdisp3<br>
<p style='color: grey'>$timestamp</p><hr>
</div>
";
}
}
}
mysqli_close($con);
?>
我觉得我用来创建这个 feed 的方法(以及我告诉浏览器显示不同媒体类型的方法,可能不是我能做到的最好方法。
如果我要重写此文件,获得相同结果的最佳(最有效)方法是什么?
非常感谢。
最佳答案
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)'>⇧</button><button onclick='myfunction($id,-1)'>⇩</button><br>
<br>$tagdisp $tagdisp2 $tagdisp3<br>
<p style='color: grey'>$timestamp</p><hr>
</div>
";
}
然后将所需的文本作为 $innerTemplate
传递。您仍然会有很多案例,但重复性会降低,可读性会更高,也更易于维护。
关于php - 显示不同媒体类型的提要的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37497500/