PHPを初めて3ヶ月ほどになります。ご教授お願いします。
PHP4.3.2:MySQL 4.1.18を使用しています。
買い物カゴシステムを作成しています。
詳細ページから気になる商品をランダムに買い物カゴへ入れていきます。
現在、買い物カゴの中身を確認すると、チェックした順に表示されます。
これを、商品名ごとに50音で並び替えをしたいのです。
$sql = "SELECT * FROM `M_ITEM` WHERE ITEM_CD = '$cookie[$i]' ORDER BY `ITEM_NAME` ASC";
上記を入れても、並び替えされません。
いろいろ調べて試しているのですが、かなりお手上げ状態になっています。
初歩のことかもしれないのですが、よろしくお願いしいたします。
他に必要な情報などいるようでしたら、教えていただけると助かります。
No.5ベストアンサー
- 回答日時:
PHPに詳しくないので、、SQL文の部分にのみお答えします。
WHERE句が "="で比較されているということは、一致したものを取ってきているだけなので、
選択された全項目をソート順にしたければ、
WHERE句の部分を
ITEM_CD = '~' ではなく
ITEM_CD IN ('~', '~', ..., '~') のように、しなくてはいけません。
$sqlwhere = "ITEM_CD IN(";
for ($i = 1; $i <= xx; $i++) {
if($i != 1){
$sqlwhere = $sqlwhere + ",";
}
$sqlwhere = $sqlwhere + "'" + $cookee[$i] + "'";
}
$sqlwhere = $sqlwhere + ")";
$sql = "SELECT * FROM 'M_ITEM' WHERE " + $sqlwhere + " ORDER BY 'ITEM_NAME' ASC";
こんな感じ?(PHPは詳しくないので文法はあやしげ(^-^;)
貴重なご意見ありがとうございます。
上記プログラムを試してみたのですが、全てのデータが表示されてしまいました…
やはりプログラム構造から見直しかと思います。
そのときは、上記プログラムを参考にさせていただきます。
No.4
- 回答日時:
バッククォートやシングルクォートの有無は無関係でしょう。
$sql = "SELECT * FROM `M_ITEM` WHERE ITEM_CD = '$cookie[$i]' ORDER BY `ITEM_NAME` ASC";
というSQLを見ると、while文やfor文でループして、アイテム数分だけSQLを実行しているように思えますが違いますか? もしそうならば、$cookieの並び順で結果が出力されてもおかしくないです。プログラムの構造を変更する必要があります。
貴重なご意見ありがとうございました。
バッククォートやシングルクォートの有無は無関係でしょう。
はい、関係ありませんでした…
まさしくループしています。プログラム構造から見直ししたいと思います。
No.3
- 回答日時:
変数の部分を実際の数値にしたらどうですか?
実際にMYSQLにコマンドを打ち込んで動作確認してみてはどうでしょう。変数の部分がおかしければレコードセットが0になるはず。
あと、PHPのアプリの一部をもっと乗せるといいかもしれません。
貴重なご意見ありがとうございます。
MYSQLにコマンドを打ち込んで動作確認してみてはどうでしょう。
ということなのですが…さすがに、そのやり方がわからず…
まだまだ勉強不足だということを痛感しております。
PHPのアプリの一部も…と思っているのですが、どこを乗せていいのかもかなり怪しいもので。
いろいろこちらを参考に勉強いたします。
No.2
- 回答日時:
$sql = "SELECT * FROM `M_ITEM` WHERE ITEM_CD = '$cookie[$i]' ORDER BY `ITEM_NAME` ASC";
PHPで変数に格納するときは''が必要なかったと思います。
なので、
$sql = "SELECT * FROM M_ITEM WHERE ITEM_CD = $cookie[$i] ORDER BY ITEM_NAME ASC";
ではどうでしょうか?
貴重なご意見ありがとうございます。
''をはずしてやってみたのですが、出来ませんでした…
他の部分との兼ね合いの問題かもしれません。
もう少しPHPを勉強しなければ、と気合入れ直しています。
「PHPで変数に格納するときは''が必要なかった」
ということを知らなかったので、参考になりました。
ありがとうございます。
No.1
- 回答日時:
M_ITEM と ITEM_NAME のシングルウォーテーションはいりますかね。
簡単なSQL文では動くのでしょうか?
この回答への補足
ご回答ありがとうございます。
シングルウォーテーションをはずしてもエラーは出ませんが、
表示の切替はされませんでした。
試しに、↓の部分を削除してみたら、並び替え出来ました。
WHERE ITEM_CD = '$cookie[$i]'
しかしデータベースに登録されているもの全てが並び替えされました。
簡単なSQL文に当てはまるか分からないのですが、
上記の2点を試してみました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- PHP PHP MySql ページング 2 2022/09/20 06:38
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- HTML・CSS FC2カートのテンプレートでの商品表示について 1 2023/03/02 18:05
- スーパー・コンビニ スーパーでの迷惑行為について 2 2022/08/21 17:02
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 日本の全市区町村を人口密度が低 1 2023/06/18 19:51
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「名前(first name) 1 2023/06/24 13:03
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
php 入力画面から確認表示画面...
-
PHPでCSVを出力するさいに、ル...
-
ワードプレスサイト PHP8.0.25...
-
PHPを使って、別サイトの一部を...
-
PHP ページング データベース
-
Q&Aサイトを作成していてURLの...
-
PHPの構文で間違えが分からない
-
書籍とその書籍が提供している...
-
PHPとHTML+Xamppの掲示板で画像...
-
ファイルの書き込みについて教...
-
Postgresの特定のカラムからス...
-
htmlspecialcharsが機能してい...
-
【初心者】XAMPPのapacheの(恐...
-
プログラミング言語で、使える...
-
こちらはただの直列処理ですか?
-
PHPでこのコード自体に意味は無...
-
phpでPEAR::DBを使っているので...
-
index.phpって何ですか? 具体...
-
index.phpに入るには、どうすれ...
-
awsにApacheとPHPを入れて、何...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JAVA SQLServerException 列名 ...
-
<VB.NET>INSERT文でDBにデータ...
-
Pro*Cの構文エラー
-
Q&Aサイトを作成していてURLの...
-
ResultSetインターフェイスでの...
-
VBA ACCESS SQL...
-
データベースに存在するデータ...
-
VB.NET エラーになる箇...
-
insert1つの処理でもトランザ...
-
MySQLのINSERT時にたまに重複に...
-
INSERT,DELETEを同時に
-
like検索の複数キーワードで、...
-
PHP&MySQLでの文字列+数列の一...
-
mysqliを使ってデータベースを...
-
PHP+SQLite でSELECT文のWHERE...
-
PHP初心者です。syntax error, ...
-
php MySQL で、更新ボタンを押...
-
SQLインジェクション対策
-
phpでforeach ($stmt as $row)...
-
OR検索を実装したい
おすすめ情報