Foros del Web » Programando para Internet » PHP »

Problemas con calendario

Estas en el tema de Problemas con calendario en el foro de PHP en Foros del Web. Hola a tod@s! Tengo un problema con mi calendario. No soy muy experta con el PHP, por eso necesito mucha ayuda con esto. Tengo un ...
  #1 (permalink)  
Antiguo 22/11/2008, 14:09
 
Fecha de Ingreso: junio-2008
Mensajes: 13
Antigüedad: 15 años, 10 meses
Puntos: 0
Problemas con calendario

Hola a tod@s!

Tengo un problema con mi calendario. No soy muy experta con el PHP, por eso necesito mucha ayuda con esto.
Tengo un calendario con eventos y semanas.

Mis problemas son los siguientes:

1.- El calendario me "congela" el navegador al pasar a algunos meses en el pasado o en el futuro. No sé por qué y/o si tiene que ver con los eventos.

2.- Al mirar un evento en cualquier mes, el calendario me vuelve al mes actual al mostrarme el evento, lo cual llega a confundir mucho.

3.- Los números de la semana no se muestran correctamente... de momento, todas mis semanas están a 01... y no entiendo bien por qué. Además, cuando una semana se queda a medias, no me sale el num. de la semana correspondiente. Por ejemplo, si el último día de un mes cae en un miércoles, no me sale el num. correspondiente de la semana.

4.- Los meses en mi menú desplegable cambian junto con los meses de la barra superior que marca cada mes al ir de un mes a otro. Me gustaría que los meses en el menú desplegable se quedasen quietecitos.

Este es el código PHP de mi calendario:

<table border=0 cellspacing=0>
<?php
include("functions.php");
$tiempo_actual = time();
$dia_solo_hoy = date("d",$tiempo_actual);
if (!$_POST && !isset($_GET["nuevo_mess"]) && !isset($_GET["nuevo_anio"])){
$mess = $_GET['mess'];
$anio = $_GET['anio'];
}elseif ($_POST) {
$mess = $_POST["nuevo_mess"];
$anio = $_POST["nuevo_anio"];
}else{
$mess = $_GET["nuevo_mess"];
$anio = $_GET["nuevo_anio"];
}

if($mess == "" || $anio == ""){
$anio = date("Y");
$mess = date("n");
}
$ultimo = date("t",mktime(0, 0, 0, $mess, 1, $anio));
if($mess == '12' || $mess == '1'){
if($mess == '12'){
$next = 1;
$prev = $mess -1;
$anion = $anio + 1;
$aniop = $anio;
}
if($mess == '1'){
$next = $mess + 1;
$prev = 12;
$anion = $anio;
$aniop = $anio -1;
}
}else{
$next = $mess + 1;
$prev = $mess - 1;
$aniop = $anio;
$anion = $anio;
}
echo "<table width=200 height=10 cellspacing=6 cellpadding=0.5 border=0>
<tr>
<td colspan=8 align=center class=tit>
<table width=100% cellspacing=4 cellpadding=0.5 border=0><tr>
<td style=font-size:10pt;font-weight:bold;color:white><a href='".$_SERVER['PHP_SELF']."?mess=$prev&anio=$aniop' class=prev></a></td>
<td class='title'>$mes[$mess] $anio<td>
<td align=right style=font-size:10pt;font-weight:bold;color:white><a href='".$_SERVER['PHP_SELF']. "?mess=$next&anio=$anion' class=next></a></td> </table>";
echo '<tr>
<td width=14% align=center class=altn>M</td>
<td width=14% align=center class=altn>T</td>
<td width=14% align=center class=altn>O</td>
<td width=14% align=center class=altn>T</td>
<td width=14% align=center class=altn>F</td>
<td width=14% align=center class=altn>L</td>
<td width=14% align=center class=altn>S</td>
<td width=18% align=center class=altn>Vecka</td>
</tr>';
$diaa = "1";
$diaz = cargarmatriz($ultimo,$mess,$anio);
$j = 0;
while($diaa <= $ultimo){
$dia = date("D",mktime(0,0,0,$mess,$diaa,$anio)); # retorna el dia de la semana en letras...
$fecha = date("j",mktime(0,0,0,$mess,$diaa,$anio)); #retorna el dia del mes en 01/31
$dia_semana = date("w",mktime(0,0,0,$mess,$diaa,$anio)); #retorna el dia de la semana en numero
$evento = $anio."-".$mes_num[$mess]."-".$fecha;
if($dia == "Mon"){

echo "</tr><tr>";
}
if($fecha == "1"){
$i=1;
while($i != $dia_semana){
echo "<td>&nbsp;</td>";
$i++;
}
}
if($anio == date("o") && $mes[$mess] == $mes[date("n")] && $fecha == date("j")){
if($fecha == $diaz[$j] ){
echo "<td class='tddia' align='center'><b><a href='index.php?evento=$evento' target='_self'>$fecha</a></b></td>";
$j++;
}else{

echo "<td class='calendario' align='center'><b>$fecha</b></td>";
}
}else{
if($fecha == $diaz[$j] ){
echo "<td class='tddia' align='center'><b><a href='index.php?evento=$evento' target='_self'>$fecha</a></b></td>";
$j++;
}else{

//Domingos
if ($dia_semana == 0){
echo "<td align='center' class='tddom'>$fecha</td>";
echo "<td align='center' class='week'>".strftime("%V", strtotime("$adate")). "</td>";
}else{

echo "<td align='center'>$fecha</td>";}
}
}
$diaa++;
}

