Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/01/2014, 09:43
raulgranadosraul
 
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