Foros del Web » Programando para Internet » PHP »

Ayuda con fechas en php

Estas en el tema de Ayuda con fechas en php en el foro de PHP en Foros del Web. que tal, tengo unos registros que exporto a excel a traves de php. los registros son algo como esto: Cita: fecha nombre tel 01-03-2011 fernando ...
  #1 (permalink)  
Antiguo 14/03/2011, 15:45
 
Fecha de Ingreso: marzo-2010
Ubicación: Guadalajara, Jal
Mensajes: 91
Antigüedad: 14 años, 1 mes
Puntos: 1
Ayuda con fechas en php

que tal, tengo unos registros que exporto a excel a traves de php.

los registros son algo como esto:

Cita:
fecha nombre tel
01-03-2011 fernando 33333333
01-03-2011 fernando 33333333
01-03-2011 fernando 33333333

02-03-2011 fernando 33333333
02-03-2011 fernando 33333333
quiero que cuando cambie a otra fecha aparezca un renglon de cualquier color, con el fin de separar la informacion por fecha, yo lo intente de la siguiente manera

Código PHP:
    $fechaI $_GET['fechaI'];
    list(
$ano,$mes,$dia) = split('[/.-]',$fechaI);
    
$fechaF $_GET['fechaF'];
    list(
$anoF,$mesF,$diaF) = split('[/.-]',$fechaF);

    echo 
"dia ".$dia;
    echo 
"diaF ".$diaF;

    if(
$i){
        echo 
"<tr><td style='$style2' colspan='18'></td></tr>";
    } 
alguna idea?
__________________
Si me pides ayuda ten por seguro que hare todo mi esfuerzo por ayudarte...
  #2 (permalink)  
Antiguo 14/03/2011, 18:26
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 3 meses
Puntos: 155
Respuesta: Ayuda con fechas en php

Si se me ocurre una bandera que confome vayas recorriendo fechas

detecte el cambio y cambie el color del renglon

Código PHP:
$bandera="";
foreach ($fecha as $lafechiux){
    if ($bandera!=$lafechiux){
        $colorRenglon=$uncolor;#en la variable un color puedes generar el hexadecimal de color aleatoriamente o usar un arreglo con colores
        $bandera=$lafechiux;
    }
?>
<tr background="<?=$colorRenglon?>"><td><?=$lafechiux?></td></tr>
<?
}
relativamente es pseudocodigo por que no probe nada , la cosa era ejemplificar una idea
  #3 (permalink)  
Antiguo 15/03/2011, 09:32
 
Fecha de Ingreso: marzo-2010
Ubicación: Guadalajara, Jal
Mensajes: 91
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Ayuda con fechas en php

Excelente con tu respuesta, me abrio nuevos horizontes.

Ahora se amplio un poco mi duda, pero ya tengo la idea. En mi consulta recibo por medio del get dos parametros, $fechaI y $fechaF, cuando hago

foreach($_GET AS $fechas) y lo imprimo (echo $fechas;) me aparecen ambas fechas, la de inicio y la de fin, pegadas, habra una manera de separar ambas fechas para que recorra cada dia con el foreach y cuando detecte el cambio de dia (utilizando las banderas), imprima la celda vacia?
__________________
Si me pides ayuda ten por seguro que hare todo mi esfuerzo por ayudarte...
  #4 (permalink)  
Antiguo 15/03/2011, 10:05
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 3 meses
Puntos: 155
Respuesta: Ayuda con fechas en php

pues sobre la misma idea ¿no seria mejor en lugar de separar? juntar las dos fechas en un solo arreglo
http://php.net/manual/es/function.array-merge.php
Código PHP:
<?


$fecha 
array_merge($$_GET["fechaI"], $_GET["fechaF"]);

