Cita:
Iniciado por Raziel_Ravenheart Podrías brindarnos también el código html por favor, por casualidad, ese siguiente no es un botón del tipo "submit" dentro de un formulario??
Cuando se trata de este tipo de cosas, es decir, eventos generados por el usuario, ajax ni php tienen la culpa, generalmente, es algo que se programó en javascript y/o prototype en este caso, o html, que tiene que ver con los eventos.
Si se pudieran ver tanto el resto del código javascript, se podría detectar más fácilmente el error...!!!
ok, te pongo el codigo, aunque no hay ningún botón de formulario...
te voy a poner también la función de php que genera el calendario, a ver si el problema es algo del php, aunque no creo...
Función php que genera el calendario.
Código PHP:
<?php require_once('../Conexiones/conexion.php'); ?>
<?php
mysql_select_db($database_conexion, $conexion);
function isAjax() {
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
$_SERVER ['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest';
}
if(isAjax() && isset($_POST['month']))
{
$month = $_POST['month'];
$year = !isset($_POST['year']) ? date('Y', $current_time) : $_POST['year'];
die(getCalendar($month,$year));
}
//asigna variables para el mes(mm) y el año actual (yyyy)
$month = date('n', time());
$year = date('Y', time());
$calendar = getCalendar($month,$year);
function getCalendar($month,$year)
{
global $conexion; //importante definirla como global dentro de la función para que pueda conectar las consultas
include("../Funciones/funciones.php");
$current_time = time();
$month_start = mktime(0,0,0,$month, 1, $year);
$month_name = date('F', $month_start);
$first_day = date('D', $month_start);
//cambiar a letras españolas
switch($first_day)
{
case "Mon":
$offset = 0;
break;
case "Tue":
$offset = 1;
break;
case "Wed":
$offset = 2;
break;
case "Thu":
$offset = 3;
break;
case "Fri":
$offset = 4;
break;
case "Sat":
$offset = 5;
break;
case "Sun":
$offset = 6;
break;
}
//define el número de días del mes del calendario gregoriano
if($month == 1)
$num_days_last = cal_days_in_month(CAL_GREGORIAN, 12, ($year -1));
else
$num_days_last = cal_days_in_month(CAL_GREGORIAN, ($month - 1), $year);
$num_days_current = cal_days_in_month(CAL_GREGORIAN, $month, $year);
for($i = 0; $i < $num_days_current; $i++)
{
$num_days_array[] = $i+1;
}
for($i = 0; $i < $num_days_last; $i++)
{
$num_days_last_array[] = '';
}
if($offset > 0){
$offset_correction = array_slice($num_days_last_array, -$offset, $offset);
$new_count = array_merge($offset_correction, $num_days_array);
$offset_count = count($offset_correction);
}
else
{
$new_count = $num_days_array;
}
$current_num = count($new_count);
if($current_num > 35)
{
$num_weeks = 6;
$outset = (42 - $current_num);
}
else if($current_num < 35)
{
$num_weeks = 5;
$outset = (35 - $current_num);
}
if($current_num == 35)
{
$num_weeks = 5;
$outset = 0;
}
// Outset Correction
for($i = 1; $i <= $outset; $i++)
{
$new_count[] = '';
}
// Now let's "chunk" the $new_count array
// into weeks. Each week has 7 days
// so we will array_chunk it into 7 days.
$weeks = array_chunk($new_count, 7);
ob_start();
$last_month = $month == 1 ? 12 : $month - 1;
$next_month = $month == 12 ? 1 : $month + 1;
echo <<<EOS
<div border=1 align="center" valign="center" cellspacing=0 id="tabla-calendario">
<img src="../Imagenes/web/Inicio/calendario titulo.PNG" width="175px"/>
<table border=0 cellspacing=0 cellpadding="3px" width="150px" style="border-width:0px">
<tr>
<td colspan= 3><a href="#" class="monthnav" onclick="getPrevMonth();return false;">« Prev</a></td>
<td colspan= 4><a href="#" class="monthnav" onclick="getNextMonth();return false;">Next »</a></td>
</tr>
<tr>
<td colspan=7 class="mescalendario" align=center>$mes[$month] $year</b></td>
<tr>
<th id="semanacalendario">L</th>
<th id="semanacalendario">M</th>
<th id="semanacalendario">M</th>
<th id="semanacalendario">J</th>
<th id="semanacalendario">V</th>
<th id="semanacalendario">S</th>
<th id="semanacalendario">D</th>
</tr>
EOS;
foreach($weeks AS $week){
echo '<tr class="week">';
foreach($week as $day)
{
$ID = $year."-".$month."-".$day ;
$query_calendario = "SELECT * FROM eventos WHERE fecha_evento = '$ID'";
$calendario = mysql_query($query_calendario, $conexion) or die(mysql_error());
$row_calendario = mysql_fetch_assoc($calendario);
$num_eventos = mysql_num_rows($calendario);
if($day == date('d', $current_time) && $month == date('m', $current_time) && $year == date('Y', $current_time)){
if ($num_eventos != 0 ) {
echo '<td title="HOY |' .$row_calendario['titulo_evento']. '" id="hoyconeventos" align="center"><b><!--<a href="mostrar.php?evento=$evento" target="evento">-->'.$day.'</a></b></td>';
}else{
echo '<td id="hoysineventos">'.$day.'</td>';
}
}else{
if ($num_eventos != 0 ) {
echo '<td title="'.$row_calendario['titulo_evento'].'" id="otrosdiasconeventos" align="center"><b>'.$day.'</b></td>';
}else{
echo '<td>'.$day.'</td>';
} }
}
echo '</tr>';
}
echo '</table>';
return ob_get_clean();
}
?>
script Javascript de la cabecera del archivo:
Código Javascript
:
Ver original<script src="../js/Prototype.js" type="text/javascript"></script>
<script type="text/javascript" language="javascript">
var current_month = <?PHP echo @$month ?>;
var current_year = <?PHP echo @$year ?>;
function getPrevMonth()
{
if(current_month == 1)
{
current_month = 12;
current_year = current_year - 1;
}
else
{
current_month = current_month - 1;
}
params = 'month='+current_month+'&year='+current_year;
new Ajax.Updater('calendar_wrapper',window.location.pathname,{method:'post',parameters: params});
}
function getNextMonth()
{
if(current_month == 12)
{
current_month = 1;
current_year = current_year + 1;
}
else
{
current_month = current_month + 1;
}
params = 'month='+current_month+'&year='+current_year;
new Ajax.Updater('calendar_wrapper',window.location.pathname,{method:'post',parameters: params});
}
</script>
por último codigo html de la página:
Código HTML:
<head>
aqui va el script js y las hojas de estilo</head>
<body>
<div id="cabecera_web">
<img src="cabecera/>
</div>
<div class="contenedor-principal">
<?php include("menu.php"); ?>
<div id="calendar_wrapper"><?PHP echo @$calendar ?></div>
<h2 style="padding:30px" class="TituloGeneral">Armas y Material</h2>
<div class="TextoGeneral">
<ul>
<li class="epigrafegeneral">
titulo 1 </li>
</ul>
<p>texto 1</p>
<ul>
<li class="epigrafegeneral">
titulo 2
</li>
</ul>
<p>texto 2
</div>
</div>
el calendario se muestra aquí
Código HTML:
<div id="calendar_wrapper"><?PHP echo @$calendar ?></div>
y se muestra todo, pero cuando le doy a la flecha del mes siguiente... se borra todo lo de debajo del div.
Gracias por cualquier ayuda o sugerencia