🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
phpPgAdmin

phpPgAdminは、PHPで作成された複数のPostgreSQLデータベースをブラウザから簡単に管理・操作できるツール。テーブルの作成や参照を始め、データのバックアップやリストアといった操作が可能になります。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

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

ドロップダウンメニュー

GUIを操作するユーザーインターフェイスで、リストボックスに似ており、ユーザーがリストから値を選べるようにするものです。ドロップダウンのリストが非アクティブの場合は、単体の値を表示します。アクティブ化されると、ユーザーが選択可能な値のリスト一覧を表示(ドロップダウン)します。

Q&A

解決済

2回答

1161閲覧

php|phpPgAdmin(PostgreSQL)の中にあるデータを「l_id」の順番に並び変えてドロップダウンメニューを作りたい

ichigob

総合スコア27

phpPgAdmin

phpPgAdminは、PHPで作成された複数のPostgreSQLデータベースをブラウザから簡単に管理・操作できるツール。テーブルの作成や参照を始め、データのバックアップやリストアといった操作が可能になります。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

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

ドロップダウンメニュー

GUIを操作するユーザーインターフェイスで、リストボックスに似ており、ユーザーがリストから値を選べるようにするものです。ドロップダウンのリストが非アクティブの場合は、単体の値を表示します。アクティブ化されると、ユーザーが選択可能な値のリスト一覧を表示(ドロップダウン)します。

0グッド

0クリップ

投稿2019/10/25 01:32

編集2019/10/25 01:33

#現在のドロップダウンは、PostgreSQLの行の並び順のまま出力されています

