[英]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.