1

MySQLクエリを実行して、選択したフィルターで出力データを並べ替えるPHPコードがあります。

私が抱えている問題は、1語以上でフィルタリングする場合、つまり色でフィルタリングする場合、RED、YELLOWなどでは正常に機能しますが、BLUENAVYでは機能しないことです。

追加すれば十分だと思いました'"が、そうではありません。

これが私の現在のコードです:

 <?php
$colors = $con -> prepare("SELECT DISTINCT color_base1 FROM item_descr ORDER BY color_base1 ASC");
$colors ->execute();
while ($colorBoxes = $colors->fetch(PDO::FETCH_ASSOC))
{
echo "<input type='checkbox' class='regularCheckbox' name='color' value='".$colorBoxes[color_base1]."' /><font class='similarItemsText'>   ".$colorBoxes[color_base1]."</font><br />";
}
?>

ありがとう!

4

2 に答える 2

0

あなたのSQLは正しく見え、コードも正しく見えますが、SELECT DISTINCT これを使用しているため問題が発生している可能性があり、2つの単語から1つの単語のみを選択するため(青とネイビーとは区別されます)、より適切で推奨される別の方法があります. +同じ仕事をしているので、使用している場合はORDER BYここで必要ありません。DISTINCTORDER BY

  • item_descrタイプを使用している場合、ENUMまたはSET列の値ではなく列のインデックスで並べ替えられます。

代わりにこれを試してください

SELECT color_base1 FROM item_descr ORDER BY color_base1 ASC   

ここでDEMO SQL FIDDLE

于 2012-12-18T19:47:03.130 に答える
0

配列インデックスを引用符で囲む必要があります。

変化する:$colorBoxes[color_base1]

に:$colorBoxes['color_base1']

ボーナスポイント:

printf(
    "<input type='checkbox' class='regularCheckbox' name='color' value='%s' /><font class='similarItemsText'>   %s</font><br />",
    $colorBoxes['color_base1'],
    $colorBoxes['color_base1']
);

nameまた、入力フィールドにスペースが含まれている場合、フォーム データはおそらく非常に奇妙なものになります。フォームの送信後に を試してvar_dump($_REQUEST)取引内容を確認してください。ただし、フィールドにスペースを使用しないことをお勧めしますcolor_base1

于 2012-12-18T17:07:50.603 に答える