人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPによって、MYSQLのデータをテーブル表示していますが、このテーブルの上にセレクトボックス(指定した期間のみが表示されるもの等)を追加したいと思っています。
こういったプログラムの参考になるURLを教えてください。
jquery等何でもよいので手軽に利用できるものが理想です。
[php5.2 mysql5.1]

●質問者: dekapurio
●カテゴリ:ウェブ制作
✍キーワード:jQuery MySQL PHP URL セレクト
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● km1967
●0ポイント

セレクトボックス(指定した期間のみが表示されるもの等)

どんなものだか想像がつかない。例示してほしい


開始日時と終了日時のカラムを追加するということだろうか?

◎質問者からの返答

回答有難うございます。

以下のようなテーブルの上に、セレクトボックスを設置し、

2008年を選択すると、2008年分のデータのみ表示されるというイメージです。

日付 | 名前 | 内容

2009/1/1 | 山田 | こんにちは


2 ● ニャンざぶろう
●20ポイント

完全にはイメージが掴みきれていませんが、たぶん

「PHP MySQL リストボックス」か「PHP MySQL コンボボックス」等でgoogle検索すると

多くのページがヒットしますよ。

一例として

http://www.phppro.jp/qa/345

http://okwave.jp/qa/q1433502.html

http://okwave.jp/qa/q2116981.html

などです。

◎質問者からの返答

karuishiさん回答ありがとうございます。

やりたいことに近い処理もあり、参考になりました。


3 ● GreenStar
●200ポイント ベストアンサー

http://q.hatena.ne.jp/1266938552 に年のプルダウンをつけてみた! でもごめんなさい!!動かして無いです。

TABLEA に日付というカラムがあるかどうかも知らずに書いてます。ごめんなさい。

$conn = mysql_connect("接続");
mysql_select_db("DB名");

$s = 2000; // データは2000年からあると決めた!
$e = date('Y'); // 終わりは今年だ!
$year1 = (isset($_GET['year1']) ? $_GET['year1'] : 2000); // 何も指定されなけりゃ全データ!
$year2 = (isset($_GET['year2']) ? $_GET['year2'] : date(Y)); // 全部だからMAXは今年!
echo '<form method="get" action="' . $_SERVER['PHP_SELF'] . '">';
echo '<select name="year1">';
for ($i = $e; $i > $s; $i--) {
 echo '<option value="' . $i . ($i == $year1 ? '" selected="true">' : '">') . $i . '</option>';
}
echo '</select>年から';
echo '<select name="year2">';
for ($i = $e; $i > $s; $i--) {
 echo '<option value="' . $i . ($i == $year2 ? '" selected="true">' : '">') . $i . '</option>';
}
echo '</select>年まで';
echo '<input type="submit" value="チェンジ!" />';
echo '</form>';

echo '<table>';
echo '<thead><tr><th>id</th><th>name</th><th>price</th></tr></thead>';
echo '<tbody>';
$query = 'SELECT * FROM TABLEA WHERE YEAR(日付) BETWEEN ' . $year1 . ' AND ' . $year2;
$result = mysql_query($query);
while (($row = mysql_fetch_array($result, MYSQL_ASSOC)) != NULL) {
 echo '<tr><td>' . $row['id'] . '</td><td>' . $row['name'] . '</td><td>' . $row['price'] . '</td></tr>';
}
echo '<tbody></table>';

mysql_close($conn);

BETWEEN 使ったから $year1 <= $year2 になるように選択しないと結果はゼロ件になっちゃう。注意!!

echoの数だけ出力手続きが動いて負荷になるから、ちょっと減らした。

どうせcloseすれば開放されるんだからmysql_free_resulはいらない。勝手にやらせるほうがいい。


年じゃなくて年月が必要なら年と同じようにプルダウンンを作ってSQLのほうも年月にすればいいんだけど、日までとなると大の月とかうるう年とか一挙に複雑怪奇になるから、下のような出来合いのカレンダーコントロールを頂戴して呼び出すようにしたほうがいいです。

http://game.gr.jp/js-ml/samples/199912/calendar/calendar.htm


prototype.js を覚えるともっともっと自由度広がるようなんだけど、私はあんまり使ってないから、こんな方法しか回答できない。不勉強でごめんなさい。少しでも役に立つかな?

◎質問者からの返答

GreenStarさん回答ありがとうございます。

早速ためさせていただきました。

完璧です!

よくありそうな処理なのですが、やさしく解説してくれている書籍がなくて困っておりました。

私自身プログラム初心者ですが、大変わかりやすいコードで勉強にもなり、応用もききそうです。

>prototype.js を覚えるともっともっと自由度広がる

以前負荷をかけすぎてレンタルサーバーのDBが壊れてしまったことがありまして、負荷をかけない処理を目指していたのですが、これぐらいの処理で実現できるなら全く問題なしです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