brando
V2EX  ›  PHP

PHP 排序问题

  •  
  •   brando · May 18, 2015 · 3509 views
    This topic created in 4034 days ago, the information mentioned may be changed or developed.


    请过路大侠指点~~~
    9 replies    2015-05-25 16:13:27 +08:00
    willvvvv
        1
    willvvvv  
       May 18, 2015   ❤️ 1
    什么问题,具象点。
    brando
        2
    brando  
    OP
       May 18, 2015
    iscraft
        3
    iscraft  
       May 18, 2015   ❤️ 1
    table2 order by sid asc不起作用么
    kslr
        4
    kslr  
       May 18, 2015   ❤️ 1
    问问题的时候把代码放出来不要截图,否则别人为了回答,还要打出来代码么?
    willvvvv
        5
    willvvvv  
       May 18, 2015   ❤️ 1
    @brando 用了双重循环展示数据,内层无法决定外层顺序

    解决方案2点
    1. 取出双重循环的数据后,放入数组,对数组进行排序
    2. 本身的2次查询不合适,正确的是联立查询后,取出数据放入数组,再对数组数据进行排序
    brando
        6
    brando  
    OP
       May 18, 2015
    文字版
    -----------------------
    Table1

    id name time1
    80 Lee 2015-05
    90 John 2015-05
    122 Ak47 2015-05

    Table2

    id uid sid time2
    300 122 3 2015-05
    310 90 1 2015-05
    330 80 2 2015-05



    <?php
    $m = date("m");
    $row=mysql_fetch_array($sql);
    $sql=mysql_query("select * from table1 where 1",$conn);
    while($row=mysql_fetch_array($sql, MYSQL_ASSOC)){
    ?>

    <?php
    $ordertime = date("Y-m");
    $row2=mysql_fetch_array($sql2);
    $sql2 = mysql_query("select * from table2 where uid='".$row[id]."' and time2 like '".$ordertime."%'" ,$conn);
    while($row2=mysql_fetch_array($sql2)){
    ?>
    <tr>
    <td valign="middle" class="t1">第<?php echo $row2[sid];?>名</td>
    <td valign="middle" class="t1"><?php echo $row[name];?></td>
    </tr>


    最终想要的结果应该是:

    table2.sid table1.name table2.time2
    1 John 2015-05
    2 Lee 2015-05
    3 Ak47 2015-05

    目前的输出得结果是
    table2.sid table1.name
    第2名 Lee
    第1名 John
    第3名 Ak47

    我想要按照table2.sid的序号大小进行排序,效果就是上面的“最终想要的结果...”,而不是当前table.id进行排序。

    --------------------------------------
    @kslr 如@willvvvv所说2次查询不合适

    @iscraft 嗯,谢谢提醒,下次注意了。

    @willvvvv 请问方案2是怎么写?谢谢~
    willvvvv
        7
    willvvvv  
       May 18, 2015   ❤️ 1
    @brando

    select t2.sid,t1.name,t2.time2 from table1 t1 inner join table2 t2 on t1.id=t2.uid where t2.time2 like CONCAT(date_format(now(), '%Y-%m'),'%') order by t2.sid asc;
    mingyun
        8
    mingyun  
       May 24, 2015
    排序可以取出来再用数组处理嘛
    brando
        9
    brando  
    OP
       May 25, 2015
    能否根据上述给个案例?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3783 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 05:02 · PVG 13:02 · LAX 22:02 · JFK 01:02
    ♥ Do have faith in what you're doing.