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$varCitas_Citas = "0";
if (isset($_GET["variable"])) { $varCitas_Citas = $_GET["variable"];
}
$query_Citas = sprintf("SELECT * FROM Citas_tbl WHERE Citas_tbl.datDia = %s", GetSQLValueString
($varCitas_Citas, "int"));
datDia es el campo de la tabla donde esta almacenada la fecha de las citas.
... este js ...
Código Javascript
:
Ver original<script type="text/javascript" src="js_agenda/javascripts.js"></script>
<script type="text/javascript">
function devuelveFecha(ano,mes,dia){
//Se encarga de escribir en el formulario adecuado los valores seleccionados
//también debe cerrar la ventana del calendario
var formulario_destino = '<?php echo $_GET["formulario"]?>'
var campo_destino = '<?php echo $_GET["nomcampo"]?>'
//meto el dia
eval ("opener.document." + formulario_destino + "." + campo_destino + ".value='" + ano + "/" + mes + "/" + dia + "'")
window.close()
}
</script>
... y donde se muestra el calendario:
Código PHP:
Ver original<article class="grid_1">
<?php
//TOMO LOS DATOS QUE RECIBO POR LA url Y LOS COMPONGO PARA PASARLOS EN SUCESIVAS EJECUCIONES DEL CALENDARIO
$parametros_formulario = "formulario=" . $_GET["formulario"] . "&nomcampo=" . $_GET["nomcampo"];
?>
<div>
<?php
require ("calendario.php");
$dia_solo_hoy = date("d",$tiempo_actual); if (!$_POST && !isset($_GET["nuevo_mes"]) && !isset($_GET["nuevo_ano"])){ $mes = date("n", $tiempo_actual); $ano = date("Y", $tiempo_actual); }elseif ($_POST) {
$mes = $_POST["nuevo_mes"];
$ano = $_POST["nuevo_ano"];
}else{
$mes = $_GET["nuevo_mes"];
$ano = $_GET["nuevo_ano"];
}
mostrar_calendario($mes,$ano);
formularioCalendario($mes,$ano);
?>
</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<?php
....... function mostrar_calendario($mes,$ano){
global $parametros_formulario;
//tomo el nombre del mes que hay que imprimir
$nombre_mes = dame_nombre_mes($mes);
//construyo la tabla general
echo '<table class="tablacalendario" cellspacing="5" cellpadding="5" border="0">';
echo '<tr><td colspan="7" class="tit">';
//tabla para mostrar el mes el año y los controles para pasar al mes anterior y siguiente
echo '<table width="100%" cellspacing="2" cellpadding="2" border="0" ><tr><td class="messiguiente">';
//calculo el mes y ano del mes anterior
$mes_anterior = $mes - 1;
$ano_anterior = $ano;
if ($mes_anterior==0){
$ano_anterior--;
$mes_anterior=12;
}
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>";
echo "<td class='titmesano'>$nombre_mes $ano</td>";
echo "<td class='mesanterior'>";
//calculo el mes y ano del mes siguiente
$mes_siguiente = $mes + 1;
$ano_siguiente = $ano;
if ($mes_siguiente==13){
$ano_siguiente++;
$mes_siguiente=1;
}
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>";
echo ' <tr>
<td width="14%" class="diasemana">L</td>
<td width="14%" class="diasemana">M</td>
<td width="14%" class="diasemana">X</td>
<td width="14%" class="diasemana">J</td>
<td width="14%" class="diasemana">V</td>
<td width="14%" class="diasemana">S</td>
<td width="14%" class="diasemana">D</td>
</tr>';
//Variable para llevar la cuenta del dia actual
$dia_actual = 1;
//calculo el numero del dia de la semana del primer dia
$numero_dia = calcula_numero_dia_semana(1,$mes,$ano);
//echo "Numero del dia de demana del primer: $numero_dia <br>";
//calculo el último dia del mes
$ultimo_dia = ultimoDia($mes,$ano);
//escribo la primera fila de la semana
echo "<tr>";
for ($i=0;$i<7;$i++){
if ($i < $numero_dia){
//si el dia de la semana i es menor que el numero del primer dia de la semana no pongo nada en la celda
echo '<td class="diainvalido"><span></span></td>';
} else {
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>";
$dia_actual++;
}
}
echo "</tr>";
//recorro todos los demás días hasta el final del mes
$numero_dia = 0;
while ($dia_actual <= $ultimo_dia){
//si estamos a principio de la semana escribo el <TR>
if ($numero_dia == 0)
echo "<tr>";
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>";
$dia_actual++;
$numero_dia++;
//si es el uñtimo de la semana, me pongo al principio de la semana y escribo el </tr>
if ($numero_dia == 7){
$numero_dia = 0;
echo "</tr>";
}
}
//compruebo que celdas me faltan por escribir vacias de la última semana del mes
if ($numero_dia != 0){
for ($i=$numero_dia;$i<7;$i++){
echo '<td class="diainvalido"><span></span></td>';
}
}
echo "</tr>";
echo "</table>";
}
?>
Lo que recibo por pantalla es:
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<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.