Foros del Web » Programando para Internet » PHP »

Pq No M Funciona La Comparacion

Estas en el tema de Pq No M Funciona La Comparacion en el foro de PHP en Foros del Web. LOS CAMPOS SON DE TIPO DATETIME. echo $fechagraba --> me imprime 2004/04/04 echo $fecha1 --> me imprime 2004/4/23 Porque siempre me inserta los registros. No ...
  #1 (permalink)  
Antiguo 07/04/2004, 01:42
 
Fecha de Ingreso: diciembre-2002
Mensajes: 130
Antigüedad: 21 años, 4 meses
Puntos: 0
Pq No M Funciona La Comparacion

LOS CAMPOS SON DE TIPO DATETIME.
echo $fechagraba --> me imprime 2004/04/04

echo $fecha1 --> me imprime 2004/4/23

Porque siempre me inserta los registros. No me hace ninguna compracion.

POR FAVOR AYUDARME

Aquí va el código:

<?
include_once ("../auth.php");
include_once ("../authconfig.php");
include_once ("../check.php");

$connection = mysql_connect($dbhost, $dbusername, $dbpass);
$SelectedDB = mysql_select_db($dbname);


$tabla = mysql_query("SELECT fecha_ultimo_apunte FROM PERSONAL WHERE CODIGO= '$codigo'");
$rows = mysql_fetch_array($tabla);

$codigo = $check["CODIGO"];
$fecha = $check["fecha_ultimo_apunte"];

$dia=substr($fecha,8,2);
$mes=substr($fecha,5,2);
$anio=substr($fecha,0,4);
$fechagraba=$anio.'/'.$mes.'/'.$dia;

echo $fechagraba;
echo "<p>&nbsp;</p>";
echo $fecha1;

?>
<html>
<head>
<title>Proyectos</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php

if ($fechagraba > $fecha1)
{
echo "La fecha introducida es anterior al ultimo apunte introducido.\n";
}
if ($fechagraba < $fecha1)
{
$Update=mysql_query("UPDATE PERSONAL SET fecha_ultimo_apunte ='$fecha1' WHERE CODIGO ='$codigo'");
$result1 = mysql_query($Update);

$sql = "INSERT INTO HORAS (PERSONA, FECHA, PROYECTO, HORAS, COMENTARIO, COSTE) VALUES ('$codigo', '$fecha1', '$proyecto', '$horas', '$comentario', '$coste')";
$result = mysql_query($sql);
echo "Sus datos han sido introducidos.\n";
}
echo "<a href=horas2.php>volver</a>";
?>
</body>
</html>
  #2 (permalink)  
Antiguo 07/04/2004, 02:06
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Es que como PHP no tiene tipos de datos, las variables $fecha1 y $fechagraba para PHP son cadenas de texto, y por eso realiza la comparacion de cadenas. Y en la comparacion de cadenas, una cadena es "mayor" que otra si el primer caracter no igual es "mayor" (en valor ascii, si no me equivoco) que el de la otra cadena. Asi en tu caso, 2004/ es igual en ambas cadenas, y el siguiente caracter es '4' en $fecha1 y '0' en $fechagraba. Como '4'>'0', $fecha1 es mayor que $fechagraba.

Asi que una de dos: o pasas ambas fechas a una representacion numerica (timestamp); o fuerzas a que ambas cadenas tengan el formato YYYY/MM/DD, con 2 caracteres siempre para mes y dia, para que compares '04' con '04'.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 07/04/2004, 03:34
 
Fecha de Ingreso: diciembre-2002
Mensajes: 130
Antigüedad: 21 años, 4 meses
Puntos: 0
COMO PASO LAS 2 VARIABLES A TIMESTAMP SIN TENER QUE CAMBIAR EL TIPO DE CAMPO.

:'
  #4 (permalink)  
Antiguo 07/04/2004, 04:04
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bueno, puedes probar strtotime() (www.php.net/strtotime).

Saludos.

PD: Segun la netetiqueta, si escribes todo en mayusculas estas indicando que estas gritando. Y a poca gente le gusta que le griten, aunque sea virtualmente. Asi que no escribas todo en mayusculas, por favor (a no ser que tu ordenador solo tenga teclas mayusculas ).
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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:40.