Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] ¿Cómo poner enlaces a los días de un calendario php-mysql?

Estas en el tema de ¿Cómo poner enlaces a los días de un calendario php-mysql? en el foro de PHP en Foros del Web. Hola a todos!! Necesito ayuda con una agenda que estoy haciendo. He puesto un calendario que se puede encontrar sin problema por internet. El problema ...
  #1 (permalink)  
Antiguo 19/01/2014, 09:43
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 9 meses
Puntos: 1
¿Cómo poner enlaces a los días de un calendario php-mysql?

Hola a todos!!
Necesito ayuda con una agenda que estoy haciendo. He puesto un calendario que se puede encontrar sin problema por internet. El problema es que es un calendario creado para mostrarse al hacer click en un campo date y seleccionar una fecha. Lo que yo tengo es el calendario en mi pagina index.php y necesito que los dias sean enlaces a index.php?variables=XXX y que aparezcan las citas guardadas en la base de datos para ese día.

El calendario me devuelve la fecha por GET correctamente al hacer click en un dia, pero tengo algún día en la base de datos y no me muestra nada.

En index.php tengo esta consulta...

Código PHP:
Ver original
  1. $varCitas_Citas = "0";
  2. if (isset($_GET["variable"])) {
  3.   $varCitas_Citas = $_GET["variable"];
  4. }
  5. mysql_select_db($database_xxx, $xxx);
  6. $query_Citas = sprintf("SELECT * FROM Citas_tbl WHERE Citas_tbl.datDia = %s", GetSQLValueString($varCitas_Citas, "int"));
  7. $Citas = mysql_query($query_Citas, $xxx or die(mysql_error());
  8. $row_Citas = mysql_fetch_assoc($Citas);
  9. $totalRows_Citas = mysql_num_rows($Citas);
datDia es el campo de la tabla donde esta almacenada la fecha de las citas.

... este js ...
Código Javascript:
Ver original
  1. <script type="text/javascript" src="js_agenda/javascripts.js"></script>
  2.     <script type="text/javascript">
  3.         function devuelveFecha(ano,mes,dia){
  4.             //Se encarga de escribir en el formulario adecuado los valores seleccionados
  5.             //también debe cerrar la ventana del calendario
  6.             var formulario_destino = '<?php echo $_GET["formulario"]?>'
  7.            
  8.             var campo_destino = '<?php echo $_GET["nomcampo"]?>'
  9.                    
  10.             //meto el dia
  11.             eval ("opener.document." + formulario_destino + "." + campo_destino + ".value='" + ano + "/" + mes + "/" + dia + "'")
  12.             window.close()
  13.         }
  14.     </script>

... y donde se muestra el calendario:
Código PHP:
Ver original
  1. <article class="grid_1">
  2.                 <?php
  3.                 //TOMO LOS DATOS QUE RECIBO POR LA url Y LOS COMPONGO PARA PASARLOS EN SUCESIVAS EJECUCIONES DEL CALENDARIO
  4.                 $parametros_formulario = "formulario=" . $_GET["formulario"] . "&nomcampo=" . $_GET["nomcampo"];
  5.                 ?>
  6.                 <div>
  7.                 <?php
  8.                 require ("calendario.php");
  9.                 $tiempo_actual = time();
  10.                 $dia_solo_hoy = date("d",$tiempo_actual);
  11.                 if (!$_POST && !isset($_GET["nuevo_mes"]) && !isset($_GET["nuevo_ano"])){
  12.                     $mes = date("n", $tiempo_actual);
  13.                     $ano = date("Y", $tiempo_actual);
  14.                 }elseif ($_POST) {
  15.                     $mes = $_POST["nuevo_mes"];
  16.                     $ano = $_POST["nuevo_ano"];
  17.                 }else{
  18.                     $mes = $_GET["nuevo_mes"];
  19.                     $ano = $_GET["nuevo_ano"];
  20.                 }
  21.                    
  22.                 mostrar_calendario($mes,$ano);
  23.                 formularioCalendario($mes,$ano);
  24.                 ?>
  25. </div>

Y este es calendario.php, que como digo es un calendario tipo que esta bastante por internet. Aqui es donde he intentado hacer modificaciones para que al clikar en el dia me vaya a index.php?variable=año-mes-dia.
Código PHP:
Ver original
  1. <?php
  2. .......     function mostrar_calendario($mes,$ano){
  3.     global $parametros_formulario;
  4.     //tomo el nombre del mes que hay que imprimir
  5.     $nombre_mes = dame_nombre_mes($mes);
  6.    
  7.     //construyo la tabla general
  8.     echo '<table class="tablacalendario" cellspacing="5" cellpadding="5" border="0">';
  9.     echo '<tr><td colspan="7" class="tit">';
  10.     //tabla para mostrar el mes el año y los controles para pasar al mes anterior y siguiente
  11.     echo '<table width="100%" cellspacing="2" cellpadding="2" border="0" ><tr><td class="messiguiente">';
  12.     //calculo el mes y ano del mes anterior
  13.     $mes_anterior = $mes - 1;
  14.     $ano_anterior = $ano;
  15.     if ($mes_anterior==0){
  16.         $ano_anterior--;
  17.         $mes_anterior=12;
  18.     }
  19.     echo "<a href='index.php?$parametros_formulario&nuevo_mes=$mes_anterior&nuevo_ano=$ano_anterior'><img src='imagenes_agenda/mes_anterior.png' width='40px' height='40px' /></a></td>";
  20.     echo "<td class='titmesano'>$nombre_mes $ano</td>";
  21.     echo "<td class='mesanterior'>";
  22.     //calculo el mes y ano del mes siguiente
  23.     $mes_siguiente = $mes + 1;
  24.     $ano_siguiente = $ano;
  25.     if ($mes_siguiente==13){
  26.         $ano_siguiente++;
  27.         $mes_siguiente=1;
  28.     }
  29.     echo "<a href='index.php?$parametros_formulario&nuevo_mes=$mes_siguiente&nuevo_ano=$ano_siguiente'><span><img src='imagenes_agenda/mes_siguiente.png' width='40px' height='40px' /></span></a></td></tr></table></td></tr>";
  30.     echo '  <tr>
  31.                 <td width="14%" class="diasemana">L</td>
  32.                 <td width="14%" class="diasemana">M</td>
  33.                 <td width="14%" class="diasemana">X</td>
  34.                 <td width="14%" class="diasemana">J</td>
  35.                 <td width="14%" class="diasemana">V</td>
  36.                 <td width="14%" class="diasemana">S</td>
  37.                 <td width="14%" class="diasemana">D</td>
  38.             </tr>';
  39.    
  40.     //Variable para llevar la cuenta del dia actual
  41.     $dia_actual = 1;
  42.    
  43.     //calculo el numero del dia de la semana del primer dia
  44.     $numero_dia = calcula_numero_dia_semana(1,$mes,$ano);
  45.     //echo "Numero del dia de demana del primer: $numero_dia <br>";
  46.    
  47.     //calculo el último dia del mes
  48.     $ultimo_dia = ultimoDia($mes,$ano);
  49.    
  50.     //escribo la primera fila de la semana
  51.     echo "<tr>";
  52.     for ($i=0;$i<7;$i++){
  53.         if ($i < $numero_dia){
  54.             //si el dia de la semana i es menor que el numero del primer dia de la semana no pongo nada en la celda
  55.             echo '<td class="diainvalido"><span></span></td>';
  56.         } else {
  57.             echo "<td align='center' " . dame_estilo($dia_actual) . "><span>[B][COLOR="Red"]<a  href='index.php?variable=$ano-$mes-$dia_actual'  onclick='javascript:devuelveFecha($ano-$mes-$dia)' class='dias'>$dia_actual</a>[/COLOR][/B]</span></td>";
  58.             $dia_actual++;
  59.         }
  60.     }
  61.    
  62.         echo "</tr>";
  63.    
  64.     //recorro todos los demás días hasta el final del mes
  65.     $numero_dia = 0;
  66.     while ($dia_actual <= $ultimo_dia){
  67.         //si estamos a principio de la semana escribo el <TR>
  68.         if ($numero_dia == 0)
  69.             echo "<tr>";
  70.         echo "<td align='center' " . dame_estilo($dia_actual) . "><span>[COLOR="red"][B]<a href='index.php?variable=$ano-$mes-$dia_actual'  onclick='javascript:devuelveFecha($ano-$mes-$dia)' class='dias'>$dia_actual</a>[/B][/COLOR]</span></td>";
  71.         $dia_actual++;
  72.         $numero_dia++;
  73.         //si es el uñtimo de la semana, me pongo al principio de la semana y escribo el </tr>
  74.         if ($numero_dia == 7){
  75.             $numero_dia = 0;
  76.             echo "</tr>";
  77.         }
  78.     }
  79.    
  80.     //compruebo que celdas me faltan por escribir vacias de la última semana del mes
  81.     if ($numero_dia != 0){
  82.         for ($i=$numero_dia;$i<7;$i++){
  83.             echo '<td class="diainvalido"><span></span></td>';
  84.         }
  85.     }
  86.    
  87.     echo "</tr>";
  88.     echo "</table>";
  89. }  
  90.  
  91.  
  92. ?>

Lo que recibo por pantalla es:
Código PHP:
Ver original
  1. index.php?variable=2014-1-10
que en realidad es mas o menos lo que necesito, aunque los meses y los días deberían tener formato '01' y no '1', pero bueno.

De la consulta que hice en la que datDia debe ser igual a variable (que es la fecha seleccionada) muesto el nombre del cliente de la cita asi:
Código HTML:
Ver original
  1. <td style="padding:5px;font-size:20px"><?php echo $row_Citas['txtNombre']; ?></td>

..... pero como dije, no consigo relacionar bien todo esto. Es la primera vez que hago una agenda de citas con un calendario.

antes de publicar mi pregunta he estado mirando por el foro pero no consigo encontrar la solución, llevo un par de días y nada.

Si el tema no está en el lugar adecuado ruego me disculpen pero es que se utilizan varios lenguajes en el calendario.
Si no me he explicado bien puedo lo que necesiten a ver si consigo arreglarlo, aunque la explicación es bastante densa.

Muchas gracias por adelantado.
Estaré por aquí.
Raúl.

Última edición por raulgranadosraul; 19/01/2014 a las 09:59 Razón: Error en el texto
  #2 (permalink)  
Antiguo 20/01/2014, 19:09
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: ¿Cómo poner enlaces a los días de un calendario php-mysql?

La consulta era larga y he dado muchas vueltas al código...... pero al final he conseguido lo que necesitaba.

Si alguien necesita poner enlaces a su calendario para consultar y añadir citas con múltiples datos enviame un mail y lo solucionamos.

Gracias.
  #3 (permalink)  
Antiguo 18/10/2014, 04:08
 
Fecha de Ingreso: junio-2008
Ubicación: Spain
Mensajes: 39
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: ¿Cómo poner enlaces a los días de un calendario php-mysql?

Hola raulgranadosraul,

estoy necesitando justo algo asi, si puedes dime como lo hiciste y que calendario usaste.

Saludos y gracias.
  #4 (permalink)  
Antiguo 04/02/2015, 17:05
Avatar de andresqui  
Fecha de Ingreso: septiembre-2009
Mensajes: 8
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: ¿Cómo poner enlaces a los días de un calendario php-mysql?

Cita:
Iniciado por raulgranadosraul Ver Mensaje
La consulta era larga y he dado muchas vueltas al código...... pero al final he conseguido lo que necesitaba.

Si alguien necesita poner enlaces a su calendario para consultar y añadir citas con múltiples datos enviame un mail y lo solucionamos.

Gracias.
tienes el sistema subido en algun servidor web ??, me gustaria ver como te funciona y yo sacar una idea si mas adelante me piden hacer algo asi

Etiquetas: agenda, calendario, dias, enlaces, eventos, js, mysql
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 13:58.