Foros del Web » Programando para Internet » PHP »

contar diaz

Estas en el tema de contar diaz en el foro de PHP en Foros del Web. holas foro como estan aqui les traigo otra duda .. miren los q pasa es q nesesito contar solo los dias desde una fecha que ...
  #1 (permalink)  
Antiguo 20/01/2006, 01:52
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 20 años
Puntos: 1
Pregunta contar diaz

holas foro como estan aqui les traigo otra duda ..
miren los q pasa es q nesesito contar solo los dias desde una fecha que tengo alamacenada en la bd en una variable y tengo este pedaso de codigo y la suma esta mal nose que esta fallando porfa ecehnle una miradita porfa

...
$fecha=mysql_result($res,$i,"FECHA");// rescato la bariable donde se guarda la fecha
$actual = date('Y-m-d').'<br>';
$anterior =$_POST['$fecha']; // la paso para que la reste con la actual

list($fechaAct, $horaAct) = explode(' ', $actual);
list($yearAct, $mesAct, $dayAct) = explode('-', $fechaAct);
list($horaAct, $minAct, $secAct) = explode(':', $horaAct);

list($fechaAnt, $horaAnt) = explode(' ', $anterior);
list($yearAnt, $mesAnt, $dayAnt) = explode('-', $fechaAnt);
list($horaAnt, $minAnt, $secAnt) = explode(':', $horaAnt);

$sAct = mktime(0,0,0, $mesAct, $dayAct, $yearAct);
$sAnt = mktime(0,0,0, $mesAnt, $dayAnt, $yearAnt);


$diffAnos = (($sAct - $sAnt)/86400)/365;
$edad = round($diffAnos); // resultado pero esta mal



y me da sienpre 36 como resultado

Última edición por blackrocha; 20/01/2006 a las 02:04
  #2 (permalink)  
Antiguo 20/01/2006, 02:24
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
...

1.- $actual = date('Y-m-d').'<br>';: No le metas HTML.. supongo lo que quieres es asignarle el valor de la fecha.

2.- $anterior =$_POST['$fecha'];: ¿no '$fecha' es dato sacado de la BD???, ¿qué tiene que hacer ahí??; $_POST es para recojer un formulario ....

3.- explode(' ', $actual);: Tú mismo le diste valor a '$actual', y no metiste espacios. Con esto no haces nada... por consecuencia todo lo que se refiere a desglozar la "hora" ahí mismo viene sobrando... no existe tal! (y recuerda que traes HTML).

4.- Los pricesos matemáticos estan pensados (si funcionaran) para sacar la diferencia en años (hasta el nombre de la variable así lo da a entender)... saca cuentas (cuantos segundos tiene un día?)

5.- Existen mejores maneras para hacer el cálculo. Ve la función strtotime() ó, mejor aún, con SQL y la función DATEDIFF().

Con SQL:
Código:
SELEC DATEDIFF(CURDATE(), 'campo_fecha') AS dias FROM tabla
Con PHP:
Código PHP:
echo date('d'strtotime("now")-strtotime($fecha)); 
Suerte! .
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 20/01/2006, 12:41
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 20 años
Puntos: 1
dejame ver si entendi solo tengo que colocar
echo date('d', strtotime("now")-strtotime($fecha)); ese pedasito de codigo para que me saque la cantidada de dias????
porque saves que me marca un error con ese pedaso de codigo q me diste mira lo tengo asi

$fecha=mysql_result($res,$i,"FECHA");
$date=date('d',strtotime("now")-strtotime($fecha));
  #4 (permalink)  
Antiguo 20/01/2006, 12:50
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 20 años
Puntos: 1
Cita:
Iniciado por blackrocha
dejame ver si entendi solo tengo que colocar
echo date('d', strtotime("now")-strtotime($fecha)); ese pedasito de codigo para que me saque la cantidada de dias????
porque saves que me marca un error con ese pedaso de codigo q me diste mira lo tengo asi

$fecha=mysql_result($res,$i,"FECHA");
$date=date('d',strtotime("now")-strtotime($fecha));
esto me mostraria cierto si en la bariable tengo 01-1-2006 actual es 20-1-2006 deberi mostrarme 19 q es la resta de los dias de la fecha ingresada con la actual cierto gracias de natemano
  #5 (permalink)  
Antiguo 21/01/2006, 00:23
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
Cita:
porque saves que me marca un error con ese pedaso de codigo q me diste
... ya, pero adivino no soy ¿qué error?, ¿ya te aseguraste sea asignado a $fecha el valor indicado y que el mismo sea válido???, ¿de qué tipo es el campo donde guardas la fecha?; debería ser DATE ó DATETIME.

