質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.59%

<<と>>のボタンを押すと昨日や明日の日にちを表示したい

受付中

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 488

IGFS

score 10

 前提・実現したいこと

<<と>>のボタンを押すと昨日・明日の日付を表示するようにしたいです。
※11/30の場合、>>を押すと12/1を表示、12/1の場合、<<を押すと11/30を表示するようにしたいです。

イメージ説明

 発生している問題・エラーメッセージ

<<と>>のボタンを押したら無反応でした。

 該当のソースコード

<?php
$year=filter_input(INPUT_GET, "year");
$month=filter_input(INPUT_GET, "month");
$day=filter_input(INPUT_GET, "day");

if(isset($_GET['before'])){
    $day=($day-1); 
}else if(isset($_GET['after'])){
    $day=($day+1);
}
?>

<!DOCTYPE HTML>
<html lang="ja">

<head>
    <meta charset="utf-8">
    <title>会議室予約システム:一覧詳細</title>
    <!-- 共通CSS -->
    <link rel="stylesheet" href="css/main.css">
    <!-- ページごとCSS -->
    <link rel="stylesheet" href="css/listDetail.css">

    <!-- jQueryの指定 -->
    <script src="js/jquery-3.2.1.min.js"></script>

    <!-- javascript読み込み -->
    <script src="js/date.js"></script>
    <script src="js/timeTable.js"></script>

    <!-- 共通部分の読み込み -->
    <script type="text/javascript">
        $(function() {
            // 共通htmlにID属性をつけてload
            $("#header").load("include/header_after.html");
            $("#nav").load("include/nav.html");
        });

    </script>

    <!-- 日付表示 -->
    <script type="text/javascript">
        /*
      関数設定(スタート数字、終了数字、表示id名、デフォルト数字)
     */
        $(function() {
            optionLoop(this_year - 5, this_year + 5, 'id_year',             
                <?php
                    /* デフォルト数字を選択した年にする */
                    if(isset($_GET['formbutton'])){
                        echo $year;
                    }else{
                       echo date("Y"); 
                    } 
                ?>
            );
            optionLoop(1, 12, 'id_month',
                <?php
                    /* デフォルト数字を選択した月にする */
                    if(isset($_GET['formbutton'])){
                        echo $month;
                    }else{
                       echo date("n"); 
                    }
                ?>
            );
            optionLoop(1, 31, 'id_day',
                <?php
                    /* デフォルト数字を選択した日にする */
                    if(isset($_GET['formbutton'])){
                        echo $day;
                    }else{
                        echo date("j"); 
                    }        
                ?>
            );
        })

    </script>
</head>

<body>
    <header>
        <div id="header"></div><!-- header.html -->
    </header>

    <nav>
        <div id="nav"></div><!-- nav.html -->
    </nav>


    <!-- ここから内容記述 -->
    <div id="contents">
        <h1 id="title">予約状況一覧</h1>
        <hr id="title-border">
        <h2 id="subtitle">■詳細</h2>
        <hr id="subtitle-border">

        <div class="search">
            <!-- 検索バー -->
            <form method="get"><button class="before" name="before">&laquo;</button></form>

            <form action="listDetail.php" method="get">
                <div id="search-bar">
                    <select name="year" id="id_year" class="sel_year">
                    </select><select name="month" id="id_month" class="sel_month">
                    </select><select name="day" id="id_day" class="sel_day">
                    </select><button id="search-button" name="formbutton">検索</button>
                </div>
            </form>

            <form method="get"><button class="after" name="after">&raquo;</button></form>
            <!-- 検索バー end -->

            <!-- タイムテーブル -->
            <div class="timeTable">
                <!-- タイトル -->
                <table class="timeTable-title">
                    <colgroup>
                        <col style='width:10%;'>
                        <col style='width:25%;'>
                        <col style='width:25%;'>
                        <col style='width:25%;'>
                        <col style='width:16px;'>
                    </colgroup>
                    <tr>
                        <th class="timecell"></th>
                        <th class="coltitle">201会議室</th>
                        <th class="coltitle">301会議室</th>
                        <th class="coltitle">401会議室</th>
                        <th></th>
                    </tr>
                </table>
                <!-- タイトルend -->
                <!-- データ -->
                <div class="y-scroll">
                    <div class="y-hidden">
                        <table class="y-data">
                            <colgroup>
                                <col style='width:10%;'>
                                <col style='width:25%;' class="1">
                                <col style='width:25%;' class="2">
                                <col style='width:25%;' class="3">
                                <col style='width:16px;'>
                            </colgroup>
                            <script type="text/javascript">
                                var text = times();
                                for (var i = 0; i < text.length; i++) {
                                    document.write(text[i]);
                                }

                            </script>
                        </table>
                    </div>
                </div>
                <!-- データend -->
            </div>
            <!-- タイムテーブル end -->
        </div>
    </div>
    <!-- end -->

</body>

<!-- スクロールバー初期位置の設定 -->
<script type="text/javascript">
    $('.y-scroll').scrollTop(810);

</script>

</html>

 試したこと

if(isset($_GET['before'])){
$day=($day-1); 
}else if(isset($_GET['after'])){
$day=($day+1);
}

これでとりあえず日付に-1、+1くらいは出来るかなと書いてみましたが、ボタンを押しても反応しませんでした...

 補足情報(FW/ツールのバージョンなど)

Bracketsで作業をしています。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+2

<form method="get"><button class="before" name="before">&laquo;</button></form>


とか

<form method="get"><button class="after" name="after">&raquo;</button></form>


が<<とか>>の箇所だと思うのですが、
前日や翌日の日付データをform要素内に持たせたり、
あるいはbuttonクリック時のonClickイベントを追加したりしない限り
ただのハリボテでしかないと思います。

どこに対してどういうデータを送信したら、
その画面に表示される日付が変わるのか「仕様がわからない」ため、
解決に至りますようお祈り申し上げます。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

  • 「検索」は動いているのでしょうか?
    具体的には押してページロードが行われますか?
    php側で、getで送られたハズの値をechoしてみて表示されますか?
$day=filter_input(INPUT_GET, "day");
echo $year." ".$month." ".$day; //こういうの
  • >>
    そのフォームには日付がありません

  • 日付の計算
    year,month,dayから一旦日付を表現するクラスにでもしないと、単にdayを引いたり足したりしても、-1日や32日になるだけです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.59%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る