我正在制作一个边栏提要,它将显示提交到我的数据库中的10个最新内容。我对这一切都很陌生,所以我想知道。。这样做可以吗?它有效。。不是自动的,但当我把一些东西提交到我的数据库时,它就会转到那里。。我提交了其他东西,然后顶部转到第二个。。!我无法摆脱这种感觉,也许这不是一个好方法。
的前3个部分
<div class="span3 offset3">
<?php include 'feed/one.php'; ?>
<ul class="nav nav-list well">
<li class="nav-header"></li>
<li class="active"><a href="#">HIT INFO</a></li>
<?php while($row = $data->fetch_assoc()) { ?>
<li><a href="<?php print $row['link']?>"><?php
Print "<tr>";
Print "<th>Hit:</th> <td>".$row['hit'] . "</td> ";
Print "<th>Amount:</th> <td>".$row['amount'] . " </td>";
Print "<th>Category:</th> <td>".$row['category'] . "</td></tr> ";
Print "<br><br/>";
Print "</table>";?></a></li>
<?php } ?>
<li class="divider"></li>
<?php $data = $mysqli->query("SELECT * FROM hit ORDER BY hit_id DESC LIMIT 1, 1"); ?>
<?php while($row = $data->fetch_assoc()) { ?>
<li><a href="<?php print $row['link']?>"><?php
Print "<tr>";
Print "<th>Hit:</th> <td>".$row['hit'] . "</td> ";
Print "<th>Amount:</th> <td>".$row['amount'] . " </td>";
Print "<th>Category:</th> <td>".$row['category'] . "</td></tr> ";
Print "<br><br/>";
Print "</table>";?></a></li>
<?php } ?>
<li class="divider"></li>
<?php $data = $mysqli->query("SELECT * FROM hit ORDER BY hit_id DESC LIMIT 2, 1"); ?>
<?php while($row = $data->fetch_assoc()) { ?>
<li><a href="<?php print $row['link']?>"><?php
Print "<tr>";
Print "<th>Hit:</th> <td>".$row['hit'] . "</td> ";
Print "<th>Amount:</th> <td>".$row['amount'] . " </td>";
Print "<th>Category:</th> <td>".$row['category'] . "</td></tr> ";
Print "<br><br/>";
Print "</table>";?></a></li>
<?php } ?>
<li class="divider"></li>
<?php $data = $mysqli->query("SELECT * FROM hit ORDER BY hit_id DESC LIMIT 3, 1"); ?>
<?php while($row = $data->fetch_assoc()) { ?>
<li><a href="<?php print $row['link']?>"><?php
Print "<tr>";
Print "<th>Hit:</th> <td>".$row['hit'] . "</td> ";
Print "<th>Amount:</th> <td>".$row['amount'] . " </td>";
Print "<th>Category:</th> <td>".$row['category'] . "</td></tr> ";
Print "<br><br/>";
Print "</table>"; ?></a></li>
<?php } ?>
提交的数据会显示在我的主页上,直到提交了其他数据,然后转到"提要",还转到另一个显示过去数据的页面。
您似乎没有任何用户可以拦截的东西,所以"安全"不是问题。
不过,您的查询不符合逻辑。当您可以最初获取数据并使用该对象在需要的地方中继内容时,没有理由在整个页面上重复具有多个偏移量的同一查询。在文件的开头运行这样的查询,或者最好在呈现任何输出之前运行。
"SELECT * FROM hit ORDER BY hit_id DESC LIMIT 4"
现在你有4个项目,所以在整个页面上访问这些项目可能是这样的:
<ul class="nav nav-list well">
<li class="nav-header"></li>
<li class="active"><a href="#">HIT INFO</a></li>
<?php while($row = $data->fetch_assoc()): ?>
<li>
<a href="<?php print $row['link']?>">
<table>
<tr>
<th>Hit:</th> <td><?php echo $row['hit']; ?></td>
<th>Amount:</th> <td><?php echo $row['amount']; ?></td>
<th>Category:</th> <td><?php echo $row['category']; ?></td>
</tr>
<br><br/>
</table>
</a>
</li>
<li class="divider"></li>
<?php endwhile; ?>
</ul>
现在,您有一些标记错误。你关上了一张从未打开过的桌子。这只能在很小的程度上被视为表格数据,所以无论如何,表可能不是最好的方法。我自己不理解你这样使用th和td,但如果它对你有效,那就好了。
您应该跳出php来显示html。像CCD_ 1这样的回声是完全没有必要的。
与其每次查询数据库并获取一条记录来显示它,不如在一个查询中完成,该查询会获取所需的行数:
<?php $data = $mysqli->query("SELECT * FROM hit ORDER BY hit_id DESC LIMIT 1, N"); ?>
这将获取前N行,其中N当然必须是数字。然后,您应该循环抛出行,并按照现在的方式打印它。唯一的区别是,你可能需要一段时间才能正确地理解打开/循环/关闭表的细微差别,但这确实是一项很好的时间投资!
实际上,您正在使用hit_id
字段对从数据库中获得的数据进行排序。
如果你真的想检索"提交到我的数据库中的10件最新的东西",你需要一个自动递增的ID之外的其他东西。(类似于amount
行上的COUNT
(。它将取决于实际值/填充该字段的方式,但可能看起来像这样:
SELECT * FROM hit GROUP BY Category ORDER BY amount DESC;
关于此部分:
但是当我把一些东西提交到我的数据库中时,它就会去那里。。我提交其他内容,然后顶部转到第二个
原因很简单,您使用的是ORDER BY hit_id DESC
,这就是为什么最后插入的ID排在第一位的原因。