[英]How do i show mySql data in inverse order
更新:谢谢大家的帮助,整个代码位于文本的底部,巴西-葡萄牙语互为注释。
如何准确地以相反的顺序显示表中的信息(使用PHP)?
例如,假设我有一个表,该表具有一个AUTO_INCREMENT id
列作为主键和一个name
列:
id:1名:Cris
id:2名称:Elen
id:3名称:Bob
id:4名:Lian
我需要在这样的页面中显示它:
id:4名:Lian
id:3名称:Bob
id:2名称:Elen
id:1名:Cris
这段代码仅以正常顺序显示它们,到目前为止,它仍然有效,但这并不是我真正需要的。
PS:我使用$result
和$rows
来计数我有多少行,并尝试在for
函数中使用它,但是它没有用。
<?php
$conect = mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("Noticias", $conect) or die(mysql_error());
$result = mysql_query("SELECT * FROM titulos", $conect);
$totalrows = mysql_num_rows($result);
echo "$totalrows Rows test edit<br>";
while($row = mysql_fetch_array($result)) {
echo $row['Titulo'];
echo "<br>";
}
for($i=$totalrows;$i>=0;$i-1){
$_Str ="SELECT Titulo FROM titulos WHERE id_Noticia=".$i."";
$show = mysql_query($_Str, $conect);
echo $show['Titulo']."<br>";
}
?>
好的,你们解决了我的问题,所以很公平地表明我正在尝试做的事情。
我试图获得相反的顺序,因为我想创建(作为练习)保存博客标题及其内容的页面。
我需要它以相反的顺序显示博客文章,以便用户可以查看最新到最旧的文章。
我还必须使每个博客标题都可以用作指向博客文章的链接(现在,它仅提供了对完全相同的链接的引用,我正在研究中)
它也有一点HTML,只是用于创建一个显示帖子链接的区域,它最多显示12个博客链接(同一行中有3个帖子,然后跳至下一行),如果博客帖子为太大(超过90像素)时,它会用点覆盖链接(标题)的其余部分。
再次,对不起,英语不好,我没有锻炼。
<?php
//coneção com o banco de dados onde os dados das nopticias estão salvos
$conect = mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("Noticias", $conect) or die(mysql_error());
//Calcula quantas noticias existem salvas no banco de dados, pdoe ser usado
//quando o usuario quiser ver todas as noticias
$result = mysql_query("SELECT * FROM titulos", $conect);
$totalrows = mysql_num_rows($result);
//ordena as noticias em ordem decrecente(da mais nova para a mais velha)
//e salva em um array
$result2 = mysql_query("SELECT * FROM titulos ORDER BY id_Noticia DESC", $conect);
$lista = array();
while($row= mysql_fetch_array($result2)) {
$lista[].=$row['Titulo'];
}
//variaveis para manipular quantas noticias aparecerão
$a=0;
$b=0;
?>
<html>
<head>
<title>Painel de Noticias!!!</title>
<style>
//cria a area onde os titulos aparecerão
.boxed {
border: 2px solid green ;
width: 300px;
}
//encobre com pontos qualquer parte do titulo que ultrapasse mais de 90 pixels
.espaco90 {
width: 90px;
float: left;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
</style>
</head>
<body>
<div class="boxed" >
<p>
<?php
//seleciona os titulos e aplica um link para eles, aqui falta um meio de determinar os links para cada
//titulo existente no banco de dados, más como isso
//será usado em conjunto com o wolrd press então eu creio
//que não seja necessário aha não ser que você queira
for($i=0;$i<=$totalrows-1;$i++){
echo "<div class='espaco90'><a href='http://www.w3schools.com'>".$lista[$i]."</a></div></p><p>";
$a=$a+1;
$b=$b+1;
if($b<12){
if($a>=3){
echo "<br>";
$a=$a-3;
}
}else{
echo"<br>";
break;
}
}
?> </p>
</div>
</body>
</html>
这应该使项目以相反的顺序
$_Str ="SELECT Titulo FROM titulos WHERE ORDER BY id_Noticia DESC ";
$show = mysql_query($_Str, $conect);
for($i=0; $i<$totalrows; $i+1) {
echo $show[i]['Titulo']."<br>";
}
尝试这个:
$result = mysql_query("SELECT * FROM titulos ORDER BY id_Noticia DESC", $conect);
您可以在这里了解ORDER BY ... DESC
将数据放入数据结构后,可以使用array_reverse()函数。 这是array_reverse函数的实现:
<?php
$a=array("a"=>"Volvo","b"=>"BMW","c"=>"Toyota");
print_r(array_reverse($a));
?>
有关更多信息,请访问链接: http : //www.w3schools.com/php/func_array_reverse.asp
只需在查询中添加ORDER BY
子句即可。
SELECT * FROM titulos ORDER BY id_Noticia DESC
^^^^^^^^^^^^^^^^^^^^^^^^
MySQL将按指定的顺序返回行。 ( DESC
关键字指示将以降序返回行,最高值在前。)
摆脱for
循环及其内容。 while ( fetch )
是正确的模式。
注意:不建议使用PHP mysql_接口。 新开发应使用PDO或mysqli接口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.