Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Calendario php

Estas en el tema de Calendario php en el foro de PHP en Foros del Web. Hola buenas tardes, mis queridos colegas desarrolladores, hoy me presento con un problema muy grande, al grano la cuestión es que estoy elaborando un calendario ...
  #1 (permalink)  
Antiguo 08/03/2013, 16:28
Avatar de thedaket  
Fecha de Ingreso: junio-2011
Mensajes: 55
Antigüedad: 12 años, 9 meses
Puntos: 3
Pregunta Calendario php

Hola buenas tardes, mis queridos colegas desarrolladores, hoy me presento con un problema muy grande, al grano la cuestión es que estoy elaborando un calendario en php, mysql y ajax, en el cual realizo consultas por fecha y evento, para así después mostrar un pop-up jquery, en el cual se muestran horas, asignadas dependiendo el evento, las horas están acomodadas en una tabla, la cual de acuerdo a la cantidad de horas las rellena con un borde y un link en la hora, el problema surge cuando y bueno hasta aquí todo bien, el problema realmente surge cuando se guardan dos eventos diferentes, en el mismo día, al momento de realizar consultas con un ciclo for, me encima los datos por ejemplo sí el id en base de datos es 1 y el evento siguiente es 2 lo coloca como 12 igual concatena los eventos, la estructura de la base de datos la tengo de la siguiente forma.

id, folio, evento, fecha, horas_requeridas

todos esos datos los concatena lo cual provoca que sí sólo tengo un límite de 12 horas me expanda el ciclo hasta 13 o 32 por ejemplo, les muestro el ciclo en donde ya tengo la condición para evaluar si folio es igual a folio, así poderle dar un tratamiento diferente pero funcional.

Código PHP:
for($e=0;$e<$total_eventos;$e++/*&& $i++*/){    
                            if(
$eventos[$e]["fecha"]==$fecha_completa){    
                                     
                                     if(
$eventos[$e]["folio"] != $eventos[$e]["folio"]){
                                        
                                        
//Tratamiento para comparar si los folios son iguales 
                                         
$folio.=$eventos[$e]["folio"];
                                         
$id.=$eventos[$e]["id"]; 
                                         
$horas.=$eventos[$e]["horas_requeridas"];
                                         
$event.=$eventos[$e]["evento"];
                                         
$fecha_1.=$eventos[$e]["fecha"];
                                        
                                     }else{
                                        
                                        
//Si los folios son iguales evitar que se acomulen y encimen los datos
                                        
$folio_length[$e]=strlen($eventos[$e]["folio"]);
                                        if(
$folio_length[$e] > 4){
                                            
$folio.=substr($eventos[$e]["folio"],0,4);
                                        }
                                        
                                         
$id_length[$e]=strlen($eventos[$e]["id"]);
                                        if(
$id_length[$e] > 2){
                                            
$id.=substr($eventos[$e]["id"],0,1);
                                        }
                                         
                                         
$horas_length[$e]=strlen($eventos[$e]["horas_requeridas"]);
                                        if(
$horas_length[$e] > 2){
                                            
$horas.=substr($eventos[$e]["horas_requeridas"],0,2);
                                        }
                                        
                                         
$event.=$eventos[$e]["evento"];
                                        
                                        
$fecha_1_length[$e]=strlen($eventos[$e]["fecha"]);
                                        if(
$fecha_1_length[$e] > 10){
                                         
$fecha_1.=substr($eventos[$e]["fecha"],0,10);
                                        }
                                        
                                     }
                                     
                            }

                        }
//Fin for busca en base de datos 
Como ven lo trate de remediar evaluando el tamaño de la cadena de la consulta y así poder usar un substring y evitar lo cual me manda error.

Espero me puedan ayudar y me haya explicado bien, sí no lo hice pregunten por favor, gracias amigos.
__________________
Sí AJAX quieres usar jQuery debes agregar...
  #2 (permalink)  
Antiguo 08/03/2013, 18:00
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Calendario php

En cada variable dentro del for estás concatenando el siguiente valor:

$folio.=$eventos[$e]["folio"];

Eliminando ese punto solucionas esa parte, aunque algo me dice que todavía habrá otros problemas, pero, sin ver tu código completo, será difícil saberlo.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 09/03/2013, 10:36
Avatar de thedaket  
Fecha de Ingreso: junio-2011
Mensajes: 55
Antigüedad: 12 años, 9 meses
Puntos: 3
Respuesta: Calendario php

