今天做MYSQL指定顺序排序的时候,有一个循环不知道该咋写,如下,请各位帮忙看看~~先谢谢用如下程式可以按照指定的字符排序..$_system_order = " case username WHEN '小五' then 1 WHEN '小一' then 2 WHEN '小二' then 3 WHEN '小三' then 4 end ASC";
    
$_result = mysql_query("SELECT id,username,date FROM user ORDER BY $_system_order ");结果
小五
小一
小二
小三问题是:数据为从后台设定好排序后,前台按照后台的设定排序,
字符段username中有很多个用户名,如果这样写的话,会很痛苦的 ?想到用数组循环,不知道如何下手,有什么好的方法吗?

解决方案 »

  1.   

    虽然不知道你想做什么。
    还是给你个示例吧。<?php
    $seq = array('小五','小一','小二','小三','小四','小六','小七');
    $sort = "case username ";for($i=0;$i<count($seq);$i++){
      $sort .=" when '".$seq[$i]."' then ".($i+1);
    }
     $sort.=" end ASC";
     echo $sort;
      

  2.   

    你太厉害了,我懂了,谢谢你另外,再请教一个问题,表结构如下:
    CREATE TABLE `nisshope`.`tg_pe_user` (
    `tg_id` SMALLINT( 3 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '//自动编号',
    `tg_username` VARCHAR( 20 ) NOT NULL COMMENT '//用户名',
    `tg_date` DATETIME NOT NULL COMMENT '//添加日期'
    ) ENGINE = MRG_MYISAM ;表里面的数据有:
    '小五','小一','小二','小三','小四','小六','小七'我现在想通过PHP操作,将里面的顺序调为:
    '小七','小一','小五','小二','小三','小四','小六'思想是什么啊??再次感谢,ohmygirl
      

  3.   


    就是用户指定的比如,
    数据库里面的id先后顺序为 : '小五'(id为1),'小一'(id为2),'小二'(id为3),'小三'(id为4),'小四'(id为5),'小六'(id为6),'小七'(id为7)用户在后台想改成:'小七'(id为1),,'小一'(id为2),'小五'(id为3),'小二'(id为4),'小三'(id为5),'小四'(id为6),'小六'(id为7)
     
    现在的问题是,用户指定了这个自定的规则后,用PHP操作数据库里面的先后顺序呢?
      

  4.   

    SELECT id,username,date FROM user order by find_in_set(username,'小七,小一,小五');
      

  5.   


    THANKS,我显示已经会了,怎么UPDATE(更改)呢?
      

  6.   

    先有一个更改界面,如下,前面的名字为从数据库中循环出来的,后面的1,2,3为我自己输入的比如:
    小七     1(为input输入框)小一     2(为input输入框)小五     3(为input输入框)
    假如我想让 小一 排第一,小五排第二, 小七排第三,我只需要这样改
    小七     3(为input输入框)小一     1(为input输入框)小五     2(为input输入框)
    但是我不知道的是,我在HTML界面改了之后,怎么用UPDATE语句将其上传到数据库中,让其字段ID与我更改的ID一致,谢谢
      

  7.   

    不要直接改ID,你往数据库对应表里加个专门用来排序的字段不就成了?你到时候就order by这个字段就行了,这样清晰多了,直接改ID,你让客户怎么用啊,万一不小心填了两个相同的ID你又得排错。
      

  8.   

    我新增了一个SID字段,初始值都为0
    我试试~~
      

  9.   

    Quote=引用 14 楼 foolbirdflyfirst 的回复:]
    不要直接改ID,你往数据库对应表里加个专门用来排序的字段不就成了?你到时候就order by这个字段就行了,这样清晰多了,直接改ID,你让客户怎么用啊,万一不小心填了两个相同的ID你又得排错。
    [/Quote]可是有数组的SQL语句挺难写的~~如从数据库中循环出了如下数据:
    小七     1  (name = sid[],为input输入框)小一     2  (name = sid[],为input输入框)小五     3  (name = sid,为input输入框)现在将sid改为如下
    小七     2  小一     1
      
    小五     3  我怎么去更改数据库里原有的SID啊
    $sid = $_POST($_sid);
    print_r($sid);显示出如下:
     Array
    (
          [0] => 2
          [1] => 1
          [2] => 3
    )
    mysql_query("UPDATE user SET xxxx  WHERE XXX ");
    XXX里面该怎么写对应啊~~
    谢谢
      

  10.   

    最后一个问题解决了,感谢各位$_num = _num_rows(_query("SELECT tg_id FROM tg_pe_user"));
    $_sid = _mysql_string($_POST['sid']);
    for ($i = 0;$i < $_num;$i++) {
    //新的排序写入数据库
    _query("UPDATE tg_pe_user SET tg_sid = '{$_sid[$i]}' WHERE tg_id = $i + 1 ");}