我正在编写一个简单的PHP页面,将信息传递到卡片中。 目前,我的脚本正在严格编码" linktitle_1,linktitle_2,linktitle_3"等等,当它是3时,能够被拉过来,如果3个单元格中的任何一个是空的,它们仍然是空的,并且之后用逗号表示。 我想要做的是能够打印0-7项信息。 (数据库中存在相应的列) Psuedo代码将是这样的:
if (linktitle_1 = empty, linktitle_1_url = empty) {
echo '<p>linktitle_1</p>'}
else {
do nothing
};
我希望通过相关链接和链接标题部分来完成此操作。所以我想我需要知道的是:
代码=
<?php
// DB details
$hostname = "localhost";
$username = "";
$password = "";
$dbname = "";
// Create connection
$conn = new mysqli($hostname, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM relevant_topics";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// Removing special characters from rows.
while($row = $result->fetch_assoc()) {
$title_clean = $row["title"];
$title_clean = strtolower($title_clean);
$title_clean = preg_replace('/\s*/ ', '', $title_clean);
$class_clean = $row["class"];
$class_clean = strtolower($class_clean);
$class_clean = preg_replace('/\s*/ ', '', $class_clean);
$related_clean_1 = $row["related1"] ;
$related_clean_1 = strtolower($related_clean_1);
$related_clean_1 = preg_replace('/[.,]\s*/ ', '', $related_clean_1);
$related_clean_2 = $row["related2"] ;
$related_clean_2 = strtolower($related_clean_2);
$related_clean_2 = preg_replace('/[.,]\s*/ ', '', $related_clean_2);
$related_clean_3 = $row["related3"] ;
$related_clean_3 = strtolower($related_clean_3);
$related_clean_3 = preg_replace('/[.,]\s*/ ', '', $related_clean_3);
$related_clean_4 = $row["related4"] ;
$related_clean_4 = strtolower($related_clean_4);
$related_clean_4 = preg_replace('/[.,]\s*/ ', '', $related_clean_4);
echo'
<div class="mix item '.$class_clean.'">
<h3>'.$row["title"].'</h3>
<p>'.$row["description"].'</p>
</br>
<p>Related Items:</p>
<p>
<a href="#myModal'.$related_clean_1.'" role="button" data-toggle="modal">'.$row["related1"].'</a>
<a href="#myModal'.$related_clean_2.'" role="button" data-toggle="modal">'.$row["related2"].'</a>
<a href="#myModal'.$related_clean_3.'" role="button" data-toggle="modal">'.$row["related3"].'</a>
<a href="#myModal'.$related_clean_4.'" role="button" data-toggle="modal">'.$row["related4"].'</a>
<a href="'.$row["related1_link"].'">'.$row["related1"].',</a>
<a href="'.$row["related2_link"].'">'.$row["related2"].',</a>
<a href="'.$row["related3_link"].'">'.$row["related3"].',</a> </p>
</br>
<div class="item-bottom '.$row["class"].'_counter">
<a href="#myModal'.$title_clean.'" role="button" data-toggle="modal">See more</a>
</div>
</div>
<div id="myModal'.$title_clean.'" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 class="modal-title modal-top-health">'.$row["title"].'</h3>
<br>
<p>'.$row["details"].'</p>
<br>
<a href="'.$row["linktitle_1_url"].'">'.$row["linktitle_1"].', </a>
<p>'.$row["linktitle_1_desc"].'</p>
<a href="'.$row["linktitle_2_url"].'">'.$row["linktitle_2"].', </a>
<p>'.$row["linktitle_2_desc"].'</p>
<a href="'.$row["linktitle_3_url"].'">'.$row["linktitle_3"].', </a>
<p>'.$row["linktitle_3_desc"].'</p>
</div>
</div>
</div>
</div>
';
}
} else {
echo "0 results";
}
$conn->close();
?>
答案 0 :(得分:0)
使用循环优化,将输出存储在变量中:
// build list of titles
$titles = '';
for($i=1; $i<=7; ++$i) {
// check for data
if($row['linktitle_'.$i.'_url'] != null && $row['linktitle_'.$i] != null) {
// add to output
$titles .= '
<a href="'.$row['linktitle_'.$i.'_url'].'">'.$row['linktitle_'.$i].', </a>
<p>'.$row['linktitle_'.$i.'_desc'].'</p>';
}
}
echo '
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 class="modal-title modal-top-health">'.$row["title"].'</h3>
<br>
<p>'.$row["details"].'</p>
<br>'.$titles.'
</div>';
然后,您可以将7
更改为任意数字。
如果值可能会破坏HTML,您可以使用htmlspecialchars()
来转义值。
$titles .= '
<a href="'.htmlspecialchars($row['linktitle_'.$i.'_url']).'">'.
htmlspecialchars($row['linktitle_'.$i]).', </a>
<p>'.htmlspecialchars($row['linktitle_'.$i.'_desc']).'</p>';
相同的逻辑可以应用于相关链接。
通过为标题提供专用表格,可以在数据库级别进一步优化:
表:relevant_topics_titles
topic_id | title_id |名字|网址|降序
其中topic_id
是加入您的表relevant_topics
的外键,而title_id
是1
和7
之间的数字(或更少或更多)
然后,您可以获取与您的主题ID相关联的所有标题,并循环浏览它们以构建标题列表。