Foros del Web » Programando para Internet » PHP »

Problema con calendario

Estas en el tema de Problema con calendario en el foro de PHP en Foros del Web. Por favor que alguien me ilumine. Tengo el siguiente calendario Código PHP: <? $anoInicial  =  '1900' ; $anoFinal  =  '2100' ; $funcionTratarFecha  =  'document.location = "?dia="+dia+"&mes="+mes+"&ano="+ano;' ; ...
  #1 (permalink)  
Antiguo 28/08/2008, 03:59
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 18 años, 2 meses
Puntos: 1
Problema con calendario

Por favor que alguien me ilumine.

Tengo el siguiente calendario

Código PHP:
<?
$anoInicial 
'1900';
$anoFinal '2100';
$funcionTratarFecha 'document.location = "?dia="+dia+"&mes="+mes+"&ano="+ano;';
?><script>
function tratarFecha(dia,mes,ano){
  <?=$funcionTratarFecha?>
}
</script>

<form><table border="0" cellpadding="5" cellspacing="0" bgcolor="#D4D0C8">
  <tr>
    <td width="100%">
<?
$fecha 
getdate(time());
if(isset(
$_GET["dia"]))$dia $_GET["dia"];
else 
$dia $fecha['mday'];
if(isset(
$_GET["mes"]))$mes $_GET["mes"];
else 
$mes $fecha['mon'];
if(isset(
$_GET["ano"]))$ano $_GET["ano"];
else 
$ano $fecha['year'];
$fecha mktime(0,0,0,$mes,$dia,$ano);
$fechaInicioMes mktime(0,0,0,$mes,1,$ano);
$fechaInicioMes date("w",$fechaInicioMes);
?>
    <select size="1" name="mes" class="m1" onChange="document.location = '?dia=<?=$dia?>&mes=' + document.forms[0].mes.value + '&ano=<?=$ano?>';">
<?
$meses 
= Array ('enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','diciembre');
for(
$i 1$i <= 12$i++){
  echo 
'      <option ';
  if(
$mes == $i)echo 'selected ';
  echo 
'value="'.$i.'">'.$meses[$i-1]."\n";
}
?>
    </select>&nbsp;&nbsp;&nbsp;<select size="1" name="ano" class="m1" onChange="document.location = '?dia=<?=$dia?>&mes=<?=$mes?>&ano=' + document.forms[0].ano.value;">
<?
for ($i $anoInicial$i <= $anoFinal$i++){
  echo 
'      <option ';
  if(
$ano == $i)echo 'selected ';
  echo 
'value="'.$i.'">'.$i."\n";
}
?>
    </select><br>
    <font size="1">&nbsp;</font><table border="0" cellpadding="2" cellspacing="0" width="100%" class="m1" bgcolor="#FFFFFF" height="100%">
<?
$diasSem 
= Array ('L','M','M','J','V','S','D');
$ultimoDia date('t',$fecha);
$numMes 0;
for (
$fila 0$fila 7$fila++){
  echo 
"      <tr>\n";
  for (
$coln 0$coln 7$coln++){
    
$posicion = Array (1,2,3,4,5,6,0);
    echo 
'        <td width="14%" height="19"';
    if(
$fila == 0)echo ' bgcolor="#808080"';
    if(
$dia-== $numMes)echo ' bgcolor="#0A246A"';
    echo 
" align=\"center\">\n";
    echo 
'        ';
    if(
$fila == 0)echo '<font color="#D4D0C8">'.$diasSem[$coln];
    elseif((
$numMes && $numMes $ultimoDia) || (!$numMes && $posicion[$coln] == $fechaInicioMes)){
      echo 
'<a href="#" onclick="tratarFecha('.(++$numMes).','.$mes.','.$ano.')">';
      if(
$dia == $numMes)echo '<font color="#FFFFFF">';
      echo (
$numMes).'</a>';
    }
    echo 
"</td>\n";
  }
  echo 
"      </tr>\n";
}
?>
    </table>
    </td>
  </tr>
</table></form>
Lo tengo insertado dentro de un php con consulta a base de datos, para extraer los datos por días, la cuestion es que los datos los tengo en la base de datos con fecha año-mes-dia

Y tengo la consulta de la siguiente manera

Código PHP:
$query_Recordset1 "SELECT * FROM partidos WHERE dia = '$ano-$mes-$dia' ORDER BY hora ASC"
Al poner un echo con
Código PHP:
<?php
echo $ano-$mes-$dia;
?>
Me hace una operación aritmetica, por lo cual por ejemplo si estamos a 2008-08-08, lo que me hace es restar al años, el mes y despues el dia, así que no encuentra nada en la base de datos.

Como deberia de representar el año-mes-dia para que lo adopte la base de datos y el echo me muestre el año con formato año-mes-dia, sin operacion aritmetica.

Decir que en mi base de datos, solo tengo un campo para la fecha y esta representado en año-mes día, o lo que es lo mismo que yo mismo inserto la fecha y pongo 2008-08-28 cuando introduzco datos por ejemplo en el dia de hoy.

En resumidas cuentas que no se como hacer la consulta con el calendario, ni hacer el echo del día cuando clico en el