Por favor lee las Recomendaciones para Preguntar en este foro que estan marcadas como importante (de paso mi firma).

Cita:
esto me mostraria cierto si en la bariable tengo 01-1-2006 actual es 20-1-2006 deberi mostrarme 19 q es la resta de los dias de la fecha ingresada con la actual cierto gracias de natemano
... ... ... ... ... eh? (). No sé los demás, yo no entendí nada . Expresate mejor --para no decir "bien"--.

... prueba independientemente el código que te muestro, ve que funciona... esta de tu parte asignar a $fecha un dato válido. Ejemplo:
Código PHP:
<?php
$fecha
"2005-12-31"// una fecha válida
echo date('d'strtotime("now")-strtotime($fecha)); // los días que lleva en año ;-)
?>
Suerte! .
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 24/01/2006, 19:01
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 20 años
Puntos: 1
eso debe de ser sabes porq lo tengo como char devido a que tengo un calendar y este me da buelta la fecha me muestra dd-mm-yy y al almacernarla si lo asigno como campo "date" me la da almacena mal eje 24/01/2006 en la bd me la almacena asi 2024/01/20 entonces por eso la deje como char tu porciacaso no sabes como arreglar eso
  #7 (permalink)  
Antiguo 25/01/2006, 07:34
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
... nuevamente no alcanzo a entender.... dentro de lo poco que --creo-- comprendí: lo ideal (lo óptimo) es que trabajes con campos de tipo fecha (lo que son), eso te permitirá emplear un buen número de funciones que te facilitarán la vida (ejemplo: hacerlo desde SQL como dije desde un inicio).

Nuevamente la invitación a que leas las recomendaciones que mencioné anteriormente.

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 26/01/2006, 12:47
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 20 años
Puntos: 1
sabes lo que pasa es mi calendar almacena la fecha dd-mm-yy; cuando el campo date de la base de datos es yy-mm-dd y esto me produce una distorcion al momento en que se guarda el dato y no se puede hacer ninguna operacion sobre el, tu sabes como se puede dar buelta la fecha del calendar?. Para cuando me la asigne para el insert sea en el formato yy-mm-dd.

mira este es el pedasop de codigo que creo donde se maneja la bariable
aqui es donde se embia a un cuadro de texto la fecha asignada

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title></title>
<link rel="STYLESHEET" type="text/css" href="estilo.css">
</head>

<body>
<div align="center">
<?
require ("calendario.php");

if (!$HTTP_POST_VARS && !$HTTP_GET_VARS){
$tiempo_actual = time();
$mes = date("n", $tiempo_actual);
$ano = date("Y", $tiempo_actual);
$dia=date("d");
$fecha=$ano . "-" . $mes . "-" . $dia;

}else {
$ano = $nuevo_ano;
$mes = $nuevo_mes;
$dia = $dia;
$fecha=$ano . "-" . $mes . "-" . $dia;

}
echo"Fecha Seleccionada<input type=text name=fecha value=$fecha>";
//mostrar_calendario($dia,$mes,$ano);
mostrar_calendario($ano,$mes,$dia);
?>
</div>
</body>
</html>
  #9 (permalink)  
Antiguo 27/01/2006, 00:06
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 20 años
Puntos: 1
holas men sabes me acaban de pasar este pedaso de codigo q es para pasar a formato para insertar en la bd. Y no se donde se coloca porfa podrias ayudarme con este pedaso de codigo podria ser en el pedaso de codigo de arriba o en la pagina donde se hace el insert...

function cambiaf_a_mysql($fecha){
ereg( "([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})", $fecha, $mifecha);
$lafecha=$mifecha[3]."-".$mifecha[2]."-".$mifecha[1];
return $lafecha;
}

porfa una ayuda
  #10 (permalink)  
Antiguo 27/01/2006, 00:53
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 20 años
Puntos: 1
holas saben tengo otra duda para trabajar con funciones si rescato la bariable de la bd, para asignarle el valor y luego traer el resultado a una variable
es asi:

$mifecha=$variable //la rescato pero para pasarsela ala funcion la bariable para q aga el proceso con ella no se o es solo asi nada mas ??
echo $fecha // para inprimirla
function cambiaf_a_mysql($fecha)
{
ereg( "([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})", $fecha, $mifecha);
$lafecha=$mifecha[3]."-".$mifecha[2]."-".$mifecha[1];
return $lafecha;
}
corriganme porfa

Última edición por blackrocha; 27/01/2006 a las 01:02
  #11 (permalink)  
Antiguo 27/01/2006, 06:39
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
Cita:
tu sabes como se puede dar buelta la fecha del calendar?
Lo tienes en las FAQ.

