Jump to content

Calendar issues


Faisca78

Recommended Posts

Hi,

 

I posted a topic a few weeks ago because I have problems with my calendar script.

I still haven't been able to solve it, so I was hoping somebody with more experience could help me out.

These are the problems I'm experiencing:

 

1. - The calendar "freezes" in the browser after going through a few months in the past or in the future. I don't know why and/or it has to do with the events.

 

2.- When I look at an event, in any month, the calendar goes back to the current month while showing me the event, which gets very confusing.

 

3.- The week numbers (i.e. 1-52) do not show properly... at the moment, all the weeks are numbered 01, and I don't really understand why. Besides, when a week is not full (i.e. the last day of the month doesn't fall on a Sunday) the week number doesn't show.

 

4.- The months in the drop down months menu change along with the months in the top menu. I wonder if they can remain in the current month. This is not important, and it doesn't matter too much.

 

This is my calendar's code:

 

<table border=0 cellspacing=0>
<?php
    include("functions.php");
    $tiempo_actual = time();
    $dia_solo_hoy = date("d",$tiempo_actual);

         if (!$_POST && !isset($_GET["nuevo_mess"]) &&    
            !isset($_GET["nuevo_anio"])){
            $mess = $_GET['mess'];
            $anio = $_GET['anio'];
         }elseif ($_POST) {
            $mess = $_POST["nuevo_mess"];
            $anio = $_POST["nuevo_anio"];
         }else{
            $mess = $_GET["nuevo_mess"];
            $anio = $_GET["nuevo_anio"];
         }

         if($mess == "" || $anio == ""){
            $anio = date("Y");
            $mess = date("n");
         }
            $ultimo = date("t",mktime(0, 0, 0, $mess, 1, $anio));
         
         if($mess == '12' || $mess == '1'){
         
         if($mess == '12'){
            $next = 1;
            $prev = $mess -1;
            $anion = $anio + 1;
            $aniop = $anio;
         }
       
         if($mess == '1'){
            $next = $mess + 1;
            $prev = 12;
            $anion = $anio;
            $aniop = $anio -1;
          }
         }else{
            $next = $mess + 1;
            $prev = $mess - 1;
            $aniop = $anio;
            $anion = $anio;
         }

       echo "<table width=200 height=10 cellspacing=6 cellpadding=0.5 border=0>
       <tr>
           <td colspan=8 align=center class=tit>
           <table width=100% cellspacing=4 cellpadding=0.5 border=0><tr>
       <td style=font-size:10pt;font-weight:bold;color:white><a  href='".$_SERVER['PHP_SELF']."?mess=$prev&anio=$aniop' class=prev> 
       </a></td>
       <td class='title'>$mes[$mess] $anio<td>
       <td align=right style=font-size:10pt;font-weight:bold;color:white><a href='".$_SERVER['PHP_SELF']. "?mess=$next&anio=$anion' class=next>
       </a></td> </table>";
       echo '<tr>
            <td width=14% align=center class=altn>M</td>
            <td width=14% align=center class=altn>T</td>
            <td width=14% align=center class=altn>O</td>
            <td width=14% align=center class=altn>T</td>
            <td width=14% align=center class=altn>F</td>
            <td width=14% align=center class=altn>L</td>
            <td width=14% align=center class=altn>S</td>
            <td width=18% align=center class=altn>Vecka</td>
       </tr>';

       $diaa = "1";
       $diaz = cargarmatriz($ultimo,$mess,$anio);
       $j = 0;

       while($diaa <= $ultimo){
            $dia = date("D",mktime(0,0,0,$mess,$diaa,$anio)); 
                             # return week days in letters
            $fecha = date("j",mktime(0,0,0,$mess,$diaa,$anio)); 
                             #returns the day of the month in 01/31
            $dia_semana = date("w",mktime(0,0,0,$mess,$diaa,$anio));  
                                 #returns the day of the week in numbers
            $evento = $anio."-".$mes_num[$mess]."-".$fecha;

       if($dia == "Mon"){

          echo "</tr><tr>";
       }

       if($fecha == "1"){
          $i=1;

          while($i != $dia_semana){
              echo "<td> </td>";
              $i++;
           }
       }

       if($anio == date("o") && $mes[$mess] == $mes[date("n")] && $fecha == date("j")){

        if($fecha == $diaz[$j] ){
           echo "<td class='tddia' align='center'><b><a 
                     href='index.php?evento=$evento' target='_self'>$fecha</a> 
                     </b></td>";
           $j++;
        }else{
           echo "<td class='calendario' align='center'><b>$fecha</b></td>";
        }
        }else{

         if($fecha == $diaz[$j] ){
            echo "<td class='tddia' align='center'><b><a 
                      href='index.php?evento=$evento' target='_self'>$fecha</a>
                      </b></td>";
            $j++;
         }else{

        //Sundays

              if ($dia_semana == 0){
             echo "<td align='center' class='tddom'>$fecha</td>";
             echo "<td align='center' class='week'>".strftime("%V", 
                      strtotime("$adate")). "</td>"; # returns week in the year in 
                                                                  numbers
              }else{

                   echo "<td align='center'>$fecha</td>";}
              }
         }
        $diaa++;
      }

       echo "</tr>";

