Foros del Web » Programando para Internet » PHP »

problemas con el mktime

Estas en el tema de problemas con el mktime en el foro de PHP en Foros del Web. He puesto este timestamp y dia mes dias ciclo me los coge de un formulário pero después digo que me añada el dia del año ...
  #1 (permalink)  
Antiguo 29/02/2012, 10:13
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Sonrisa problemas con el mktime

He puesto este timestamp y dia mes dias ciclo me los coge de un formulário pero después digo que me añada el dia del año en español y me lo pone en el primero ,pero después en el timestamp de da errores y o me da como fecha de inicio la de inicio php 1-1-1970 o me sale la fecha del formulario y 15/02/2012/Feb00Europe/BerlinWed, 15 Feb 2012 00:00:00 +01002012-02-15T00:00:00+01:002012WednesdayEurope/Berlin00 si quieres verlo in-situ sería en:

http://www.calculanomina.com/test_ovulacion.php

he intentado todas las formulas que yo se para que me salga y no llego a más .
Gracias por anticipado



<?php

//defino fecha 1
$dia=$_POST['dia'];
$mes=$_POST['mes'];
$dias_ciclo=$_POST['dias_ciclo'];
$ano=date ('Y');
$estedia=($dias_ciclo/2)-2;






if (date ('w')==1) {
$diasemana="Lunes";

} else
if (date ('w')==2) {
$diasemana="Martes";
}
else
if (date ('w')==3) {
$diasemana="Miercoles";
}
else
if (date ('w')==4) {
$diasemana="Jueves";
}
else
if (date ('w')==5) {
$diasemana="Viernes";
}
else
if (date ('w')==6) {
$diasemana="Sabado";
}
else
if (date ('w')==7) {
$diasemana="Domingo";
}
echo " Tu ciclo menstrual comienza el dia " . $dia ." Del mes ". $mes ."<br>";
echo "Y tu ciclo es de " . $dias_ciclo." Dias"."<br>";
echo "procesado el ". $diasemana . date(" j, M")." del ".date(" Y")."<br/>";

//defino fecha 2
$ano2 = $ano;
$mes2 =0;
$dia2=$dias_ciclo/2-2;




//este sería la fecha resultante

$fecha_cambiada = mktime(0,0,0,date("$mes"),date("$dia")+$estedia,da te("Y"),date("w"));
$fecha = date("d/m/Y/$diasemana", $fecha_cambiada);




echo'
<table width="600" border="1">
<tr>
<td bgcolor="#F7E381">'.$fecha.'</td>
<td bgcolor="#F7E381"></td>
<td bgcolor="#F7E381">&nbsp;</td>
</tr>
<tr>
<td bgcolor="#F7E381">&nbsp;</td>
<td bgcolor="#F7E381">&nbsp;</td>
<td bgcolor="#F7E381">&nbsp;</td>
</tr>
<tr>
<td bgcolor="#EFB8EE">&nbsp;</td>
<td bgcolor="#EFB8EE">&nbsp;</td>
<td bgcolor="#EFB8EE">&nbsp;</td>
</tr>

</table>';


?>
  #2 (permalink)  
Antiguo 01/03/2012, 07:21
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 3 meses
Puntos: 331
Respuesta: problemas con el mktime

No sé cuál es el resultado esperado pero primero tienes que solucionar los errores de sintaxis y la llamada a mktime():


Código PHP:
Ver original
  1. <?php
  2. ini_set("display_errors", 1);
  3.  
  4. //defino fecha 1
  5. $dia = 1;
  6. $mes = 2;
  7. $dias_ciclo = 28;
  8. $ano=date ('Y');
  9. $estedia=($dias_ciclo/2)-2;
  10.  
  11. if (date ('w')==1) {
  12.     $diasemana="Lunes";
  13.  
  14. } else
  15. if (date ('w')==2) {
  16.     $diasemana="Martes";
  17. }
  18. else
  19. if (date ('w')==3) {
  20.     $diasemana="Miercoles";
  21. }
  22. else
  23. if (date ('w')==4) {
  24.     $diasemana="Jueves";
  25. }
  26. else
  27. if (date ('w')==5) {
  28.     $diasemana="Viernes";
  29. }
  30. else
  31. if (date ('w')==6) {
  32.     $diasemana="Sabado";
  33. }
  34. else
  35. if (date ('w')==7) {
  36.     $diasemana="Domingo";
  37. }
  38. echo " Tu ciclo menstrual comienza el dia " . $dia ." Del mes ". $mes ."<br>";
  39. echo "Y tu ciclo es de " . $dias_ciclo." Dias"."<br>";
  40. echo "procesado el ". $diasemana . date(" j, M")." del ".date("Y")."<br/>";
  41.  
  42. //defino fecha 2
  43. $ano2 = $ano;
  44. $mes2 =0;
  45. $dia2=$dias_ciclo/2-2;
  46.  
  47.  
  48. //este sería la fecha resultante
  49.  
  50. $fecha_cambiada = mktime(0,0,0,$mes, ($dia+$estedia), date("Y"));
  51. $fecha = date("j M Y", $fecha_cambiada);
  52.  
  53. echo'
  54. <table width="600" border="1">
  55. <tr>
  56. <td bgcolor="#F7E381">'.$fecha.'</td>
  57. <td bgcolor="#F7E381"></td>
  58. <td bgcolor="#F7E381">&nbsp;</td>
  59. </tr>
  60. <tr>
  61. <td bgcolor="#F7E381">&nbsp;</td>
  62. <td bgcolor="#F7E381">&nbsp;</td>
  63. <td bgcolor="#F7E381">&nbsp;</td>
  64. </tr>
  65. <tr>
  66. <td bgcolor="#EFB8EE">&nbsp;</td>
  67. <td bgcolor="#EFB8EE">&nbsp;</td>
  68. <td bgcolor="#EFB8EE">&nbsp;</td>
  69. </tr>
  70.  
  71. </table>';
  72.  
  73.  
  74. ?>

Saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 01/03/2012, 11:41
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Respuesta: problemas con el mktime

Hola Repara2:
Primero de todo gracias por contestar , habemos algunos que estamos estudiando el php y necesitamos un poco de ayuda para no morir en el intento.
Bueno te explico
el la linea 51 y 52 del código que has puesto tu tienes definida la fecha"mktime" que el usuario marca en pantalla.
En la linea 57 la mostramos en una tabla en pantalla
pero en mi código lo que intentaba mostrar en esa misma celda añadiendo a timestamp el dia de la semana que el usuario habia marcado , o sea si el usuario marca el 7 de enero me marque el dia de la suma por ejemplo el 16 de enero y posterior en esa o en otra celda poder añadir que es
"LUNES" 16 de enero . No el dia actual si no el dia que da en pantalla.
Gracias de nuevo y espero haberme explicado bien.
  #4 (permalink)  
Antiguo 01/03/2012, 11:42
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Respuesta: problemas con el mktime

Yo quería añadir el dia de la semana en la linea 52 para mostrarlo en pantalla en la 57
  #5 (permalink)  
Antiguo 02/03/2012, 01:06
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 3 meses
Puntos: 331
Respuesta: problemas con el mktime

Tus últimas explicaciones no las entendí muy bien, pero te comento un par de cosas:
Si además de estar manejando fechas, necesitas nombres de dias y meses, tienes que llamar a un par de funciones para configurar el entorno de php, luego no tienes que hacer todos esos ifs no complicarte la vida con los nombres.
Primero utiliza date_default_timezone_set() para establecer tu zona horaria.
A continuación setlocale() para establecer idioma, calendario, etc. A partir de este momento las fechas te saldrán con formato en castellano.
Para que esto funcione, tienes que trabajar con strftime() ya que el resto de funciones no tienen en cuenta la configuración regional.
checkdate() te sirve para validar una fecha rapidamente. Por último, strtotime() te permite obtener timestamps a partir de cadenas de texto, por ejemplo strotime("Today + 1 Week"), te devuelve un timestamp con 7 dias a partir de hoy.

Respecto de tu código, la llamada a mktime era incorrecta. Consulta las funciones que te comento antes de continuar.
Saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #6 (permalink)  
Antiguo 04/03/2012, 01:21
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Respuesta: problemas con el mktime

mi problema es que la fecha la inserto correctamente incluso el dia de la semana.
Pero si es una fecha por ejemplo 16-02-2011 la pongo correctamente en un formulario , pero después no me sale el dia de la semana date ('w')del 16.02-2011
  #7 (permalink)  
Antiguo 04/03/2012, 02:02
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 3 meses
Puntos: 331
Respuesta: problemas con el mktime

Código PHP:
Ver original
  1. <?php
  2. ini_set("display_errors", 1);
  3.  
  4. setlocale(LC_ALL, "spanish", "es", "es_ES@euro","es_ES","esp");
  5. $fecha = "16-02-2011";
  6. echo "La fecha es $fecha, la marca de tiempo es ".strtotime($fecha).", el d&iacutea de la semana es ".strftime("%A", strtotime($fecha))."";
  7.  
  8. ?>
__________________
Fere libenter homines, id quod volunt, credunt.
  #8 (permalink)  
Antiguo 04/03/2012, 04:34
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Respuesta: problemas con el mktime

No se si darte las gracias o hacerte un monumento en mi ciudad , ese era el dato que no controlaba y se me quedaba todo mal.
Bueno ,espero seguir aprendiendo y más con gente como tu de veras Gracias.
Al final lo puse así.
echo "La fecha es el d&iacutea de la semana es ".strftime("%A", strtotime($fecha))."<br>";
  #9 (permalink)  
Antiguo 04/03/2012, 05:40
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 3 meses
Puntos: 331
Respuesta: problemas con el mktime

De nada, me alegro que funcione. A seguir estudiando.
__________________
Fere libenter homines, id quod volunt, credunt.

Etiquetas: mktime
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:04.