Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/02/2012, 04:59
educacanis
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 295
Antigüedad: 14 años, 1 mes
Puntos: 12
Respuesta: problema al utilizar ajax.updater

Cita:
Iniciado por Raziel_Ravenheart Ver Mensaje
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,$month1$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_GREGORIAN12, ($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_count7);
    
    
ob_start();
    
    
$last_month $month == 12 $month 1;
    
$next_month $month == 12 $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;">&laquo; Prev</a></td>
        <td colspan= 4><a href="#" class="monthnav" onclick="getNextMonth();return false;">Next &raquo;</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 != ) {
                    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 != ) {
                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
  1. <script src="../js/Prototype.js" type="text/javascript"></script>
  2. <script type="text/javascript" language="javascript">
  3.     var current_month = <?PHP echo @$month ?>;
  4.     var current_year = <?PHP echo @$year ?>;
  5.    
  6.     function getPrevMonth()
  7.     {
  8.         if(current_month == 1)
  9.         {
  10.             current_month = 12;
  11.             current_year = current_year - 1;
  12.         }
  13.         else
  14.         {
  15.             current_month = current_month - 1;
  16.         }
  17.         params = 'month='+current_month+'&year='+current_year;
  18.         new Ajax.Updater('calendar_wrapper',window.location.pathname,{method:'post',parameters: params});
  19.     }
  20.         function getNextMonth()
  21.         {
  22.             if(current_month == 12)
  23.             {
  24.                 current_month = 1;
  25.                 current_year = current_year + 1;
  26.             }
  27.             else
  28.             {
  29.                 current_month = current_month + 1;
  30.             }
  31.             params = 'month='+current_month+'&year='+current_year;
  32.             new Ajax.Updater('calendar_wrapper',window.location.pathname,{method:'post',parameters: params});
  33.         }
  34. </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