Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Calendario con CakePhp 2.7

Estas en el tema de Calendario con CakePhp 2.7 en el foro de PHP en Foros del Web. Hola a todos, quería hacerles la sgte consulta, verán estoy haciendo un calendario de reservas con el mes actual y el mes próximo, me anda ...
  #1 (permalink)  
Antiguo 13/10/2015, 11:33
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Calendario con CakePhp 2.7

Hola a todos, quería hacerles la sgte consulta, verán estoy haciendo un calendario de reservas con el mes actual y el mes próximo, me anda el lunes de la semana actual pero de las próximas semanas me muestra la fecha del lunes de la 1er semana, no sé cómo cambiarlo.

Pongo el código:

public function index(){
$semanas =array();
$year = date('Y');
$week = date('W');
$inicio=1;
$fin=5;
for($i=1;$i<8;$i++){
// acá se me complica con la variable día para obtener el lunes de cada semana
$dia = date('d/m/Y', strtotime($year . 'W' . str_pad($week, 2, '0', STR_PAD_LEFT)));
$semana= $this->crearSemana($dia,$inicio,$fin);
array_push($semanas, $semana);
$inicio+=7;
$fin+=7;
}
$this->set('semanas',$semanas);
}
private function crearSemana($dia,$inicio,$fin){
$dias =array();
array_push($dias, $dia);
for($i=$inicio;$i<$fin;$i++){
array_push($dias, $this->dameFecha($dia,$i));
}
return $dias;
}
private function dameFecha($fecha,$dia){
list($day,$mon,$year) = explode('/',$fecha);
return date('d/m/Y',mktime(0,0,0,$mon,$day+$dia,$year));
}
private function crearNomSemana(){
return array("Lunes","Martes","Miércoles","Jueves","Viern es");
}

Así me aparece en la pantalla:

12/10/2015 // como ven en las semanas de lunes a viernes como muestro, la 1era esta bien pero las semanas muestra el lunes con la misma fecha
13/10/2015
14/10/2015
15/10/2015
16/10/2015

12/10/2015
20/10/2015
21/10/2015
22/10/2015
23/10/2015

12/10/2015
27/10/2015
28/10/2015
29/10/2015
30/10/2015

12/10/2015
03/11/2015
04/11/2015
05/11/2015
06/11/2015

12/10/2015
10/11/2015
11/11/2015
12/11/2015
13/11/2015

12/10/2015
17/11/2015
18/11/2015
19/11/2015
20/11/2015

12/10/2015
24/11/2015
25/11/2015
26/11/2015
27/11/2015

Olvidé decir que estoy usando CakePhp 2.7, espero sus respuestas y saludos.
  #2 (permalink)  
Antiguo 15/10/2015, 18:20
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: Calendario con CakePhp 2.7

Hola a todos, con el problema de las fechas era cambiar sólo esto:

Controller/ConsultasController.php

public function index(){
$semanas =array();
$year = date('Y');
$week = date('W');
for($i=1;$i<8;$i++){
// indicarle a la variable dia si era la semana 1 que ponga el lunes de la semana actual, de lo contrario incrementarle 7 días
$dia = ($i == 1) ? date('d/m/Y', strtotime($year . 'W' . str_pad($week, 2, '0', STR_PAD_LEFT))) : $this->dameFecha($dia,7);
$semana= $this->crearSemana($dia,1,5);
array_push($semanas, $semana);
}
$this->set('semanas',$semanas);
}
// pero quiero pasarle el array de la semana que seleccioné para mostrar los horarios para reservar para esa semana, me da error.
public function consultas($semana){
$this->set('dias', $semana);
$this->set('nom_dias', $this->crearNomSemana());
$this->set('horarios', $this->Consulta->Horario->find('all'));
}

en View/Consultas/index.ctp:

<div class="page-header">
<h2>Agenda de Consultas</h2>
</div>
<div class="col-md-12">
<?php
echo $this->Html->link(
"Volver",
array("controller"=>"users","action"=>"tareas"),
array('class' => 'btn btn-sm btn-default')
);
?>
<br />
<br />
<?php
foreach ($semanas as $semana){
// lo que quiero es pasarle a la vista consultas la semana para hacer las reservas, pero me salen los siguientes errores, por pasarle un array con fechas.
echo $this->Html->link('Desde el '.$semana[0].' hasta el '.$semana[4], array('controller'=>'consultas','action'=>'consult as',$semana));
echo "<br /><br />";
}
?>
</div>

