PHPによって、MYSQLのデータをテーブル表示していますが、このテーブルの上にセレクトボックス(指定した期間のみが表示されるもの等)を追加したいと思っています。

こういったプログラムの参考になるURLを教えてください。
jquery等何でもよいので手軽に利用できるものが理想です。
[php5.2 mysql5.1]

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/02/28 16:21:26
  • 終了:2010/03/03 17:14:06

ベストアンサー

id:GreenStar No.3

GreenStar回答回数192ベストアンサー獲得回数462010/03/03 02:38:57

ポイント200pt

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

id:dekapurio

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

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

完璧です!

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

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

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

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

2010/03/03 17:09:17

その他の回答(2件)

id:km1967 No.1

km1967回答回数541ベストアンサー獲得回数402010/02/28 16:33:23

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

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


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

id:dekapurio

回答有難うございます。

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

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

日付 | 名前 | 内容

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

2010/02/28 16:44:24
id:karuishi No.2

ニャンざぶろう回答回数764ベストアンサー獲得回数1282010/03/03 01:33:45

ポイント20pt

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

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

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

一例として

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

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

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

などです。

id:dekapurio

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

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

2010/03/03 17:11:46
id:GreenStar No.3

GreenStar回答回数192ベストアンサー獲得回数462010/03/03 02:38:57ここでベストアンサー

ポイント200pt

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

id:dekapurio

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

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

完璧です!

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

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

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

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

2010/03/03 17:09:17
  • id:GreenStar
    >>prototype.js を覚えるともっともっと自由度広がる
    >以前負荷をかけすぎてレンタルサーバーのDBが壊れてしまったことがありまして、

    そうなんですか?!勉強になります!!
    高額ポイントとベストアンサーありがとう!!

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません