Foros del Web » Programando para Internet » PHP »

Registros repetidos, valor maximo y minimo

Estas en el tema de Registros repetidos, valor maximo y minimo en el foro de PHP en Foros del Web. Buen día a todos!!! Soy nuevo en el foro, me parece excelente, y tengo un problema con una pequeña aplicación... Verán necesito extrar de una ...
  #1 (permalink)  
Antiguo 31/08/2011, 10:38
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Información Registros repetidos, valor maximo y minimo

Buen día a todos!!! Soy nuevo en el foro, me parece excelente, y tengo un problema con una pequeña aplicación...

Verán necesito extrar de una tabla (como esta):

REPREGASIS FECREGASIS HORREGASIS
05996 07/02/2008 153752
05996 07/02/2008 153752
05996 07/02/2010 153104
07068 23/05/2008 73225
07068 23/05/2008 73239
07068 23/05/2008 153013
08050 24/05/2008 153013
05996 07/02/2010 153104

La hora de entrada y salida (HORREGASIS) de un mismo trabajador (REPREGASIS), determinando la hora más pequeña y la más grande (para entrada y salida) siempre y cuando el trabajador (REPREGASIS) y la fecha de registro (FECREGASIS) sean iguales, es decir que sea el mismo trabajador el mismo día, esto para evitar que un mismo trabajador se registre más de dos veces (ya sea dos entradas o dos salidas)...

Lo que tengo hasta ahora es sacar el valor minimo y maximo de la hora, pero como era logico solo me manda dos valores, intente con un if que puse como comentario en el coigo, pero no se si asi sea como es exactamente la sintaxis...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php

$conectar=mysql_connect('localhost','root','');
if($conectar=NULL)
{
printf("Error al conectar a la Base de datos");
}

mysql_select_db('deivid');

$resultado=mysql_query("SELECT m1.RPEREGASIS, m1.FECREGASIS, MAX(m1.HORREGASIS) AS maximo, MIN(m2.HORREGASIS) AS minimo,
m2.RPEREGASIS, m2.FECREGASIS, m2.HORREGASIS
FROM registro AS m1, registro AS m2
WHERE m1.RPEREGASIS=m2.RPEREGASIS AND m1.FECREGASIS=m2.FECREGASIS");


?>
<table align="center">
<tr>
<th>Trabajador</th>
<th>Fecha</th>
<th>Horario</th>
</tr>
<?
// Este es la comparación que nunca entra---> if (($Trabajador['RPEREGASIS']==$Trabajador['RPEREGASIS']) && ($Fecha['FECREGASIS']==$Fecha['FECREGASIS']))
while ($row=mysql_fetch_array($resultado))
{
echo '<tr><td>'.$row["RPEREGASIS"].'</td>';
echo '<td>'.$row["FECREGASIS"].'</td>';
echo '<td>'.$row["HORREGASIS"].'</td></tr>';
}


//}
?>
</body>
</html>
  #2 (permalink)  
Antiguo 31/08/2011, 12:47
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: Registros repetidos, valor maximo y minimo

Usa el highlight para dar formato a tu código y sea más fácil de leer.

¿En qué formato estás manejando las fechas? si la consulta te devuelve algo como 07/02/2008 o bien 05996 y las comparas, estarás comparando texto (string) en vez de valores numéricos. En tal caso tendrías que hacer una conversión de fecha a formato número, por ejemplo el formato timestamp de Unix.
  #3 (permalink)  
Antiguo 31/08/2011, 17:36
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Registros repetidos, valor maximo y minimo

El formato de la fecha es tipo texto. Entonces tengo que hacer un cast de texto a int??... Pero como le haría para que al devolverme la fecha me la devuelva con las diagonales??
  #4 (permalink)  
Antiguo 31/08/2011, 17:41
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Registros repetidos, valor maximo y minimo

no lo mejor que puedes hacer o lo que deberias de hacer es trabajar las fechas con su formato, porque?? porque asi no tendras problemas al hacer comparaciones entre fechas, que debes de hacer para darle el formato utilizar la funcion date_format (ahi en ese link estan las funciones de fecha de mysql ) y asi evitarte problemas, porque es mejor tener cada cosa en su lugar
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 31/08/2011, 18:42
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Registros repetidos, valor maximo y minimo

Muchisímas gracias Carlos, haré eso entonces... =)...
  #6 (permalink)  
Antiguo 05/09/2011, 08:46
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Registros repetidos, valor maximo y minimo

Gracias a Dios esta solucionado, solo era un error en mi consulta este es el codigo que jala :p...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<form id="form" name="formulario" method="post">
<h2>¿Qué desea hacer?</h2>
<br>¿Consultar Empleado?

<br>¿Ver lista de asistencia?

¿
<?php
$Trabajador = 'RPEREGASIS';
$Fecha = 'FECREGASIS';
$Hora = 'HORREGASIS';

$conectar=mysql_connect('localhost','root','');
if($conectar=NULL)
{
printf("Error al conectar a la Base de datos");
}

mysql_select_db('trabajadores');


$sql = "SELECT RPEREGASIS, FECREGASIS, MIN( HORREGASIS ) AS entrada, MAX( HORREGASIS ) as salida
FROM registro GROUP BY RPEREGASIS, FECREGASIS LIMIT 0 , 30";

$resultado = mysql_query($sql) or die (mysq_error());

?>
<table align="center" border="1">
<tr>
<th>Trabajador</th>
<th>Fecha</th>
<th>Hora Entrada</th>
<th>Hora Salida</th>
</tr>
<?

while ($row=mysql_fetch_array($resultado))
{

$entrada = $row['entrada'];
$salida = $row['salida'] == $entrada ? "SIN SALIDA" : $row['salida'];
echo '<tr><td>'.$row["RPEREGASIS"].'</td>';
echo '<td>'.$row["FECREGASIS"].'</td>';
echo '<td>'.$row["entrada"].'</td>';
echo '<td>'.$salida.'</td></tr>';
}
echo "<a href Regresar \"ElgeirTrabajador.php\">";
?>
</body>
</html>

Etiquetas: max, min, mysql
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 08:10.