アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下の日付プルダウンですが、
任意の日付が選択されたときに、
その値(日付)を他の変数に渡せるようにしたいです。
どのように他の変数に渡せば良いでしょうか?

<?
$today=time();
$limit=30;
echo "<select name=puldown>";
$menu=$today;
for($i=0; $i<$limit; $i++){
 $menu=date("Y/m/d",$today-86400 * $i);
 echo "<option value=$menu>$menu</option> \n";
}
echo "</select>";
?>

A 回答 (5件)

同じページへ渡すのであればPOSTよりGETのが書きやすいかもしれないです。

main.phpの先頭でプルダウンが変更された時とそうでないときの判定が必要になります。
----- ページの先頭 -----
<?php
if(isset($_GET['sendday']))
{
//日付を受け取る
$sendday = $_GET['sendday'];
//SQL用に日付を加工
$sqlday = addslashes(date('Y/m/d',$sendday));
//DB接続・選択処理
//SQL作成
//SQL実行
}
//自身のスクリプト名
$self = $_SERVER['SCRIPT_NAME'];
?>
html記述開始
<!DOCTYPE ~

で、javascript記述ですがプルダウンのoptionのvalueにジャンプしたいURLとそのURLに渡したい値をパラメータでつけてやって飛ばすようにします。
<SCRIPT LANGUAGE="JavaScript">
<!--
function Jump()
{
//valueを取得する
url = f.elements['pulldown'].options[f.elements['pulldown'].selectedIndex].value
if(url != "-")
{
//指定ページへジャンプ
location.href = url;
}
}
// -->
</SCRIPT>

html記述
<body>
~~~

ジャンプ後プルダウン部分は表示しないのであれば
<?php
//ジャンプする前
if(!isset($_GET['sendday']))
{
?>
<form name="f">
<select name="pulldown" onChange="Jump();">
<option value="-" >日付を選択</option>
<?php
$limit=30;
for($i=0;$i<$limit;$i++)
{
//今日から30日間
$day = mktime (0, 0, 0, date("m"), date("d")+$i, date("y"));
$strday = date('Y/m/d', $day);
?>
<option value="<?php echo $self ?>?sendday=<?php echo $day ?>"><?php echo $strday ?></option>
<?php
}
?>
</select>
</form>
<?php
}
//ジャンプした後
else
{
?>
SQLを<?php echo $sqlday ?>で抽出した結果をここに記述
<?php
}
?>

</body>

こんな感じではないでしょうか。
    • good
    • 0
この回答へのお礼

何度もありがとうございます!
今回は、簡単なコード修正で済むのでANo.4さんのやり方で行くことにしましたが、貴重な手法をお教えいただき、大変感謝しています。
ぜひ、今後に役立たせていただきたいと思います。
何かありましたら、またよろしくご教授くださいませ。

お礼日時:2007/05/15 10:28

location.href では、フォームデータを渡さないので、


<select name="pulldown" onChange="this.form.submit()" >
でいけると思うけど。
JavaScript offの時は動作しないので、submitボタンも置いておく必要はあります。
    • good
    • 0
この回答へのお礼

上手くいきました!
シンプルなので、今回はこれで行きたいと思います。
ありがとうございました!

お礼日時:2007/05/15 10:25

javascriptですね。


同じようなことをやっていた方が参考URLに書かれています。

参考URL:http://oshiete1.goo.ne.jp/qa2944258.html

この回答への補足

ありがとうございます。
ただ、別ページに飛ばしたいわけではなく、同ページに更新をかけるような感じになるので、以下のようにやってみました。
が、PHPが処理される前に、同ページ(main.php)に飛ぶだけ(ただ更新されるだけ)で、ブラウザには何も反映されないようです。


<SCRIPT LANGUAGE="JavaScript">
<!--
function Jump() {
location.href = 'main.php';
}
// -->
</SCRIPT>


<select name="pulldown" onChange='Jump();'>

補足日時:2007/05/14 21:13
    • good
    • 0

やりたいことがイマイチよく判らないのですが・・・。


新しい変数に渡したいだけなら
<?
$today=time();
$limit=30;

//データをPOSTで受取新しい変数へ
$new_hensu = $_POST["puldown"];

echo "<FORM METHOD='POST' ACTION='$SERVER[PHP_SELF]'>";
echo "<select name=puldown>";
$menu=$today;
for($i=0; $i<=$limit; $i++){
$menu = date("Y-m-d", $today - 86400 * $i);
echo "<option value=$menu>$menu</option> \n";
}
echo "</select>";
echo "<input type='submit' value='Go!'>";
echo "<form>";
echo "<br>";

echo "$new_hensu";
?>
こんな感じ?

この回答への補足

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

やりたいことは、単に選択された日付で、テーブルのデータを抽出してブラウザに返したいだけです。
SQL以降はできているので、あとは日付選択で日付を変数に渡すところだけなのです。

日付を選択したと同時にサブミットさせたいのですが、何か良い方法はありますでしょうか?
javascriptとか使わないと、PHPだけだと無理でしょうかね?

補足日時:2007/05/14 18:54
    • good
    • 0

書かれたソースを実行するとエラーがでるのですが・・・。



----- 日付選択側php -----
<body>
<form name="form1" method="post" action="getdate.php" target="_blank">
<select name="pulldown">
<?php
$limit=30;
for($i=0;$i<$limit;$i++)
{
//今日から30日分
$day = mktime (0, 0, 0, date("m"), date("d")+$i, date("y"));
$strday = date('Y/m/d', $day);
?>
<option value="<?php echo $day ?>"><?php echo $strday ?></option>
<?php
}
?>
</select>
<br>
<br>
<input type="submit" name="Submit" value="送信">
</form>
</body>

----- 受け取り側php -----
<?php
$getdate = $_POST['pulldown'];
$viewdate = date('Y/m/d', $getdate);
echo $viewdate;
?>

上記のような感じでできるかと思います。
渡す時は整形する前の形で渡して受け取った側で整形してやるのが簡単で良いかと思います。

この回答への補足

書いたソースを実行するとエラーがでるのは、見やすさを優先して全角スペースを入れて投稿してしまったためだと思います。
すいません。。

ご回答ありがとうございました!
ただ、日付を選択したと同時にサブミットさせたいのですが、何か良い方法はありますでしょうか?

補足日時:2007/05/14 18:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!