echo "</tr>";
?>
</table>

<div id="fecha_drop">
<table>
<?

function formularioCalendario($mess,$anio){

echo '
<table width=200 align="center" cellspacing="1" cellpadding="1" border="0" class=tform>
<tr><form action="index.php? '.$_SERVER['PHP_SELF'].' " method="POST">';
echo '
<td align="center" valign="top">
<select name=nuevo_mess class="select_month">
<option value="1"';
if ($mess==1)
echo "selected";
echo'>Januari
<option value="2" ';
if ($mess==2)
echo "selected";
echo'>Februari
<option value="3" ';
if ($mess==3)
echo "selected";
echo'>Mars
<option value="4" ';
if ($mess==4)
echo "selected";
echo '>April
<option value="5" ';
if ($mess==5)
echo "selected";
echo '>Maj
<option value="6" ';
if ($mess==6)
echo "selected";
echo '>Juni
<option value="7" ';
if ($mess==7)
echo "selected";
echo '>Juli
<option value="8" ';
if ($mess==8)
echo "selected";
echo '>Augusti
<option value="9" ';
if ($mess==9)
echo "selected";
echo '>September
<option value="10" ';
if ($mess==10)
echo "selected";
echo '>Oktober
<option value="11" ';
if ($mess==11)
echo "selected";
echo '>November
<option value="12" ';
if ($mess==12)
echo "selected";
echo '>December
</select>
</td>';
echo '
<td align="center" valign="top">
<select name=nuevo_anio class="select_yr">';

for ($cont=2006;$cont<$anio+3;$cont++){
echo "<option value='$cont'";
if ($anio==$cont)
echo " selected";
echo ">$cont";
}
echo '
</select>
</td>';
echo '
<td colspan="1" align="center" valign="top"><input type="Submit" value="G&Aring;" class="button" /></td>
</table>

</form>';
}

formularioCalendario($mess,$anio);
?>

</table>

<div id="events">
<table>
<?
$evento = $_GET['evento'];
if(!isset($evento)){
$evento = date("Y-m-d");
}
$conexion = conectar();
$sql = "select * from eventos where fecha = '$evento'";
$res = query($sql);
if(mysql_num_rows($res) > 0){
while($fila = mysql_fetch_array($res)){
echo "<tr><td class='tdfecha'>".$fila['fecha']."</td></tr>
<tr><td class='tdevento'>".$fila['evento']."</td></tr>";
}
}else{
echo "<tr><td></td></tr>";
}
desconectar($conexion);


