繁体   English   中英

我如何以相反的顺序显示mySql数据

[英]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_接口。 新开发应使用PDOmysqli接口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM