2013-03-29 5 views
0

J'essaye de créer une fonction où mon calendrier php peut être mis à jour. Cet ensemble de code est supposé envoyer $ _POST ["showmonth"] et $ _POST ["showyear"] au contrôleur mais apparemment il ne fonctionne pas, provoquant l'erreur d'index indéfinie. Pour être honnête, je suis un débutant total en javascript et je suivais juste un tutoriel sur youtube. Il y a 2 fonctions similaires pour le mois suivant et le dernier qui sont activées par le déclencheur onClick. Quelqu'un at-il une suggestion quant à ce que le problème peut être?Indéfini javascript php error

Je reçois l'erreur sur la ligne 9 et 10 de mon fichier php, qui et où j'annonçais

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

Notice: Undefined index: showmonth dans/home/jharvard/vhosts/localhost/html/calendar_start. php sur la ligne 9

<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> 

Ceci est mon fichier 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> 

Ceci est mon fichier 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"); 



?> 

Une autre source d'erreur je pense peut-être l'utilisation de require() pour lier mon HTML avec le contrôleur (calendar_start.php), parce qu'il était la seule différence entre ce que je faisais et ce que le tutoriel vidéo enseigné . La vidéo utilisait dreamweaver alors que j'utilisais gedit et sans utiliser require() je ne sais pas comment lier le fichier php au fichier html.

+4

Pouvez-vous s'il vous plaît nous dire sur quel exactement comme vous obtenez cette erreur? – Rikesh

+1

Où obtenez-vous une erreur d'index non définie. Il semble être une erreur php, non? – Neo

+0

Je reçois dans mon fichier php calendar_start.php où j'ai annoncé $ showmonth = $ _POST ['showmonth']; $ showyear = $ _POST ['showyear']; –

Répondre

0

lieu

hr.send(vars); // Actually execute the request juste après hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

moyens

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..."; 
} 
+0

Je suis désolé mais cela ne semble pas fonctionner. Puis-je connaître la raison de le faire? –

+0

car il semble que vous envoyez des données après avoir reçu votre réponse – mukund

+0

Je pense que c'est parce que je l'active avec –

0

REPLCE

showmonth = month; 
showyear = year; 

Wit h

var showmonth = month; 
var showyear = year; 
+0

Je suis désolé mais cela ne semble pas fonctionner = ( –