Por cuestiones del foro no puedo agregar el código completo, ya que supera el número de líneas permitidas, pero coloco el fragmento, del caso en el que se genera el calendario.

Código PHP:
case "generar_calendario":{
        
$fecha_calendario=array();
        if (
$_GET["mes"]=="" || $_GET["anio"]==""
        {
            
$fecha_calendario[1]=intval(date("m"));
            if (
$fecha_calendario[1]<10$fecha_calendario[1]="0".$fecha_calendario[1];
            
$fecha_calendario[0]=date("Y");
        } 
        else 
        {
            
$fecha_calendario[1]=intval($_GET["mes"]);
            if (
$fecha_calendario[1]<10$fecha_calendario[1]="0".$fecha_calendario[1];
            else 
$fecha_calendario[1]=$fecha_calendario[1];
            
$fecha_calendario[0]=$_GET["anio"];
        }
        
$fecha_calendario[2]="01";
        
        
/* obtenemos el dia de la semana del 1 del mes actual */
        
$primeromes=date("N",mktime(0,0,0,$fecha_calendario[1],1,$fecha_calendario[0]));
            
        
/* comprobamos si el año es bisiesto y creamos array de días */
        
if (($fecha_calendario[0] % == 0) && (($fecha_calendario[0] % 100 != 0) || ($fecha_calendario[0] % 400 == 0))) $dias=array("","31","29","31","30","31","30","31","31","30","31","30","31");
        else 
$dias=array("","31","28","31","30","31","30","31","31","30","31","30","31");
        
        
$eventos=array();
        
        
$query="select * from tcalendario where month(fecha)='".$fecha_calendario[1]."' and year(fecha)='".$fecha_calendario[0]."'";
        
mysql_select_db($dbname);
        
$resultado=mysql_query($query);
        
        if(
$fila=mysql_fetch_array($resultado)){
            
$posicion=0;
            
            do{
                
$eventos[$posicion]["id"]=$fila["id"];
                
$eventos[$posicion]["fecha"]=$fila["fecha"];
                
$eventos[$posicion]["evento"]=$fila["evento"];
                
$eventos[$posicion]["folio"]=$fila["folio"];
                
$eventos[$posicion]["horas_requeridas"]=$fila["horas_requeridas"];
                
$posicion+=1;
            }while(
$fila=mysql_fetch_array($resultado));
            
        }
        
        
$meses=array("","Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
        
        
$diasantes=$primeromes-1;
            
        
/* los días totales de la tabla siempre serán máximo 42 (7 días x 6 filas máximo) */
        
$diasdespues=42;
        
        
$tope=$dias[intval($fecha_calendario[1])]+$diasantes;
        if (
$tope%7!=0$totalfilas=intval(($tope/7)+1);
        else 
$totalfilas=intval(($tope/7));
            
        
/* empezamos a pintar la tabla */
        
echo "<h2>Actividades de ".$_SESSION['k_username']." en el mes de ".$meses[intval($fecha_calendario[1])]." de ".$fecha_calendario[0]."</h2>";
        if (isset(
$mostrar)) echo $mostrar;
            
        echo 
"<table class='calendario' cellspacing='0' cellpadding='0'>";
            echo 
"<tr><th>Lunes</th><th>Martes</th><th>Mi&eacute;rcoles</th><th>Jueves</th><th>Viernes</th><th>S&aacute;bado</th><th>Domingo</th></tr><tr>";
            
            
/* inicializamos filas de la tabla */
            
$tr=0;
            
$dia=1;
            
            for (
$i=1;$i<=$diasdespues;$i++)
            {
                if (
$tr<$totalfilas)
                {
                    if (
$i>=$primeromes && $i<=$tope
                    {
                        echo 
"<td class='";
                        
/* creamos fecha completa */
                        
if ($dia<=10$dia_actual="0".$dia; else $dia_actual=$dia;
                        
$fecha_completa=$fecha_calendario[0]."-".$fecha_calendario[1]."-".$dia_actual;
                        
                        if (
count($eventos)>&& buscar_en_array($fecha_completa,$eventos)==true) echo "evento";
                        
                        
/* si es hoy coloreamos la celda */
                        
if (date("Y-m-d")==$fecha_completa) echo "hoy";
                        
                        echo 
"'>";
                        
                        
                        
/* recorremos el array de eventos para mostrar los eventos del día de hoy */
                        
$total_eventos=count($eventos);
                        
$folio="";
                        
$id="";
                        
$horas="";
                        
$event="";
                        
$fecha_1="";
                        
$cantidad="";

                        for(
$e=0$e<$total_eventos$e++){    
                            if(
$eventos[$e]["fecha"]==$fecha_completa){    

                                         
$folio=$eventos[$e]["folio"];
                                         
$id=$eventos[$e]["id"]; 
                                         
$horas=$eventos[$e]["horas_requeridas"];
                                         
$event=$eventos[$e]["evento"];
                                         
$fecha_1=$eventos[$e]["fecha"];
                                        
                                        if(
$eventos[$e]["fecha"] == $eventos[$e]["fecha"]){
                                         
$eventos[$e]["horas_requeridas"]+=$eventos[$e]["horas_requeridas"];
                                         }
                                        
                                     
                            }

                        }
//Fin for busca en base de datos
                        
                        
if ($folio != ""){
                            
                                echo 
"<a href='#' data-evento='#evento".$dia_actual."' title='Revisar horario' class='modal' rel='".$fecha_completa."'>".$dia."</a><div class='window' id='evento".$dia_actual."'>";
                            
                                echo 
"<h2>Eventos del ".fecha($fecha_completa)."</h2><a href='#' class='close' rel='".$fecha_completa."'><img src='images/delete.png' alt='' title='Cerrar P&aacute;gina' /></a><div class='respuesta'></div>";
                                
                                
                                                                
                                    for(
$j=0$j<$horas$j++){
                                       
$estilo[$j] = '
                                        <style type="text/css">
                                          #orden-'
.$id.'-'.$folio.'-'.$j.'{
                                             background-color: #f1f1f1;
                                          }
                                       </style>
                                       
                                       <script type="text/javascript">
                                         $("#fun-'
.$id.'-'.$folio.'-'.$j.'").attr("href","javascript:completa(\'http://empresaweb.com.mx/orden-produccion/php/completa.php?folio='.$folio.'\')");
                                         $("#fun-'
.$id.'-'.$folio.'-'.$j.'").attr("title","Proyecto:<br />'.$event.'<br />Presiona para ver completo.");
                                         $("#fun-'
.$id.'-'.$folio.'-'.$j.'").attr("class","evento");
                                       </script>
                                       '
;
                                    }
//Fin for horas ocupadas
                                    
                                    
                                
echo "
                                <table>
                                 <tr>
                                  <td id='orden-"
.$id."-".$folio."-0'>
                                   <a id='fun-"
.$id."-".$folio."-0' href='agregar.php' class='libre' title='HORA LIBRE<br />Presiona para asignar tarea'>8:00 AM</a>
                                  </td>
                                  <td id='orden-"
.$id."-".$folio."-1'>
                                   <a id='fun-"
.$id."-".$folio."-1' class='libre' href='agregar.php' title='HORA LIBRE<br />Presiona para asignar tarea'>9:00 AM</a>
                                  </td>
                                  <td id='orden-"
.$id."-".$folio."-2'>
                                   <a id='fun-"
.$id."-".$folio."-2' class='libre' href='agregar.php' title='HORA LIBRE<br />Presiona para asignar tarea'>10:00 AM</a>
                                  </td>
                                  <td id='orden-"
.$id."-".$folio."-3'>
                                   <a id='fun-"
.$id."-".$folio."-3' class='libre' href='agregar.php' title='HORA LIBRE<br />Presiona para asignar tarea'>11:00 AM</a>
                                  </td>
                                  <td id='orden-"
.$id."-".$folio."-4'>
                                   <a id='fun-"
.$id."-".$folio."-4' class='libre' href='agregar.php' title='HORA LIBRE<br />Presiona para asignar tarea'>12:00 AM</a>
                                  </td>
                                  <td id='orden-"
.$id."-".$folio."-5'>
                                   <a id='fun-"
.$id."-".$folio."-5' class='libre' href='agregar.php' title='HORA LIBRE<br />Presiona para asignar tarea'>1:00 PM</a>
                                  </td>
                                  <td style='background-color: red;' title='HORA COMIDA'>
                                   2:00 PM
                                  </td>
                                  <td style='background-color: red;' title='HORA COMIDA'>
                                   3:00 PM
                                  </td>
                                 </tr>
                                 <tr>
                                  <td id='orden-"
.$id."-".$folio."-6'>
                                   <a id='fun-"
.$id."-".$folio."-6' class='libre' href='agregar.php' title='HORA LIBRE<br />Presiona para asignar tarea'>4:00 PM</a>
                                  </td>
                                  <td id='orden-"
.$id."-".$folio."-7'>
                                   <a id='fun-"
.$id."-".$folio."-7' class='libre' href='agregar.php' title='HORA LIBRE<br />Presiona para asignar tarea'>5:00 PM</a>
                                  </td>
                                  <td id='orden-"
.$id."-".$folio."-8'>
                                   <a id='fun-"
.$id."-".$folio."-8' class='libre' href='agregar.php' title='HORA LIBRE<br />Presiona para asignar tarea'>6:00 PM</a>
                                  </td>
                                  <td id='orden-"
.$id."-".$folio."-9'>
                                   <a id='fun-"
.$id."-".$folio."-9' class='libre' href='agregar.php' title='HORA LIBRE<br />Presiona para asignar tarea'>7:00 PM</a>
                                  </td>
                                  <td id='orden-"
.$id."-".$folio."-10'>
                                   <a id='fun-"
.$id."-".$folio."-10' class='libre' href='agregar.php' title='HORA LIBRE<br />Presiona para asignar tarea'>8:00 PM</a>
                                  </td>
                                  <td id='orden-"
.$id."-".$folio."-11'>
                                   <a id='fun-"
.$id."-".$folio."-11' class='libre' href='agregar.php' title='HORA LIBRE<br />Presiona para asignar tarea'>9:00 PM</a>
                                  </td>
                                 </tr>
                                </table>
                                "
;
                                                                
                                foreach(
$estilo as $horas_asignadas){
                                    echo 
$horas_asignadas;
                                }
                                
                            echo 
"</div>";
                        }
                        else echo 
$dia;
                        
/* agregamos enlace a nuevo evento si la fecha no ha pasado */
                        
if (date("Y-m-d")<=$fecha_completa) echo "<a href='#' data-evento='#nuevo_evento' title='Agregar un Evento el ".fecha($fecha_completa)."' class='modal agregar_evento' rel='".$fecha_completa."'><img src='images/add.png' /></a>";
                        
                        echo 
"</td>";
                        
$dia+=1;
                    }
                    else echo 
"<td class='desactivada'>&nbsp;</td>";
                    if (
$i==|| $i==14 || $i==21 || $i==28 || $i==35 || $i==42) {echo "<tr>";$tr+=1;}
                }
            }
            echo 
"</table>";
            
            echo 
"<div id='nuevo_evento' class='window'>";
                echo 
"<h2>Agregar un evento el <span id='que_dia'></span></h2><a href='#' class='close' rel='".$fecha_completa."'><img src='images/delete.png' title='Cerrar' /></a><div id='respuesta_form'></div>";
                echo 
"<form><textarea  name='evento_titulo' id='evento_titulo' style='margin: 0px; height: 253px; width: 375px;'></textarea><br /><br /><input type='button' name='Enviar' value='Guardar' class='enviar'><input type='hidden' name='evento_fecha' id='evento_fecha'></form>";
            echo 
"</div>";
            
            
$mesanterior=date("Y-m-d",mktime(0,0,0,$fecha_calendario[1]-1,01,$fecha_calendario[0]));
            
$messiguiente=date("Y-m-d",mktime(0,0,0,$fecha_calendario[1]+1,01,$fecha_calendario[0]));
            echo 
"<p>&laquo; <a href='#' rel='$mesanterior' class='anterior'>Mes Anterior</a> - <a href='#' class='siguiente' rel='$messiguiente'>Mes Siguiente</a> &raquo;</p>";
        break;
    } 
Gracias por su ayuda
__________________
Sí AJAX quieres usar jQuery debes agregar...

Etiquetas: calendario, for()
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:04.