?>
</table>

<div id="fecha_drop">
<table>
<?php

function formularioCalendario($mess,$anio){

      echo '
         <table width=200 align="center" cellspacing="1" cellpadding="1" border="0" class=tform>
         <tr><form action="index.php? '.$_SERVER['PHP_SELF'].' " method="POST">';
     
      echo '
         <td align="center" valign="top">
         <select name=nuevo_mess class="select_month">
         
      <option value="1"';
       if ($mess==1)
          echo "selected";
          echo'>Januari

      <option value="2" ';
       if ($mess==2)
           echo "selected";
           echo'>Februari
     
      <option value="3" ';
       if ($mess==3)
           echo "selected";
           echo'>Mars
     
      <option value="4" ';
       if ($mess==4)
           echo "selected";
           echo '>April
     
      <option value="5" ';
       if ($mess==5)
           echo "selected";
           echo '>Maj
     
      <option value="6" ';
       if ($mess==6)
           echo "selected";
           echo '>Juni
     
      <option value="7" ';
       if ($mess==7)
           echo "selected";
           echo '>Juli
     
      <option value="8" ';
       if ($mess==
           echo "selected";
           echo '>Augusti
     
      <option value="9" ';
       if ($mess==9)
           echo "selected";
          echo '>September

      <option value="10" ';
       if ($mess==10)
           echo "selected";
           echo '>Oktober

      <option value="11" ';
       if ($mess==11)
           echo "selected";
           echo '>November

      <option value="12" ';
       if ($mess==12)
           echo "selected";
           echo '>December
   </select>
</td>';

       echo '
        <td align="center" valign="top">
         <select name=nuevo_anio class="select_yr">';

       for ($cont=2006;$cont<$anio+3;$cont++){
           echo "<option value='$cont'";

       if ($anio==$cont)
           echo " selected";
           echo ">$cont";
       }

       echo '
     </select>
     </td>';

      echo '

        <td colspan="1" align="center" valign="top"><input type="Submit" value="GÅ" class="button" /></td>
</table>

</form>';
     }

formularioCalendario($mess,$anio);
?>

</table>

<div id="events">
<table>
<?php
$evento = $_GET['evento'];

     if(!isset($evento)){
         $evento = date("Y-m-d");
     }

$conexion = conectar();
$sql = "select * from eventos where fecha = '$evento'";
$res = query($sql);

     if(mysql_num_rows($res) > 0){

        while($fila = mysql_fetch_array($res)){
                echo "<tr><td class='tdfecha'>".$fila['fecha']."</td></tr>
                <tr><td class='tdevento'>".$fila['evento']."</td></tr>";
        }
     }else{

        echo "<tr><td></td></tr>";
     }

desconectar($conexion);

?>
</table>

 

And this is the website where the calendar can be previewed:

 

illumino.110mb.com

 

Following is the code for the functions.php file:

 

<?php
$datos;
$mes[1] = "Januari";
$mes[2] = "Februari";
$mes[3] = "Mars";
$mes[4] = "April";
$mes[5] = "Maj";
$mes[6] = "Juni";
$mes[7] = "Juli";
$mes[8] = "Augusti";
$mes[9] = "September";
$mes[10] = "Oktober";
$mes[11] = "November";
$mes[12] = "December";
$mes_num[1] = "01";
$mes_num[2] = "02";
$mes_num[3] = "03";
$mes_num[4] = "04";
$mes_num[5] = "05";
$mes_num[6] = "06";
$mes_num[7] = "07";
$mes_num[8] = "08";
$mes_num[9] = "09";
$mes_num[10] = "10";
$mes_num[11] = "11";
$mes_num[12] = "12";
$dias[0] = "0";

function conectar(){ //Put the data for your localhost
       $host = "localhost";
       $usuariodb = "*******";
       $pwddb = "*******";
       $db = "*******";
       $enlace = mysql_connect($host,$usuariodb,$pwddb);// or die("It 
                     couldn't connect : " . mysql_error());

       if (!$enlace) {
            die('Not connected : ' . mysql_error());
       }

$seldb = mysql_select_db($db,$enlace);

       if (!$seldb) {
           die ('No se puede usar eventos: ' . mysql_error());
       }
       
       return $enlace;

}

function desconectar($conexion){
      mysql_close($conexion);
}

function query($sql){
         $res = mysql_query($sql) or die (mysql_error());
         return $res;
}

function buscareventos($ultimo,$mess,$anio){
         $conexion = conectar();
         $desde = $anio."-".$mess."-01";
         $hasta = $anio."-".$mess."-".$ultimo;
         $sql = "select * from eventos where fecha BETWEEN '$desde' and  
         '$hasta'";
         $res = query($sql);

         if(mysql_num_rows($res) > 1){
            echo "<tr><th>FECHA</th><th>EVENTO</th></tr>";

            while($fila = mysql_fetch_array($res)){
                    echo "<tr><td class='tdfecha'>".$fila['fecha']."</td><td  
                             class='tdevento'>".$fila['evento']."</td></tr>";
            }

        }else{
           echo "<tr><td class='tdno'>There are no events this month</td>
                   </tr>";
       }

desconectar($conexion);

}

function cargarmatriz($ultimo,$mess,$anio){
        $i = 0;
        $conexion = conectar();
        $desde = $anio."-".$mess."-01";
        $hasta = $anio."-".$mess."-".$ultimo;
       // $sql = "select * from eventos where fecha BETWEEN '$desde' and  
                    '$hasta' order by fecha";
        $sql = "select distinct fecha from eventos where fecha BETWEEN   
                  '$desde' and '$hasta' order by fecha";
        $res = query($sql);

        if(mysql_num_rows($res) > 0){

           while($fila = mysql_fetch_array($res)){
                   $fecha = $fila['fecha];
                   $dia = explode("-", $fecha);

          //if($dias[$i-1] != $dia[2]){
               $dias[$i] = $dia[2];
         //}

          $i++;
          }

        }else{
               $dias[0] = "0";
        }

       desconectar($conexion);
       return $dias;
}


function redireccionar($time,$url){
         print "<meta http-equiv=Refresh content=\"$time ; url=$url\">";
}

?>

 

Thanks a lot for any help,

 

N.

Link to comment
https://forums.phpfreaks.com/topic/136786-calendar-issues/
Share on other sites

Unfortunately, your probably going to have a difficult time getting help as your code is in spanish. I don't know spanish, so it would make it very difficult to decipher what is going on.

 

But hopefully someone here knows spanish and can help you.

 

I see the whole browser crash/lockup when you go a couple months in the future. That seems to me like a loop that does not terminate properly. My browser (firefox) was eating up over a hundred megs of memory when I killed it in task manager. I would look for a never ending loop on that aspect.

 

There is an error here... don't know if it is just a typo on here or in your actual code.. It should be

<?php

$enlace = mysql_connect($host,$usuariodb,$pwddb) or die("It couldn't connect : " . mysql_error());

       if (!$enlace) {
            die('Not connected : ' . mysql_error());
       }
?>

 

Notice the code coloring... code coloring can alert you to syntax errors very quickly.

Link to comment
https://forums.phpfreaks.com/topic/136786-calendar-issues/#findComment-714416
Share on other sites

"Unfortunately, your probably going to have a difficult time getting help as your code is in spanish. I don't know spanish, so it would make it very difficult to decipher what is going on.

 

But hopefully someone here knows spanish and can help you."

 

 

 

I know a decent amount of Spanish, and those month names are not Spanish.

 

 

Hrmmm not Italian either....

 

I know Mars is March in Latin, but the rest aren't Latin....

 

 

Not French either.

 

 

 

 

Oh.... Just figured it out.  Swedish.

Link to comment
https://forums.phpfreaks.com/topic/136786-calendar-issues/#findComment-714425
Share on other sites

Oh, Spanish and Swedish.  I just assumed it was Swedish from the month names, but yeah, mes, día, fecha, semana....  Spanish.  Dunno how I missed that.  lol.

 

 

Edit: Oh, by the way, when ever the page freezes, it's because your script is putting out <td>&nbps</td over and over again, so look for a possible infinite loop somewhere.

Link to comment
https://forums.phpfreaks.com/topic/136786-calendar-issues/#findComment-714659
Share on other sites

Ok, good.... now I don't feel like a dumbass.

 

I thought I saw some spanish in there... but was not sure as I can count in spanish, I know/knew the days of the week, months of the year, and can really cuss someone out with 1 phrase. :) Thats the extent of my spanish.

 

 

Nate

 

 

 

Link to comment
https://forums.phpfreaks.com/topic/136786-calendar-issues/#findComment-714728
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.