<?php /* * ドロップダウンを生成する * $value["hoge-hoge_name"]はDBの値 */ include 'Database.php'; ?> <option value="">選択してください</option><option value="施設を問わない">施設を問わない</option> <?php foreach ($result as $value) { ?> <option value="<?php echo htmlspecialchars($value["hoge-hoge_name"], ENT_QUOTES, "UTF-8"); ?>"<?php if ($value["hoge-hoge_name"] == $name_hoge-hoge) {//DBの値($hoge-hoge_name)とフォームの施設名($name_hoge-hoge)が一致していたらOptionにSelectedを追加 echo ' selected="selected"'; } ?>> <?php //頭文字が英字の場合hogeの後に半角スペース追加 if (ctype_alpha(substr($value["hoge-hoge_name"] , 0, 1))) { echo "hoge ".htmlspecialchars($value["hoge-hoge_name"], ENT_QUOTES, "UTF-8"); }else{ echo "hoge".htmlspecialchars($value["hoge-hoge_name"], ENT_QUOTES, "UTF-8"); } ?> </option> <?php } ?>

##PostgreSQLのデータを任意の並び順にしたいというのがメインです。

考えた方法は、

1、PostgreSQLの行自体を並びかえる
2、id の番号を振ってphpの方で その番号順に書き出すという方法です。

現在は、2番の方法で進めたいと思っていますが、任意の並び順にする方法でしたら、こちらの方法でなくてもいいという考えです。

よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

任意の並び順にしたい、のではなく、狙った順所に並べたい、のであれば、
順位を示すカラムをテーブルに追加すればよいだけではないかと。
順位の数字の大小が、並び順を示すようにすることで、
order by句で順位を指定すればその順序に並びます。

名前のふりがな情報を別カラムに持たせて、
ふりがなの辞書順に並べるとかするのであれば、
数値で順位カラムを持たせる必要はなくなりますが。

MAMPにはPostgreSQLもphpPgAdminも含まれないので、
別途インストールする話になるかと。
WindowsかMacかで説明も大きく変わるので、ここでは説明を省きます。
(phpPgAdminのphp7系対応ってマージされてたっけか、と少し不安になった)

投稿2019/10/25 01:49

編集2019/10/25 02:06
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

SQLの方が楽だと思いますよ。

SQL

1ORDER BY l_id DESC // 降順 2ORDER BY l_id ASC // 昇順

投稿2019/10/25 01:38

編集2019/10/25 01:39
mayoi_maimai

総合スコア1583

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

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

ichigob

2019/10/25 01:40

PostgreSQL 内で ORDER BY l_id DESC で行を並び替えるという認識であっていますでしょうか。
ichigob

2019/10/25 01:43

念のため、MampのローカルでphpPgAdmin(PostgreSQL)を作って操作のテストをしたいと考えていますが、うまく設定できません。 Mampでは、phpPgAdmin(PostgreSQL)を作ることはできないのでしょうか。 いろいろ調べていますが、うまくできていません。
mayoi_maimai

2019/10/25 01:48

phpPgAdminあんまり触ってないのですが「SQL」というタブとかボタンがありませんか? 入力フォームが出てくると思うので、そこに実行するsqlを入れれば結果が出てくると思います。 プログラム内で$resultの中に結果が入っていると思うのですが、そのSQLの末尾に回答したORDER BY ~を入れればそのまま動くと思いますが。。
m.ts10806

2019/10/25 01:58 編集

質問者さん 実際の問題とは違う補足部分なのでこちらに書きますが、phpPgAdminも結局はPHPで作られたアプリケーションなので、PHPおよびPostgreSQLのバージョンに対応してるかどうかくらいしか争点はないと思います。 が、個人的にはphpPgAdminよりpgAdminのほうが使いやすいとは思います。(好みの問題もありますけど)
mayoi_maimai

2019/10/25 01:54

ちゃんと全文書かないとエラーになりますよ。 SELECT * FROMテーブル名 ORDER BY l_id DESC
ichigob

2019/10/25 01:55

ありがとうございます。 もし、不具合があった場合、実行したものを戻す方法などはありますでしょうか。
mayoi_maimai

2019/10/25 01:58

SELECT文なら消えたり変更されたりしないので大丈夫だと思います。 心配ならエクスポートでバックアップを取っておけば良いかと。
ichigob

2019/10/25 02:08

不具合があった場合は、エクスポートしたものをインポートすれば、元に戻るという認識であっておりますでしょうか?
ichigob

2019/10/25 02:21

実行するとクエリ結果では、並びかえはできました。 ですが、テーブルのページに戻ると、以前と同じくid順に並んでいない状況です。 並び替えた状態で保存などが必要でしょうか。
mayoi_maimai

2019/10/25 03:05

テーブルのページはselect * from テーブル名での検索結果が表示されるので並べ替えの保存はできないような気がします。 あくまでツール上での表示なのでさほど問題では無いのではないでしょうか。
ichigob

2019/10/25 03:24

すみません。 よくわかっていなのですが、 SELECT * FROMテーブル名 ORDER BY l_id ASC  実行した後も、、テーブルを見るとバラバラです。 https://imgur.com/a/AYorxUY ですので、プルダウンもそのままバラバラのままです。 SELECT * FROMテーブル名 ORDER BY l_id ASC は一時的なのでしょうか? このテーブルを見た時にずっとid ASCの状態で並んでいるようにしたいのですが、どうしたらいいでしょうか。
mayoi_maimai

2019/10/25 03:30

phpPgAdmin内では無理だと思いますよ。(phpPgAdminのプログラムを直せばできるかもしれませんがかなり面倒そう) ただプログラム上ならSELECT * FROMテーブル名 ORDER BY l_id ASCとしておけばプルダウンは常に昇順になります。 $resultの前にあると思われるSQLにORDER BY l_id ASCを付け加えればプルダウンに関しては大丈夫なはずです。
ichigob

2019/10/25 03:34

プルダウンのphpの中に入れるにはどうしたらいいでしょうか。
mayoi_maimai

2019/10/25 03:38

プログラム内でSELECT * FROMテーブル名というところがありませんか? そこをSELECT * FROMテーブル名 ORDER BY l_id ASCにすれば大丈夫だと思いますよ。
ichigob

2019/10/25 04:25

できました! ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問