0

PHPカレンダーを更新できる関数を作成しようとしています。このコード セットは $_POST["showmonth"] と $_POST["showyear"] をコントローラーに送信することになっていますが、明らかに機能していないため、未定義のインデックス エラーが発生します。正直なところ、私は JavaScript のまったくの初心者で、YouTube のチュートリアルに従っていただけでした。onClickトリガーによってアクティブ化される来月と先月の2つの同様の機能があります。問題が何であるかについて誰か提案がありますか?

私が発表したphpファイルの9行目と10行目でエラーが発生しています

$showmonth = $_POST['showmonth']; and $showyear = $_POST['showyear'];

注意: 未定義のインデックス: /home/jharvard/vhosts/localhost/html/calendar_start.php の 9 行目の showmonth

    <script language="JavaScript" type="text/javascript">
function intialCalendar(){
// Create our XMLHttpRequest object
var hr = new XMLHttpRequest();
// Create some variables we need to send to our PHP file
var url = "calendar_start.php";
var currentTime = new Date();
var month = currentTime.getMonth()+1; 
var year = currentTime.getFullYear();
showmonth = month;
showyear = year;
var vars = "showmonth="+showmonth+"&showyear="+showyear;
hr.open("POST",url, true);
// Set content type header information for sending url encoded variables in the request
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// Access the onreadystatechange event for the XMLHttpRequest object
hr.onreadystatechange = function() {
(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
document.getElementById("showCalendar").innerHTML = return_data;
}
}
// Send the data to PHP now... and wait for response to update the status div
hr.send(vars); // Actually execute the request
document.getElementById("showCalendar").innerHTML = "processing...";
}
</script>

これは私のhtmlファイルです

<!DOCTYPE html>

<html>

    <head>

        <link href="css/bootstrap.css" rel="stylesheet"/>
        <link href="css/bootstrap-responsive.css" rel="stylesheet"/>
        <link href="css/styles.css" rel="stylesheet"/>
        <link href="css/calcss.css" rel="stylesheet" type= "text/css" media = "all"/>
        <?php if (isset($title)): ?>
            <title>Calendar: <?= htmlspecialchars($title) ?></title>
        <?php else: ?>
            <title>Calendar</title>
        <?php endif ?>

        <script src="js/jquery-1.8.2.js"></script>
        <script src="js/bootstrap.js"></script>
        <script src="js/scripts.js"></script>
       <script src="js/calendar_functions.js"></script>




    </head>

    <body onload="initialCalendar();">



        <div class="container-fluid">

            <div id="top">
                <a href="calendar_start.php"><img alt="Calendar" src="img/square.png"/></a>
            </div>

            <div id="middle">

             <div id="showCalendar"></div>

これは私のphpファイルです

<?php

   // configuration
    require("../includes/config.php"); 
     require("../templates/show_calendar.php");


$showmonth = $_POST['showmonth'];
$showyear = $_POST['showyear'];
$showmonth = preg_replace('#[^0-9]#i', '', $showmonth);
$showyear = preg_replace('#[^0-9]#i', '', $showyear);

$day_count = cal_days_in_month(CAL_GREGORIAN, $showmonth,$showyear);
$pre_days = date('w', mktime(0, 0, 0, $showmonth, 1, $showyear));
$post_days = (6-(date(mktime(0, 0, 0, $showmonth, $day_count, $showyear))));

echo '<div id="calendar_wrap">';
echo '<div class="previous_month"><input name="myBtn" type="submit" value="Previous Month" onclick="javascript:last_month();"></div>';
echo '<div class="next_month"><input name="myBtn" type="submit" value="Next Month" onclick="javascript:next_month();"></div>';
echo '<div class="title_bar">';
echo '<div class="showmonth">' . $showmonth . '/' . $showyear . '</div>';
echo '</div>';

echo '<div class="week_days">';
echo '<div class="days_of_week">Sun</div>';
echo '<div class="days_of_week">Mon</div>';
echo '<div class="days_of_week">Tue</div>';
echo '<div class="days_of_week">Wed</div>';
echo '<div class="days_of_week">Thur</div>';
echo '<div class="days_of_week">Fri</div>';
echo '<div class="days_of_week">Sat</div>';
echo '<div class="clear"></div>';
echo '</div>';

//previous month filler days
if($pre_days != 0)
{
    for($i=1; $i<=$pre_days; $i++)
    {
        echo '<div class="non_cal_day"></div>';
    }   
}

//current month
for($i=1; $i<=$day_count; $i++)
    {
        echo '<div class="cal_day">';
        echo '<div class="day_heading">'.$i.'</div>';
        echo '</div>';
    } 

//next month filler days
if($post_days != 0)
{
    for($i=1; $i<=$post_days; $i++)
    {
        echo '<div class="non_cal_day"></div>';

    }   
}
echo '</div>';

require("../templates/footer.php");



?>

私が疑うエラーのもう 1 つの原因は、require() を使用して HTML をコントローラー (calendar_start.php) にリンクすることです。geditを使用しているときにビデオがdreamweaverを使用していて、require()を使用せずにphpファイルをhtmlファイルにリンクする方法がわかりません。

4

2 に答える 2

0

場所

hr.send(vars); // Actually execute the request 直後の hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

意味

hr.open("POST",url, true);
// Set content type header information for sending url encoded variables in the request
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// Access the onreadystatechange event for the XMLHttpRequest object
// Send the data to PHP now... and wait for response to update the status div
hr.send(vars); // Actually execute the request

hr.onreadystatechange = function() {
(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
document.getElementById("showCalendar").innerHTML = return_data;
}
}
document.getElementById("showCalendar").innerHTML = "processing...";
}
于 2013-03-29T08:34:28.253 に答える
0

交換する

showmonth = month;
showyear = year;

var showmonth = month;
var showyear = year;
于 2013-03-29T08:52:53.797 に答える