$bandera="";
foreach (
$fecha as $lafechiux){
    if (
$bandera!=$lafechiux){
        
$colorRenglon=$uncolor;#en la variable un color puedes generar el hexadecimal de color aleatoriamente o usar un arreglo con colores
        
?>
        <tr><td>&nbsp;</td></tr><!--impresion de celda vacia-->
        <?
        $bandera
=$lafechiux;
    }
?>
<tr background="<?=$colorRenglon?>"><td><?=$lafechiux?></td></tr>
<?
}

?>
  #5 (permalink)  
Antiguo 15/03/2011, 10:44
 
Fecha de Ingreso: marzo-2010
Ubicación: Guadalajara, Jal
Mensajes: 91
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Ayuda con fechas en php

Excelente, no conocia dicha funcion, la investigue y sirve para unir dos arreglos cierto?

comenzare a programar esto a ver que sale, gracias por la sugerencia, estoy en esto!
__________________
Si me pides ayuda ten por seguro que hare todo mi esfuerzo por ayudarte...
  #6 (permalink)  
Antiguo 15/03/2011, 17:02
 
Fecha de Ingreso: marzo-2010
Ubicación: Guadalajara, Jal
Mensajes: 91
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Ayuda con fechas en php

Gracias por la ayuda y disculpen las molestias ocasionadas.

Sigo sin poder resolver mi problema, ya lo intente con las opciones mencionadas arriba pero no me da el resultado deseado, me imprime un sin fin de lineas en blanco, entre los registros tambien me imprime muchas lineas entre ellos.

Lo que necesito hacer es que mi archivo de excel(el cual ya hace la exportacion bien) imprima una celda entre ellos(independientemente del formato o color) cuando cambie la fecha.

ejemplo

2011/01/03
2011/01/03
2011/01/03

2011/01/04
2011/01/04

2011/01/05

ya intente con array_merge pero no me resulto, con foreach($_GET as $fec) y tampoco, alguien que me pueda dar seguimiento por favor!
__________________
Si me pides ayuda ten por seguro que hare todo mi esfuerzo por ayudarte...
  #7 (permalink)  
Antiguo 15/03/2011, 19:03
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Ayuda con fechas en php

El tema es que estas tratando de hacer el codigo sin incorporar los datos que van entre ellas.

O sea... si tienes una consulta de la cual generas una tabla debes preguntar en la consulta, si la fecha es igual... me explico:
Código PHP:
Ver original
  1. //tomo los valores de las fecha introducidas
  2. $fI = $_GET["fechaI"];
  3. $fT = $_GET["fechaF"];
  4. //ahora vamos a hacer un arreglo con las fechas que existen entre las fechas introducidas
  5. $arrFI = explode('-',$fI);
  6. $arrFT = explode('-',$fT);
  7. //convertimos cada dia para que sea mas facil obtener los dias entre ellos
  8. //estoy asumiendo que la fecha es dd-mm-yyyy
  9. $finic = mktime(12,0,0,$arrFI[1],$arrFI[0],$arrFI[2]);
  10. $ffina = mktime(12,0,0,$arrFT[1],$arrFT[0],$arrFT[2]);
  11. //aca tenemos los dias entre las dos fechas
  12. $x = abs(floor(($ffina - $finic)/60/60/24));
  13. //contador
  14. $y=0;
  15. for($a=0;$a<=$x;$a++){
  16.     //a una fecha temporal le sumamos la cantidad de dias
  17.     $ftemp = mktime(12,0,0,$arrFI[1],$arrFI[0]+$a,$arrFI[2]);
  18.     //creamos el arreglo con las fechas
  19.     //ojo que aca van a agregarse los dos dias (tanto el de inicio como el de fin)
  20.     $arrFechas['fecha'][$y] = date('d-m-Y',$ftemp);
  21.     //le creo un flag para activarla si se encuentra en los datos
  22.     $arrFechas['activa'][$y] = false;
  23.     $y++;
  24. }
  25. $sql = "SELECT * FROM tabla WHERE fecha BETWEEN '$fI' AND '$fT'";
  26. $result = mysql_query($sql);
  27. while($data = mysql_fetch_array($result)){
  28.     //aca se imprime tu tabla como siempre
  29.     /* CODIGO DE TU TABLA */
  30.     //ahora vamos a la celda en blanco...
  31.     //buscamos que clave es la que tiene la fecha
  32.     $clave = array_search($data['fecha'],$arrFechas['fecha']);
  33.     //agregamos la linea en blanco y activamos la fecha si no esta activada
  34.     if(!$arrFechas['activa'][$indice]){
  35.         $arrFechas['activa'][$indice] = true;
  36.         echo '<tr><td>&nbsp;</td></tr><!--impresion de celda vacia-->';
  37.     }//aca no necesitas hacer nada mas
  38. }

