質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

6669閲覧

PHPmySQL ソート 昇順降順

syosinsyapurogu

総合スコア64

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

0クリップ

投稿2016/07/12 04:50

編集2016/07/12 05:17

いつもお世話になっております。

私はPHPとmysqlを使って下記画像の物を作成しております。
イメージ説明

私が実装したい機能は昇順と降順です。
ドスパラなど通販サイトにある上向きの▲を押すと昇順、下▼なら降順といった感じにしたいです。
イメージ説明

今回その機能をつけたい場所はイベント名のところにつけたいと思っております。

<?php session_start(); if($link !== false) { $page = (int)$_GET['page']; if($page <= 0){ $page = 1; } //件数を取得する $sql = "SELECT count(uketuke.uketuke_id) as total FROM uketuke , login WHERE uketuke.login_id=login.login_id"; if($_POST['select2'] != ""){ $sql .= " AND uketuke.login_id=".$_POST['select2']; } if($_POST['nyuryoku'] != ""){ $sql .= " AND uketuke.eventmei like '%".$_POST['nyuryoku']."%'"; } $result = mysql_query($sql); $total = mysql_result($result, 0, 'total'); // テーブルのデータを取得する $sql = "SELECT uketuke.*, login.name FROM uketuke , login WHERE uketuke.login_id=login.login_id"; if($_POST['select2'] != ""){ $sql .= " AND uketuke.login_id=".$_POST['select2']; } if($_POST['nyuryoku'] != ""){ $sql .= " AND uketuke.eventmei like '%".$_POST['nyuryoku']."%'"; } $sql .= " ORDER BY login_id LIMIT ".(($page-1)*10).",10"; if( ){ $sql .= " ORDER BY eventmei ASC LIMIT ".(($page-1)*10).",10"; } if( ){ $sql .= " ORDER BY eventmei DESC LIMIT ".(($page-1)*10).",10"; } $result = mysql_query($sql); $count = mysql_num_rows($result); // テーブルのデータを取得する $sql = "SELECT login.* FROM login"; $result2 = mysql_query($sql); $count2 = mysql_num_rows($result2); // テーブルのデータを取得する $sql = "SELECT login.* FROM login"; $result3 = mysql_query($sql); $count3 = mysql_num_rows($result3);

コードは上記のようになっており、昇順降順はASCとDESCとわかっているのですが、if文の中身がいまいちわかりません。

下記データベースがuketukeという名のテーブルになりその次がloginという名のテーブルになります。
イメージ説明
イメージ説明

phpとmysqlはまだ触って日も浅いので質問の意図、問題の説明がわかりにくいと思いますが、
その場合はお手数ですが質問の修正依頼をお願いいたします。

ご教授よろしくお願い致します。

mondaminZ👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shi_ue

2016/07/12 04:58

コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。
yambejp

2016/07/12 05:08

きょうびmysql_系関数はありえない、PDOで書きなおしたほうがよい
syosinsyapurogu

2016/07/12 05:15

shi_ueさん 情報の追加・修正依頼ありがとうございます! 早速コードを選択して「</>」でコードブロックさせていただきました。 宜しくお願い致します。
shi_ue

2016/07/12 05:16

全体をコードブロックに入れるとは・・・斬新ですね。
syosinsyapurogu

2016/07/12 05:20

shi_ueさん すみません私の勘違いで全体をコードブロックしてしまいました。 とてもお恥ずかしいです、、、汗
syosinsyapurogu

2016/07/12 05:24

yambejpさん 追加・修正の依頼ありがとうございます! PDOについて調べさせていただいたのですが 「PHP Data Objects」の略なんですね! PODは使ったことがないので勉強させていただきます。
guest

回答2

0

ベストアンサー

phpとmysqlはまだ触って日も浅いので質問の意図、問題の説明がわかりにくいと思いますが、

その場合はお手数ですが質問の修正依頼をお願いいたします。

インデントも滅茶苦茶だし、postされたデータをそのまんまSQLに突っ込んでいるし、何のフィールドが何を表しているかも分からないし、廃止されるという mysql APIを使っているし・・・

ちょっと直すべきことが多すぎて、どこから指摘していいものやら・・・

「こうしたいです」というのは丸投げです。
「こうしたけどうまく動きませんでした」というなら直せます。

もう少し頑張ってみたらどうですか?
ヒントとして、GETでpageを付けていますが、それと似たような感じです。昇順降順にしたいフィールドをパラメータで持たせればいいです。
http://www.example.com/test.php?page=1&event_name=desc
みたいにやって、order byの条件を作ってやってください。

pdo、パラメータクエリ、なども検索してみてください。
頑張って!

投稿2016/07/12 05:29

shi_ue

総合スコア4437

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syosinsyapurogu

2016/07/12 06:53

shi_ueさん ご回答ありがとうございます! 私のコードなどがめちゃくちゃでお見苦しい物を見せててしまい大変申し訳ないです。 教えて頂いた改善点はしっかり時間をかけ、理解しながら修正させていただきます。 質問の仕方も丸投げにならないように気を付けたいと思います。 ヒントとしていただいた、GETでpageを付けるやつを参考にさせていただき無事動くようになりました!大変ありがとうございました。またなにかありましたらその時は宜しくお願い致します。。
guest

0

簡単なサンプルです
今回はSQL文を確認できるようにベタうちしていますが、
PDOを利用する場合はもうちょっと工夫が必要です。

PHP

1<?PHP 2$page=filter_input(INPUT_GET,"page",FILTER_VALIDATE_INT,array('options'=>array('default'=>1,'min_range'=>1,'max_range'=>10))); 3$sort=filter_input(INPUT_GET,"sort"); 4$sort_list=array("X","Y","Z"); 5if(!in_array($sort,$sort_list)) $sort=$sort_list[0]; 6$asc=filter_input(INPUT_GET,"asc"); 7$asc_list=array("asc","desc"); 8if(!in_array($asc,$asc_list)) $asc=$asc_list[0]; 9$count_per_page=10; 10$limit=(($page-1)*$count_per_page).",".$count_per_page; 11 12print <<<eof 13<table border> 14<tr> 15<th>X <a href="?page={$page}&amp;sort=X&amp;asc=asc">▲</a> <a href="?page={$page}&amp;sort=X&amp;asc=desc">▼</a></th> 16<th>Y <a href="?page={$page}&amp;sort=Y&amp;asc=asc">▲</a> <a href="?page={$page}&amp;sort=Y&amp;asc=desc">▼</a></th> 17<th>Z <a href="?page={$page}&amp;sort=Z&amp;asc=asc">▲</a> <a href="?page={$page}&amp;sort=Z&amp;asc=desc">▼</a></th> 18</tr> 19<tr> 20<td>・・・</td> 21<td>・・・</td> 22<td>・・・</td> 23</tr> 24</table> 25<hr> 26<a href="?page=1&amp;sort={$sort}&amp;asc={$asc}">1</a> 27<a href="?page=2&amp;sort={$sort}&amp;asc={$asc}">2</a> 28<a href="?page=3&amp;sort={$sort}&amp;asc={$asc}">3</a> 29<hr> 30eof; 31$sql ="SELECT * FROM WHERE 1 "; 32$sql.="OERDER BY {$sort} {$asc} "; 33$sql.="LIMIT {$limit}"; 34print $sql;

投稿2016/07/12 05:50

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syosinsyapurogu

2016/07/12 06:55

yambejpさん ご回答ありがとうございます。 無事解決することができました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問