en View/Consultas/consultas.ctp:

<div class="page-header">
<h2>Agenda de Consultas - Horarios</h2>
</div>
<div class="col-md-12">
<?php
echo $this->Html->link(
"Volver",
array("controller"=>"consultas","action"=>"index") ,
array('class' => 'btn btn-sm btn-default')
);
?>
<br />
<br />
<table class="table table-striped">
<thead>
<th></th>
<?php
for($i=0;$i<5;$i++){
if($dias[$i] == date("d/m/Y")):
echo "<th><font size ='3', color ='green'>&nbsp;".$nom_dias[$i].", ".$dias[$i]."&nbsp;</font></th>";
else:
echo "<th>&nbsp;".$nom_dias[$i].", ".$dias[$i]."&nbsp;</th>";
endif;
}
?>
</thead>
<tbody>
<?php foreach ($horarios as $horario): ?>
<tr>
<td><?php echo $horario['Horario']['hora_inicio'].' - '.$horario['Horario']['hora_cierre']; ?></td>

</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>

La cuestión es: ¿cómo pasar un array de fechas a una función con cakephp?
Espero sus respuestas y saludos.
  #3 (permalink)  
Antiguo 24/10/2015, 19:19
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: Calendario con CakePhp 2.7

Problema resuelto, gracias a Rodrigo López, lo del calendario anda, pongo la solución x si a alguien le sirve:

<div class="page-header">
<h2>Horarios de Consultas</h2>
</div>
<div class="col-md-12">
<p>
<?php
echo $this->Html->link(
"Volver",
array("controller"=>"consultas","action"=>"index") ,
array('class' => 'btn btn-sm btn-default')
);
?>
</p>
<table class="table table-striped">
<thead>
<th></th>
<?php
for($i=0;$i<5;$i++){
if($dias[$i] == date("d/m/Y")):
echo "<th><font size ='3', color ='green'>&nbsp;".$nom_dias[$i].", ".$dias[$i]."&nbsp;</font></th>";
else:
echo "<th>&nbsp;".$nom_dias[$i].", ".$dias[$i]."&nbsp;</th>";
endif;
}
?>
</thead>
<tbody>
<?php foreach ($horarios as $horario){ ?>
<tr>
<td><?php echo "<b>".$horario['Horario']['hora_inicio'].' - '.$horario['Horario']['hora_cierre']."</b>"; ?></td>
<?php
for($i=0;$i<5;$i++){
foreach($consultas as $consulta){
$aux=$this->Time->format('d/m/Y', $consulta['Consulta']['fecha_trat']);
if($horario['Horario']['id'] == $consulta['Consulta']['horario_id'] && $dias[$i] == $aux){
$existeConsulta=true;
$cons_aux=$consulta;
break;
}
else{
$existeConsulta=false;
}
}
if($existeConsulta){
//if($horario['Horario'] === $consultas[$i]['Horario'] && $dias[$i] === $aux){
echo '<td><b>'.
$this->Html->link('[Editar]',
array(
'action'=>'edit',
$indice,
$cons_aux['Consulta']['id'])
).' '.
$this->Html->link('[Borrar]',
array('action'=>'delete',
$indice,
$cons_aux['Consulta']['id']),
array(
'confirm' => '¿Desea borrar la consulta seleccionada?')
).' '.
$this->Html->link('[Ver]',
array('action'=>'view',
$indice,
$cons_aux['Consulta']['id'])
).
'</b></td>';
}
else {
echo '<td><b>'.
$this->Html->link('[Crear]',
array(
'action'=>'add',
$indice,
$i,
$horario['Horario']['id'])
).
'</b></td>';
}
}
?>
</tr>
<?php } ?>
</tbody>
</table>
</div>

Gracias a todos, por su tiempo

Etiquetas: cakephp, calendario, fecha, variable
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 22:00.