Prueba a ver si esto soluciona tu problema.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #8 (permalink)  
Antiguo 15/03/2011, 22:35
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 3 meses
Puntos: 155
Respuesta: Ayuda con fechas en php

mmm que pasa si haces algo asi?

Código PHP:
<?
$arreglo
=array("2011/01/03","2011/01/03","2011/01/03","2011/01/04","2011/01/04","2011/01/05");
$bandera="2011/01/03";#primer elemento del arreglo
$colores[]="#01DFD7";
$colores[]="#A4A4A4";
$colorRenglon=$colores[0];
?>
<table>
<?
foreach ($arreglo as $fecha){ 
 if (
$bandera!=$fecha){ 
        
        
?> 
        <tr><td>&nbsp;</td></tr><!--impresion de celda vacia--> 
        <? 
        $bandera
=$fecha
        if(
$colorRenlon=="#01DFD7")
            
$colorRenglon=$colores[1];
        else
            
$colorRenglon=$colores[0];
    } 
    
?> 
<tr background="<?=$colorRenglon?>"><td><?=$fecha?></td></tr> 
<? 
}
?>
</table>
  #9 (permalink)  
Antiguo 16/03/2011, 14:36
 
Fecha de Ingreso: marzo-2010
Ubicación: Guadalajara, Jal
Mensajes: 91
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Ayuda con fechas en php

Gracias por tu ayuda mogurbon!

Te vas a burlar de mi, pero hoy me desperto mi suenio a las 2:37 am (quiza no me lo vayas a creer) pero dentro de mi suenio observe en mi mesa de centro un papel con borrones y enmendaduras, echo bolita, lo tome y cuando logre restaurar la hoja de papel mire este codigo

Código PHP:
    if($bandera == $row['fec']){
        continue;
    }else{        
        echo 
"<tr><td style='$style2' colspan='18'></td></tr>";
        
$bandera $row['fec'];
    } 
me di cuenta, dentro de mi suenio, que tenia esta tarea pendiente, asi que me desperte, tome mi computadora y como una imagen que no desaparecia de mi mente lo programe, al terminar se desvanecio aquella imagen perdiendose en mi memoria, pero esto fue lo que me dio la respuesta a mi duda.

Muchas gracias por la ayuda y atencion brindada, me sirvio de mucho!
__________________
Si me pides ayuda ten por seguro que hare todo mi esfuerzo por ayudarte...
  #10 (permalink)  
Antiguo 16/03/2011, 14:40
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 3 meses
Puntos: 155
Respuesta: Ayuda con fechas en php

jaja no creo que hallas sido el unico que en un sueño resuelves un problema de programacion vientos
  #11 (permalink)  
Antiguo 16/03/2011, 14:42
 
Fecha de Ingreso: marzo-2010
Ubicación: Guadalajara, Jal
Mensajes: 91
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Ayuda con fechas en php

Sorprendente respuesta marvin, gracias!

De hecho tengo implementado algo asi en mi codigo, pero lo que me resolvio el problema fue lo que acabo de postear arriba, olvide comentar que comienzo la bandera asi:

$bandera = $_GET[fechaI];

.
.
.
__________________
Si me pides ayuda ten por seguro que hare todo mi esfuerzo por ayudarte...

Etiquetas: fechas
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 03:18.