Espero haberme explicado bien, muchas gracias por vuestras respuestas
  #2 (permalink)  
Antiguo 28/08/2008, 05:16
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 16 años, 3 meses
Puntos: 7
Respuesta: Problema con calendario

para el echo es así:

echo $ano.'-'.$mes.'-'.$dia;

y para la consulta igual:
$fecha = $ano.'-'.$mes.'-'.$dia;


$query_Recordset1 = "SELECT * FROM partidos WHERE dia = '$fecha' ORDER BY hora ASC";
  #3 (permalink)  
Antiguo 28/08/2008, 05:52
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Problema con calendario

Pues el echo me sale perfecto como me has dicho, pero la consulta no, te pongo el codigo completo

Código PHP:
<?
$anoInicial 
'1900';
$anoFinal '2100';
$funcionTratarFecha 'document.location = "?dia="+dia+"&mes="+mes+"&ano="+ano;';
?><script>
function tratarFecha(dia,mes,ano){
  <?=$funcionTratarFecha?>
}
</script>
<?php
$fecha 
$ano.'-'.$mes.'-'.$dia;
$maxRows_Recordset1 90;
$pageNum_Recordset1 0;
if (isset(
$_GET['pageNum_Recordset1'])) {
  
$pageNum_Recordset1 $_GET['pageNum_Recordset1'];
}
$startRow_Recordset1 $pageNum_Recordset1 $maxRows_Recordset1;
$fecha $ano.'-'.$mes.'-'.$dia;
mysql_select_db($database_conexion1$conexion1);
$query_Recordset1 "SELECT * FROM partidos WHERE dia = '$fecha' ORDER BY hora ASC";
$query_limit_Recordset1 sprintf("%s LIMIT %d, %d"$query_Recordset1$startRow_Recordset1$maxRows_Recordset1);
$Recordset1 mysql_query($query_limit_Recordset1$conexion1) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);

if (isset(
$_GET['totalRows_Recordset1'])) {
  
$totalRows_Recordset1 $_GET['totalRows_Recordset1'];
} else {
  
$all_Recordset1 mysql_query($query_Recordset1);
  
$totalRows_Recordset1 mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
?>
Te dejo los ejemplos

http://www.deporte-tv.es

Asi lo tengo, pero sin el calendario, creando yo las paginas a pelo

Y asi lo tengo todavia en pruebas con el calendario en la parte inferior

http://www.deporte-tv.es/indexcalen.php

pero no me hace bien el query

Serias tan amable de mirarmelo, muchas gracias, llevo asi como dos horas y no doy con la tecla
  #4 (permalink)  
Antiguo 28/08/2008, 06:50
Avatar de foreverOdd  
Fecha de Ingreso: noviembre-2007
Ubicación: Caracas
Mensajes: 489
Antigüedad: 17 años
Puntos: 14
Respuesta: Problema con calendario

pero que tipo de dato es la fecha en tu DB, quiza es timestamp o alguna otra que al hacer la comparacion simplemente no coinciden

trata de llevar la fecha de tu DB al mismo formato de la fecha con la que la estas comparando,
lee la documentacion de mysql acerca de la funcion function_date-format a ver que sacas

Suerte
__________________
My path is lit by my own fire, I only go where I desire
  #5 (permalink)  
Antiguo 28/08/2008, 07:52
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Problema con calendario

Buenas foreverOdd muchas gracias por interesarte, el formato de la fecha en mi DB es "date" y el valor predeterminado es "0000-00-00"

Mi problema es que el php lo voy aprendiendo desde hace poco tiempo y no controlo tanto, voy leyendo y leyendo, basandome en muchas ocasiones en ayudas extras por parte de compañeros de forosdelweb.

En lo que me comentas no tengo ni la mas remota de idea de como hacerlo
  #6 (permalink)  
Antiguo 28/08/2008, 08:00
Avatar de foreverOdd  
Fecha de Ingreso: noviembre-2007
Ubicación: Caracas
Mensajes: 489
Antigüedad: 17 años
Puntos: 14
Respuesta: Problema con calendario

ok, trata de concatenar la fecha dentro de la cadena sql, recuerda que en php las variables que estan dentro de las comillas simples no se evaluan... has asi:

$fecha = "2008-08-06"

...... fecha = '".$fecha."'.....


prueba primero asi y despues con tu fecha
__________________
My path is lit by my own fire, I only go where I desire
  #7 (permalink)  
Antiguo 28/08/2008, 08:14
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Problema con calendario

Muchas gracias por todo foreverOdd, ya he solucionado el problema

Ha sido el siguiente, mi consulta a la base de datos la estaba haciendo antes de nombrar los valores de la fecha, entonces no me pillaba esos valores, ya sabes, que si A= 0 y mas abajo escribes que A=1, pues el valor de A sera 1, bien pues yo tenia el query por encima del lugar donde ser decia que fecha= XXX por ese motivo no funcionaba, ahora si clicas sobre el enlace veras que si me funciona el calendario

http://www.deporte-tv.es/indexcalen.php

Os tengo que dar una y mil gracias por haberme poco a poco aclarado la idea, por que la verdad que llevo tiempo deseando implementar esto

Una vez mas mil gracias
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 14:45.