?>
</table>


Y esta es la web donde se puede ver el calendario en funcionamiento:

illumino.110mb.com

Muchas gracias por cualquier ayuda!!

N.
  #2 (permalink)  
Antiguo 22/11/2008, 14:10
 
Fecha de Ingreso: junio-2008
Mensajes: 13
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problemas con calendario

Como no me cupo todo el texto en el mensaje anterior, envío el resto aquí:

éste es el código del archivo "functions.php":

<?php
$datos;
$mes[1] = "Januari";
$mes[2] = "Februari";
$mes[3] = "Mars";
$mes[4] = "April";
$mes[5] = "Maj";
$mes[6] = "Juni";
$mes[7] = "Juli";
$mes[8] = "Augusti";
$mes[9] = "September";
$mes[10] = "Oktober";
$mes[11] = "November";
$mes[12] = "December";
$mes_num[1] = "01";
$mes_num[2] = "02";
$mes_num[3] = "03";
$mes_num[4] = "04";
$mes_num[5] = "05";
$mes_num[6] = "06";
$mes_num[7] = "07";
$mes_num[8] = "08";
$mes_num[9] = "09";
$mes_num[10] = "10";
$mes_num[11] = "11";
$mes_num[12] = "12";
$dias[0] = "0";
function conectar(){ //Pon los datos de conexión de tu localhost
$host = "localhost";
$usuariodb = "*******";
$pwddb = "*******";
$db = "*******";
$enlace = mysql_connect($host,$usuariodb,$pwddb);// or die("No pudo conectarse : " . mysql_error());
if (!$enlace) {
die('No conectado : ' . mysql_error());
}
$seldb = mysql_select_db($db,$enlace);
if (!$seldb) {
die ('No se puede usar eventos: ' . mysql_error());
}
return $enlace;
}

function desconectar($conexion){
mysql_close($conexion);
}

function query($sql){
$res = mysql_query($sql) or die (mysql_error());
return $res;
}

function buscareventos($ultimo,$mess,$anio){
$conexion = conectar();
$desde = $anio."-".$mess."-01";
$hasta = $anio."-".$mess."-".$ultimo;
$sql = "select * from eventos where fecha BETWEEN '$desde' and '$hasta'";
$res = query($sql);
if(mysql_num_rows($res) > 1){
echo "<tr><th>FECHA</th><th>EVENTO</th></tr>";
while($fila = mysql_fetch_array($res)){
echo "<tr><td class='tdfecha'>".$fila['fecha']."</td><td class='tdevento'>".$fila['evento']."</td></tr>";
}
}else{
echo "<tr><td class='tdno'>No se encuentran eventos cargado en este mes.</td></tr>";
}
desconectar($conexion);
}

function cargarmatriz($ultimo,$mess,$anio){
$i = 0;
$conexion = conectar();
$desde = $anio."-".$mess."-01";
$hasta = $anio."-".$mess."-".$ultimo;
// $sql = "select * from eventos where fecha BETWEEN '$desde' and '$hasta' order by fecha";
$sql = "select distinct fecha from eventos where fecha BETWEEN '$desde' and '$hasta' order by fecha";
$res = query($sql);
if(mysql_num_rows($res) > 0){
while($fila = mysql_fetch_array($res)){
$fecha = $fila['fecha'];
$dia = explode("-", $fecha);
//if($dias[$i-1] != $dia[2]){
$dias[$i] = $dia[2];
//}
$i++;
}
}else{
$dias[0] = "0";
}
desconectar($conexion);
return $dias;
}


function redireccionar($time,$url){
print "<meta http-equiv=Refresh content=\"$time ; url=$url\">";
}

?>

Muchísimas gracias por cualquier ayuda,

N.

Última edición por Faisca; 02/12/2008 a las 17:36
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 04:16.