Si el formato en que vaz a recibir las fechas no será variable, puedes tranquilamente aplicar un explode():
Código PHP:
$entrada"27-01-2005";
$partesexplode("-"$entrada);
$salida$partes[2]."-".$partes[1]."-".$partes[0]; // vé que es un concatenamiento simple
echo $salida// arroja 2005-01-27 
... no le veo nececidad al uso de expresiones regulares --lo que muestras-- si el "armado" es el mismo significa un mayor gasto de recursos...

Por favor para temas nuevos crea post nuevos... por favor po tantita más atención en lo que escribes; lee el enlace de mi firma.

El uso de las funciones lo tienes aquí: www.php.net/functions

Saludos y suerte! .
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #12 (permalink)  
Antiguo 27/01/2006, 10:52
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 20 años
Puntos: 1
gracias

gracias men ...
  #13 (permalink)  
Antiguo 28/01/2006, 02:29
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 20 años
Puntos: 1
men tengo un problema sabes coloco el codigo en la pagina donde se hace el insert y no me la invierte no se que pued estar malo mira te muestro como lo estoy haciendo
Código PHP:
<body>
<?php

            $enlace 
mysql_connect("localhost""root""") or die("No pudo conectarse : " mysql_error());
            
//echo "Conexi&oacute;n exitosa";
            
mysql_select_db("hospital") or die("No pudo seleccionarse la BD.");
            
            echo
"<body>\n";
                    if (isset(
$btnagregar))
                     {        
                            if (!
$txtfecha)
                                    {
                                    echo 
"Debe ingresarel la fecha. Vuelva atras con su browser e ingrese los datos.\n";
                                    exit;
                                    }
                                    
$entrada$txtfecha;
                                    
$partesexplode("-"$entrada);
                                    
$salida$partes[2]."-".$partes[1]."-".$partes[0]; 
                                    
$txtfecha=$salida
                                    
                                    
                                    
$sqlq "INSERT INTO paciente(     fecha    ) 
                                                                         
                                    VALUES (     '"
.$txtfecha."')"
                                                            
                                    echo 
"SQL GENERADO:$sql<br>\n";
                                    echo 
"SQL GENERADO:$sqlq<br>\n";
                                    
                                    
                    
                                    
$ress=mysql_db_query("hospital",$sqlq);
                    
                                            if (!
$ress)
                                                {
                                                echo 
"<center><h3><b>no se pudo insertar en la base de datos</b></h3></center>\n<br>";
                                                echo 
"<center><h3><b>vuelva atras e intente de nuevo</b></h3></center><br>";
                                                }
                                            else
                                                {
                                                echo 
"<center><h3><b>El registo fue insertado en la base de datos</b></h3></center><br><br>";
                                                
mysql_close();
                                                echo 
"<a href='listarpaciente.php'><center><h3><b>lista de usuario</b></h3></center></a>";
                                                }
                    }
                    else
                    {
                        echo
"<center><font face='Verdana'><h2><b>AGREGAR fecha</b></h2></font></center>\n";
                        echo
"<form action='$PHP_SELF' method='post' enctype='multipart/form-data' name='form1'>\n";
                        echo
"<center>\n";
                        echo
"<table border='1' width='350'>\n";
                        
                        echo
"<div id='divDatePicker' style='position:absolute; top:-1000px; left:-1000px; width:230px; z-index:1; visibility:hidden'>\n";
                        echo
"<iframe name='frameDatePicker' width='230' height='142' src='datepicker.htm' noresize scrolling='no' frameborder='no' border='0' framespacing='0'></iframe>\n";
                        echo
"<script event='onclick()' for='document'>if(divDatePicker!=null)divDatePicker.style.visibility='hidden';</script>\n";
                        echo
"</div>\n"// para el data picker                        
                        
echo"<td width='33%'><font face='Verdana'><b>fecha</b></font></td><td width='33%' align='center'><font face='Verdana'><b>:</b></font></td>   <td><center><input type='text' name='txtfecha' value='' readonly><a href='#' onClick='init();if(oDP)oDP.open(document.form1.txtfecha);return false;'><img src='../imagen/iconPicDate2.gif' border='0' width='16' height='15' alt='Seleccione la fecha' id='calendar'></a></center></td>"// cuadro de texto donde se selecciona la fecha                        
                        
echo"</font></td>\n";
                        echo
"</tr>\n";
                        echo
"</table>\n";
                        echo
"</center>\n";
                        echo
"</form>\n";
                        
                    }


</
body>
</
html>
este es un troso de mi pagina solo para mostrate como lo ago pero no me resulta invertir la fecha ...
podrias echarle un miro porfa y ayudarme a corregirla

Última edición por jam1138; 28/01/2006 a las 04:35
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 21:49.