0

簡単に言えば、フィールドごとの順序は、MySQL呼び出しでは機能していないようです。ストレージにパターンが見つかりません...

$theorderは次のように正しく設定されています

, 'People-Wedding Photo', 'People-Kids', 'People-Male/Female', 'Architecture-Exterior', 'Architecture-Interior', 'Animal-Birds', 'Backgrounds'

そして、これが私のコードです。ご覧のとおり、私はループしてフォーマット変換を行っていますが、それでも間違った順序になります...ランダムな順序...。

足りないものはありますか?

$under_link_query = mysql_query("SELECT DISTINCT(type), type FROM ".$prefix."ProFolio_work WHERE type != 'Backgrounds' ORDER BY FIELD(type" . $theorder .")");


    while($u_row = mysql_fetch_assoc($under_link_query)){
        $type = html_entity_decode($u_row['type']);

        $typeForm = preg_replace('/[^a-z0-9]/i', '_', $type);
        ?>
           <a href="#" id="link_<? echo str_replace(' ', '_', $typeForm); ?>">
    <? echo ucfirst($type); ?></a>
            <?
4

1 に答える 1

3

@Malovichが答えを出しています。基本的には次のものを使用する必要があります。

ORDER BY $theorder

ただし、デフォルトの順序は昇順であり、順序は順番に行われることに注意してください。$theorder変数がコンマで始まる文字列に設定されていることに気付きましたが、これはほとんど問題です。

$theorderコンマで始まらないことを確認してから、1 行だけで並べてみてください。それが機能する場合は、さらに追加してください。

===============編集=================

申し訳ありませんが、フィールドをサブソートしようとしています。その部分を逃したので、ここで何が起こっているのか:

ソートするすべてのフィールドを指定する必要があります。そうしないと、MySQL は指定されていない各フィールドを最初にソートし、次に指定したフィールドでソートします。必要に応じて、順序付けするフィールドのサブセットを提供できますが、それらを逆の順序で提供する必要があり、次のような DESC 表記を使用します。

ORDER BY FIELD (field,'lastsort',middlesort','firstsort') desc

これにより、次の順序でリストが表示されます。

firstsort items
middlesort items
lastsort items
<all other options, in reverse alphabetical order> items

これの重要な部分は、ソートするすべてのフィールド値を追加する必要があるということです。(または回避策を使用します)。

于 2012-05-01T20:51:48.260 に答える