1

このサイトの同様の質問から回答を得ました。

ドロップダウンボックスを使用したPHPソート

私のニーズに合わせて調整しましたが、製品を並べ替えるためのドロップダウンメニューの作成に行き詰まりました.

私のフォームコードは次のとおりです。

<form name="myform">
        <select name="order_by" onchange="if(this.value != '') document.location = '/equipment.php?cat=<?= $prodCategory;?>&subCat=<?=$subCategory;?>&order_by=' + this.value">
            <option<?php if(isset($_GET['order_by']) && $_GET['order_by'] == 'choose') echo ' selected="selected"'; ?> value="choose">Sort By</option>
            <option<?php if(isset($_GET['order_by']) && $_GET['order_by'] == 'name') echo ' selected="selected"'; ?> value="name">Name</option>
            <option<?php if(isset($_GET['order_by']) && $_GET['order_by'] == 'price') echo ' selected="selected"'; ?> value="price">Price</option>
        </select>
</form>

私のスイッチステートメントとクエリは次のようになります。

 switch($_GET['order_by']) {
            case 'name':
              $order_by = " ORDER BY shortDescription ASC";
              break;
            case 'price':
              $order_by = " ORDER BY rrp ASC";
              break;
          }
        $productQuery = 'SELECT * FROM ********* WHERE subCategory = "' . $subCat[0]['categoryID'] . $order_by . '"';

しかし、何らかの理由で、選択した場合、どちらの選択でもソートされません。

誰かが私のコードの問題を見ることができますか?

4

2 に答える 2

2

これは、構文エラーがあるためです。値の'後に引用符を閉じていません。subCategory

$productQuery = 'SELECT * FROM ********* WHERE subCategory = "' . $subCat[0]['categoryID'] . $order_by . '"';
                                                                                         //^ here 

したがって、引用符を二重引用符で変更し、正しく連結してクエリを修正してください

$productQuery = "SELECT * FROM ********* WHERE subCategory = '" . $subCat[0]['categoryID'] . "'" .  $order_by;
于 2013-06-14T10:29:43.090 に答える
1

クエリセクションを変更する必要があり、正しい答えが得られましたが、並べ替えには別の解決策があります。

Ajax と PHP を使用して、すべての mySQL データを並べ替えることができます。その場合、ページを更新する必要はありません。PHP と Ajax を使用した MySQL データの並べ替えの URL に従って ください。

于 2013-06-14T10:54:43.437 に答える