更新:感謝大家的幫助,整個代碼位於文本的底部,並帶有巴西葡萄牙語註釋。如何以相反的順序顯示mySql數據
如何以相反順序顯示我在表格中的信息(使用PHP)?
例如可以說我有一個表的AUTO_INCREMENT id
列作爲主鍵和一個name
柱:
ID:1名稱:克里斯
ID:2名稱:埃倫
ID:3名稱:鮑勃
ID:4名:連
我需要表現出來的頁面是這樣的:
ID:4名稱:連
ID:3名:鮑勃
ID:2名稱:埃倫
ID:1名稱:克里斯
此代碼僅示出了它們在正常順序,因此遠遠有效,但它不完全是我需要的。
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>";
}
?>
好吧,你們解決了我的問題,所以這是公平的,以顯示我正在嘗試做什麼。
我試圖得到相反的順序,因爲我想創建(作爲練習)保存博客標題及其內容的頁面。
我需要它以相反的順序顯示博客帖子,以便用戶可以從最新到最舊的時間查看它們。
我也不得不讓每一個博客的標題被用作鏈接到博客文章(現在它只能給人以exacly相同鏈接的引用,我的工作就可以了)
它也有有點HTML只是爲了創建一個帖子鏈接將會顯示的區域,它顯示了最多12個博客鏈接(同一行中有3篇文章,然後跳轉到下一行),如果博客帖子太大(超過90px),它包含了帶點的鏈接(標題)的其餘部分。
再次,對不起英語不好,我失去了實踐。
<?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>
使用'ORDER BY'來告訴MySQL要排序哪一列,並使用'DESC'來顛倒順序....'SELECT * FROM titulos ORDER BY id DESC' – Travesty3
正如Travesty3所說,使用ORDER BY。你可以隨時對數據進行排序,但最好讓SQL查詢儘可能地完成工作。 SQL爲此做了優化,並且你不太可能做出一些愚蠢的事情,因爲所有的程序員都是這樣做的。* grin *) –
只需將一個'ORDER BY id DESC'子句添加到第一個查詢。整個'for'循環看起來不對。看起來完全沒有必要,而且效率非常低(對每個'id_Noticia'值運行一個單獨的查詢,而且我們通常不能保證'id_Noticia'列中的值將是連續的整數值;設計'for'循環看起來完全破壞了,mysql接口已經被棄用了;你應該使用PDO或者mysqli來進行新的開發 – spencer7593