■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

今月以外のカレンダーを表示する方法

kudou > 今月以外のカレンダーを表示する方法 @ 2016/6/3 17:02
お世話になります。

WEB制作をしておりカレンダーの表示について不明点がございます。

プルダウンリストから年と月を選択し、
その月のカレンダーを表示させるコードを作成したのですが、
ログアウトした状態で今月以外の年月を選択してもその月のカレンダーが表示されず、
今月のカレンダーが表示されてしまいます。

■現状
・今月のカレンダーは問題なく表示されている。
・管理画面にログインしてからページを確認すると問題なく今月以外の月も表示される。
・プルダウンから値は取得できている。
・scheduleCalendarの引数に値を読み込めていないためデフォルトで今月のカレンダーを表示してしまう。


ログインしてから確認すると問題なく表示されるが、ログアウトすると他の月が表示されない為
環境の問題なのかと考えましたが解決に至っておりません。

ご教授のほど、宜しくお願い致します。


■ BaserCMSのバージョン:3.0.7
■ スマートURLの利用:  OFF
■ 設置フォルダ: D:/xampp/htdocs\
■ 利用しているデータベース:  MySQL
■ PHPスキル(自己評価): C

■ OSの種類: Windows Server 2008 R2 Standard
■ PHPのバージョン:2.5.3


ソースコードは以下になります。

BcBaser->scheduleCalendar($_SESSION["year"],$_SESSION["month"], array('title' => true)) ?


goichi > Re: 今月以外のカレンダーを表示する方法 @ 2016/6/3 20:48
プルダウンで月を選んだあと、送信ボタンか何かを押させてますよね?
もしもセッションを使うのに大きな意味がなければ、URLパラメータで値を渡すのも一つの手かなと思いますよ(GET方式)。

その仕組を作ってしまえば、ここのサイトのように「前月」「次月」といったリンクを作って、カレンダーを操作しやすいと思います。
kudou > Re: 今月以外のカレンダーを表示する方法 @ 2016/6/6 11:59
goichi様

ご返信ありがとうございます。

下記のソースのように、プルダウンで月を選んだあとにOnchangeでページの更新を行っています。
また、値を取得する際GET方式を用いてURLパラメータで値を渡しています。

月を選んだ後URLに値が反映されているため、値は渡されているという認識です。

URLに値が反映されているので、scheduleCalendarが機能していないということなのでしょうか。
ログイン時とログアウト時で挙動が違うという点がどうにもわかりません。

以上、宜しくお願い致します。

※以下ソースコード
<?php 
function calendar(){
    if($_SESSION["year"] == ""){
        $_SESSION["year"] = date(Y);
    }
    if($_SESSION["month"] == ""){
        $_SESSION["month"] = date(n);
    }
    /////////プルダウンリストから年を選んだ時の処理////////////
    if($_GET['year']){
        $_SESSION["year"] = $_GET['year'];
    }
     /////////プルダウンリストから月を選んだ時の処理////////////
    if($_GET['month']){
        $_SESSION["month"] = $_GET['month'];
    }
      /////////ココから今月の処理////////////
    if(@$_GET['kongetu']){
        $_SESSION["year"] = date(Y);
        $_SESSION["month"] = date(n);
    }
echo<<<EOT
<div class="calendar_box">
<div style="text-align:center;">
<div style="margin-left:auto; margin-right:auto;">
 
<form action="" method="GET">

<select name="year" onChange="submit()">
EOT;

    for ($i = 2016; $i <= 2020; $i++) {
        echo "<option value='".$i."'";
        if ($i == $_SESSION["year"]) echo " selected";
        $di = mb_convert_kana($i,A,"UTF8");
        echo ">".$di."年</option>\n";
    }
 
echo<<<EOT
</select>
<select name="month" onChange="submit()">
EOT;

    for ($i = 1; $i <= 12; $i++) {
        echo "<option value='".$i."'";
        if ($i == $_SESSION["month"]) echo " selected";
        $di = mb_convert_kana($i,A,"UTF8");
        echo ">".$di."月</option>\n";
    }
 
echo<<<EOT
</select>
<input type="submit" name="kongetu" value="今月">
</form>

</div>
</div>

EOT;

}
?><!--
<?php calendar(); ?>

<p><?php $this->BcBaser->scheduleCalendar($_SESSION["year"],$_SESSION["month"], array('title' => true)) ?></p>
<!--
<?php $this->BcBaser->getScheduleDatas($_SESSION["nen"], $_SESSION["tuki"]) ?>
<?php $this->BcBaser->schedules() ?>
-->

goichi > Re: 今月以外のカレンダーを表示する方法 @ 2016/6/8 19:40
未検証なのですが、ログインはセッション機能を使うわけですから、ログアウトする時に、$_SESSIONが破棄されてるんだと思います。
なので、いまソース中のscheduleCalendar()の引数に、セッションを使って渡している部分で、不具合がでるのではないですか?
(違ってたらすみません!)
kudou > Re: 今月以外のカレンダーを表示する方法 @ 2016/6/15 17:04
goichi様

助言頂きありがとうございます。
セッション機能を使わない方法を試してみます。

宜しくお願いします。
ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
30 人のユーザが現在オンラインです。 (30 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 30