現在、postgreSQL+phpで簡単なイベント検索機能付きのホームページを作っています。
DB側には、テーブルがひとつだけ。
日付、イベント名、場所などの列があり、場所が複数なため、同じ日付けで別のイベントという情報もあります。
表示したいのは、日付ごとの情報です。
しかも検索は○日~○日という風に数日間に渡って検索します。
つまり、
1月1日
イベント名:その1
場所:会場1
イベント名:その2
場所:会場2
---------
1月3日
イベント名:その3
場所:会場1
イベント名:その4
場所:会場4
---------
という感じです。
これが上手く行かないんですよね。
「考え方」で結構ですのでご教授頂けないでしょうか?
No.3ベストアンサー
- 回答日時:
#1です。
何が不明かよくわかりませんが、SQLで取得したあとの配列変数を使用して、行う簡単な処理を記述してみました。SQL取得部分は定数として書いちゃってます。動作確認済みです。(PHPははじめてなので変なところがあるとは思いますが。)<HTML>
<HEAD>
</HEAD>
<BODY>
<?php
$arr[0] = "2004-01-01";
$arr[1] = "2004-01-01";
$arr[2] = "2004-01-01";
$arr[3] = "2004-01-02";
$arr[4] = "2004-01-03";
$prev = $arr[0];
for($i=0;$i<5;$i++){
if($arr[$i] != $prev){
$prev = $arr[$i];
printf("------<BR>");
}
printf("date:%s<BR>", $arr[$i]);
}
printf("------");
?>
</BODY>
</HTML>
ご丁寧にありがとうございます。
実は昨日からようやくデータベースに再び取りかかったのですが、まだ解決してません....
でも、ちょっと時間も経ちすぎてしまいましたし、この辺で締め切りたいと思います。
No.2
- 回答日時:
私もPHP自体は、あまり詳しくありませんが・・・
SQLでデータを取り出すのと、書式(表示形式)を整理する処理は、別々に行えばよいのでは?
SELECTで取り出したデータは、次々に配列に追加しておいて、全部取り出したら、その配列を使ってループし、中のの日付文字列を操作するイメージで、比較も分岐も行えばよいかと。格納時に多次元配列を使っていれば、さらに楽かもしれません。
ロジックそのものは、#1の方のものでよいかと思います。
ご丁寧にありがとうございます。
実は昨日からようやくデータベースに再び取りかかったのですが、まだ解決してません....
でも、ちょっと時間も経ちすぎてしまいましたし、この辺で締め切りたいと思います。
No.1
- 回答日時:
1)select * from テーブル where 日付 >= to_date('検索開始日付','YYYY-MM-DD') and 日付 <= to_date('検索終了日付','YYYY-MM-DD') order by 日付,イベント名,場所;
でデータを取得する。
(検索日付の入力フォーマットが2004/3/11ならば、フォーマット文字列は'YYYY/MM/DD'にする。)
2)上記取得データ数、以下を繰り返す。
3)日付データが前データと同じ場合は"イベント名:"SQL取得イベント名
及び"場所:"SQL取得場所を出力する。
4)イベント名が前データと同じ場合は、"場所:"SQL取得場所のみ出力する。
5)日付データが前データと違う場合は"---------"を出力する。
で、どうでしょう。当方phpは知りませんので、ロジックだけ。
この回答への補足
こんばんは。
回答ありがとうございます。
どうにも引っかかっているのは実は、取得した日付とその次に取得した日付を比較する部分でして。
(ご存じないとのことですが)phpだと、その変数は$arr[0]などの可変変数なわけでして。
どこで比較するのか?という。
そこで何か発想を変えようかと思った次第でして。
引き続きよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLで部分的にGROUP BYしたいとき
-
Accessの数値から時間に変換す...
-
日付書式に変換でこまっています!
-
日付型なら変数の先頭になん...
-
SQLite3のtext→date変換について
-
重複するIDのデータを1行にま...
-
SQLで今日の日付でWhereしたい
-
23時59分59秒までのデータを抽...
-
WHERE句にて「30日前から今日ま...
-
Access VBAで行ラベルが定義さ...
-
キャッシュを使わずにSELECTを...
-
DB2のSELECTでカンマ編集につい...
-
sqlplusでヘッダーが付かない
-
Accessのマクロでモジュールを...
-
PL/SQLでSPOOLさせたいのですが...
-
SQL*Loaderでのsysdate使用
-
エクセルVBAでUserFormを起動し...
-
VBA プロシージャの名前の取得
-
ODBCリンクの際にACCESSでは読...
-
PL/SQLでのSQL文法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessの数値から時間に変換す...
-
SQLで部分的にGROUP BYしたいとき
-
今日の日付が入った行のデータ...
-
SQLサーバで和暦から西暦に変換...
-
重複するIDのデータを1行にま...
-
テーブルの主キーをdate型...
-
oracle 文字列 01:45 を時間に...
-
日付型なら変数の先頭になん...
-
エクセル 日付による並べ替え...
-
yyyy/M/dをyyyy/MM/ddに変換
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
WHERE句にて「30日前から今日ま...
-
日付書式に変換でこまっています!
-
ExcelのSUMPRODUCTで日付の範囲...
-
OSのシステム日付を変更して...
-
wordの差し込み印刷での日付表示
-
Excelグラフの日付軸の日付がず...
-
エクセルのヘッダーを変数で指...
-
日付の切り出し方法について
-
DB2のSQL(日付)について
おすすめ情報