Foros del Web » Programando para Internet » PHP »

Registro de entrada para empleados

Estas en el tema de Registro de entrada para empleados en el foro de PHP en Foros del Web. Hola que tal amigos, necesito su ayuda por favor pues la verdad no estoy metido de lleno en PHP y MYSQL, la cuestión es que ...
  #1 (permalink)  
Antiguo 09/06/2010, 13:52
 
Fecha de Ingreso: abril-2010
Mensajes: 6
Antigüedad: 14 años, 7 meses
Puntos: 0
Registro de entrada para empleados

Hola que tal amigos, necesito su ayuda por favor pues la verdad no estoy metido de lleno en PHP y MYSQL, la cuestión es que estoy tratando de hacer un pequeño sistema para el registro de asistencia de empleados.
Los datos que requiero insertar en mis tablas son las horas de entrada, salida a comer, entrada de comer y salida; tengo una base de datos llamada “empleados”, en ella dos tablas: “usuarios” y “asistencia”;

CREATE TABLE usuarios (
id int(11) NOT NULL AUTO_INCREMENT,
password varchar(10) NOT NULL,
nombre varchar(60) NOT NULL,
administrador tinyint(4) unsigned NOT NULL,
tareas varchar(130) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1

CREATE TABLE asistencia (
usuarios_id int(11) NOT NULL,
entrada datetime DEFAULT NULL,
salida datetime DEFAULT NULL,
salidaComer datetime DEFAULT NULL,
entradaComer datetime DEFAULT NULL,
KEY usuarios_id (usuarios_id),
CONSTRAINT asistencia_ibfk_1 FOREIGN KEY (usuarios_id) REFERENCES usuarios (id) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1

Y tengo dos archivos “formulario.html” e “insertar.php”

La cuestión es que solo puedo insertar los datos de entrada y no de salida a comer ni entrada de comer ni la salida, teniendo la línea del archivo insertar.php de esta forma con los null, $sql= "INSERT INTO asistencia values ($idUsuario, '$entrada', null, null, null)"; pero si los cambio por las variables $sql= "INSERT INTO asistencia values ($idUsuario, '$entrada', '$salidaComer', '$entradaComer', '$salida')"; no me guarda nada.

Estos son los archivos:

Formulario.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta name="author" content="www.losportables.com.ar">

<title>Registro de Asistencia</title>
</head>

<body>

<p align="center"><img src="css/imagen/encabezado.GIF" width="100%" height="80" longdesc="css/imagen/encabezado.GIF" /></p>
<form id="form1" name="form1" method="post" action="insertar.php">
<div align="center">

<table width="555" border="1">
<tr>
<td bgcolor="#FFFFFF"><div align="center" class="insertar.php">

<?php
$fecha=date("Y")."/".date("m")."/".date("j");
$horas=date("h:i:s");
echo "$fecha","$horas";
?>

</tr>

<td width="395" bgcolor="#C9D6F5"><div align="center" class="style1">DIGITE SU CODIGO DE EMPLEADO AQUI </div></td>
<td width="144"><div align="center">
<input type="password" name="nick" />
</div></td>

</table>


<p>
<input type="submit" name="entrada" value="Entrada" />
<input type="submit" name="salidacomer" value="Salida a Comer" />
<input type="submit" name="entradaComer" value="Regreso de Comer" />
<input type="submit" name="salida" value="Salida" />
</p>

</div>
</form>

<br>
<br>
<br>
<br>
<br>
<br>

<?php

if

?>

<!--- codigo creatupropiaweb.com--->

<table border="0" id="t1">
<tr>
<td>
<p align="center">
<a href="">
<param name=wmode value=transparent>
<embed style="" src="http://www.creatupropiaweb.com/Recursos_Flash/reloj3.swf" wmode="transparent" type="application/x-shockwave-flash" height="10%" width="530%">
<param name=wmode value=transparent>
</embed>
</a>
</p>
</td>
</tr>
</table>

<!--- codigo creatupropiaweb.com--->
</body>
</html>


Insertar.php

<?php

foreach ($_POST as $n=>$v)
echo "<br>$n=$v";

include("index.php");
$nick=$_POST["nick"];

if(isset($_POST["entrada"]))
$entrada=date("Y-m-d")." ".date("H:i:s");

$salidaComer=$_POST["salidaComer"];
$entradaComer=$_POST["entradaComer"];
$salida=$_POST["salida"];
ponerAsistencia($nick,$entrada,$salidaComer,$entra daComer,$salida);
function ponerAsistencia($nick,$entrada,$salidaComer,$entra daComer,$salida)
{
$index=conexion();
$sq1= "select id from usuarios where nick='$nick'";

$result=mysql_query($sq1);
if($result!=false){

if(mysql_numrows($result)>0){
$row=mysql_fetch_array($result);
$idUsuario=$row['id'];
$sql= "INSERT INTO asistencia values ($idUsuario,'$entrada',null,null,null)";
$result=mysql_query($sql);
if($result==false)
echo "<br>hubo un error al hacer la inserción de asistencia";
else
echo "<br>Datos Guardados";
cerrarconexion($index);
}
else
echo "<br>no se encuentra el nick";
}
else{
echo "<br>hubo un error al hacer la consulta den nick::".mysql_error();

}

}

function conexion ()
{
$dbConex = mysql_connect("localhost","root","sistemare");
if (! $dbConex)
{
echo "Imposible Conectar";
exit;
}
if(!mysql_select_db("empleados", $dbConex))
echo "Imposible Conectar con la base";


return $dbConex;
}

function cerrarconexion ($dbConex) {
mysql_close($dbConex);
}
?>
  #2 (permalink)  
Antiguo 09/06/2010, 14:06
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 17 años, 5 meses
Puntos: 49
Respuesta: Registro de entrada para empleados

Que tal cesar1514, primero que todo verifica que tu consulta no tenga errores la puedes depurar utilizando la funcion mysql_error(), segundo verifica que te estan llegando las variables desde tu formulario correctamente puedes utilizar la función var_dump(), aunque a simple vista creo que esto esta mal:
Código HTML:
Ver original
  1. <p>
  2. <input type="submit" name="entrada" value="Entrada" />
  3. <input type="submit" name="salidacomer" value="Salida a Comer" />
  4. <input type="submit" name="entradaComer" value="Regreso de Comer" />
  5. <input type="submit" name="salida" value="Salida" />
  6. </p>

No crees que el type deberian ser de tipo Text???, de manera que con lo que tienes no esta pasando ningún valor a tu script que procesa el form.


Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #3 (permalink)  
Antiguo 09/06/2010, 14:06
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 9 meses
Puntos: 81
Respuesta: Registro de entrada para empleados

Escribe tu codigo php entre etiquetas php para que no se alargue tanto la pagina porfavor.

Se supone que al apretar un boton guarda el "ahora" para poner la hora de la opcion?

Te recomiendo crear otra tabla...

Código:
CREATE TABLE asistencia(
id int(11) NOT NULL AUTO_INCREMENT,
usuarios_id int(11) NOT NULL,
evento varchar(64) NOT NULL,
fecha date NOT NULL,
hora time NOT NULL,
KEY usuarios_id (usuarios_id),
CONSTRAINT asistencia_ibfk_1 FOREIGN KEY (usuarios_id) 
REFERENCES usuarios (id) 
ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Esto porque puedes guardar cada evento como un registro a parte... y en "evento" iria "entrada", "salida almuerzo", "llegada de almuerzo", "salida".

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #4 (permalink)  
Antiguo 21/09/2010, 20:46
 
Fecha de Ingreso: septiembre-2010
Mensajes: 3
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Registro de entrada para empleados

Tu error es que solo estas Verificando el POST de entrada y como vas hacer con los demas.

Te lo digo por que yo cree un sistema parecido:

Que registra la Hora de ingreso, Hora de Comienzo de Refrigerio, Hora final de refrigerio, hora de salida.

lo puse todo en un Div que lo diseñe como tabla y cada campo de la hora tenia un pequeño boton que al presionarlo se registraba la hora del servidor.

Por experiencia te digo que no fue facil. me tomo 2 dias enteros realizarlo.

el truco esta en que crees una tabla donde registres todas esas hora la tabla que yo cree fue asi:

TABLA usuario (la comun).

Tabla RegistroDeTurno:

idturno
id_usuario
hora_entra
hora_comienzo_refrigerio
hora_final_refrigerio
hora_salida


Luego tienes que crear el div diseñado como una tabla (si quieres crea una tabla en lugar de utilizar div), luego en cada campo de las hora pon un boton; mejor te muestro uan imagen ^^.
[IMG][URL=http://www.imaxenes.com/imagen/hora1aq73rh.png.html][IMG]http://www.imaxenes.com/mini/hora1aq73rh.png[/IMG][/URL][/IMG]

-Primero tienes que elaborar una función que te traiga todos los usuarios activos y los guardas en un arreglo.
-luego ese arreglo lo recores en un foreach(dentro del foreach estara la tabla solo el campo de horas, esto se hace para que sea dinamico).
-en cada nombre del boton es distinta ejemplo:
Hora de netrada: boton(name="btnEntra<? echo arreglo['idturno']")
Hora de comienzo de refri: boton(name="btnComRef<? echo arreglo['idturno']")
Hora de final de refri: boton(name="btnFinRef<? echo arreglo['idturno']")
Hora de salida: boton(name="btnsal<? echo arreglo['idturno']")

luego haces que el formulario que contiene toda esa tabla lo envie aun archivo digamos llamado registroturno.php.
-Ahora es la parte dificil
en registroturno.php tmb realizar el mismo foreach con la misma funcion que utlizamos para recorrerla.
-dentro de este nuevo foreach vas acrear varios if() q te verifiquen que boton presionaste:

digamos

foreach($arraydedatos as $items){

if($_POST['btnEntra<? echo $items['idturno'] ?>']){

}
if($_POST['btnComRef<? echo $items['idturno'] ?>']){

}

//haces por los 4 botones de registro de hora.

}

ahora en cada if() pon una funcion que registre la hora y lo guarde en la tabla donde se registraran las hora.
foreach($arraydedatos as $items){

if($_POST['btnEntra<? echo $items['idturno'] ?>']){
// funcion que registra la hora de entrada

}
if($_POST['btnComRef<? echo $items['idturno'] ?>']){
// funcion que registra la hora comienzo de refrigerio
}

//haces por los 4 botones de registro de hora.

}
despues haces que de nuevo se redireccione a tu formulario.

ahora te enseño el truco:

La cosa esta que que crees una nuevo boton que se llama Nuevo Trabajo:
el cual cuando se presione, ese boton va acrear un registro en la tabla RegistroDeTurno de esta manera:

idturno = 1
id_usuario = 1(este es el codigo del usuario del campo presionado)
hora_entra = NULL
hora_comienzo_refrigerio = NULL
hora_final_refrigerio = NULL
hora_salida = NULL

una ves creado este campo solo seria modificar el foreach de esta forma:

foreach($arraydedatos as $items){


if($_POST['btnEntra<? echo $items['idturno'] ?>']){

// funcion que "ACTUALIZA" la hora de entrada

}
if($_POST['btnComRef<? echo $items['idturno'] ?>']){
// funcion que "ACTUALIZA" la hora comienzo de refrigerio
}

//haces por los 4 botones de registro de hora.

}
despues haces que de nuevo se redireccione a tu formulario.

mejor te muestro algo de mi codigo:

if(isset($_POST['btnoperacion'.$items['id']])){
$controlUusario->id = $items['id'];
$maxId = $controlUusario->traerUltimoRegistro();
$usuarioActivo = $controlUusario->comprobarregisUsuario($maxId['ultimo']);
if($usuarioActivo['hora_entra'] == NULL || $usuarioActivo['hora_entra_ref'] == NULL || $usuarioActivo['hora_salida_ref'] == NULL || $usuarioActivo['hora_salida'] == NULL){
$getid = $items['id'];
}else{
$controlUusario->insertarNuevoRegistro();

}
}
if(isset($_POST['btnhentra'.$items['id']])){
$NumregistroUsu = $controlUusario->verficacionusuario();
if($NumregistroUsu == 0){
$controlUusario->insertarNuevoRegistro();
}
$maxId = $controlUusario->traerUltimoRegistro();
$controlUusario->actualizarHoraEntrada($maxId['ultimo']);


}
Lo mismo haces por cada boton.

Nota el Boton "btnoperacion" es el boton de nuevo trabajo

esa parte de codigo que te mostre es para validar si ya existe el registro del usuario entcs que se cree uno nuevo,

$NumregistroUsu = $controlUusario->verficacionusuario();
if($NumregistroUsu == 0){
$controlUusario->insertarNuevoRegistro();
}

este codigo solo lo hago en el primer boton ya que cuando no hay ningun registro en la tabla lo p`rimero que se presiona el el boton de hora de entrada.

^^
  #5 (permalink)  
Antiguo 21/09/2010, 20:51
 
Fecha de Ingreso: septiembre-2010
Mensajes: 3
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Registro de entrada para empleados

Sorry aqui te dego la imagen.

[url=http://www.imaxenes.com/imagen/hora1aq73rh.png.html][img=http://www.imaxenes.com/mini/hora1aq73rh.png][/url]
  #6 (permalink)  
Antiguo 21/09/2010, 20:52
 
Fecha de Ingreso: septiembre-2010
Mensajes: 3
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Registro de entrada para empleados

si no puedes ver la imagen entra aesta url atmb esta

http://www.imaxenes.com/imagen/hora1aq73rh.png.html
  #7 (permalink)  
Antiguo 13/01/2011, 08:56
 
Fecha de Ingreso: abril-2010
Mensajes: 6
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Registro de entrada para empleados

Muchisimas gracias me ha servido de mucho!!!!!1
  #8 (permalink)  
Antiguo 04/02/2011, 10:35
 
Fecha de Ingreso: abril-2010
Mensajes: 6
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Registro de entrada para empleados

Cita:
Iniciado por cesarhl Ver Mensaje
Tu error es que solo estas Verificando el POST de entrada y como vas hacer con los demas.

Te lo digo por que yo cree un sistema parecido:

Que registra la Hora de ingreso, Hora de Comienzo de Refrigerio, Hora final de refrigerio, hora de salida.

lo puse todo en un Div que lo diseñe como tabla y cada campo de la hora tenia un pequeño boton que al presionarlo se registraba la hora del servidor.

Por experiencia te digo que no fue facil. me tomo 2 dias enteros realizarlo.

el truco esta en que crees una tabla donde registres todas esas hora la tabla que yo cree fue asi:

TABLA usuario (la comun).

Tabla RegistroDeTurno:

idturno
id_usuario
hora_entra
hora_comienzo_refrigerio
hora_final_refrigerio
hora_salida


Luego tienes que crear el div diseñado como una tabla (si quieres crea una tabla en lugar de utilizar div), luego en cada campo de las hora pon un boton; mejor te muestro uan imagen ^^.
[IMG][URL=http://www.imaxenes.com/imagen/hora1aq73rh.png.html][IMG]http://www.imaxenes.com/mini/hora1aq73rh.png[/IMG][/URL][/IMG]

-Primero tienes que elaborar una función que te traiga todos los usuarios activos y los guardas en un arreglo.
-luego ese arreglo lo recores en un foreach(dentro del foreach estara la tabla solo el campo de horas, esto se hace para que sea dinamico).
-en cada nombre del boton es distinta ejemplo:
Hora de netrada: boton(name="btnEntra<? echo arreglo['idturno']")
Hora de comienzo de refri: boton(name="btnComRef<? echo arreglo['idturno']")
Hora de final de refri: boton(name="btnFinRef<? echo arreglo['idturno']")
Hora de salida: boton(name="btnsal<? echo arreglo['idturno']")

luego haces que el formulario que contiene toda esa tabla lo envie aun archivo digamos llamado registroturno.php.
-Ahora es la parte dificil
en registroturno.php tmb realizar el mismo foreach con la misma funcion que utlizamos para recorrerla.
-dentro de este nuevo foreach vas acrear varios if() q te verifiquen que boton presionaste:

digamos

foreach($arraydedatos as $items){

if($_POST['btnEntra<? echo $items['idturno'] ?>']){

}
if($_POST['btnComRef<? echo $items['idturno'] ?>']){

}

//haces por los 4 botones de registro de hora.

}

ahora en cada if() pon una funcion que registre la hora y lo guarde en la tabla donde se registraran las hora.
foreach($arraydedatos as $items){

if($_POST['btnEntra<? echo $items['idturno'] ?>']){
// funcion que registra la hora de entrada

}
if($_POST['btnComRef<? echo $items['idturno'] ?>']){
// funcion que registra la hora comienzo de refrigerio
}

//haces por los 4 botones de registro de hora.

}
despues haces que de nuevo se redireccione a tu formulario.

ahora te enseño el truco:

La cosa esta que que crees una nuevo boton que se llama Nuevo Trabajo:
el cual cuando se presione, ese boton va acrear un registro en la tabla RegistroDeTurno de esta manera:

idturno = 1
id_usuario = 1(este es el codigo del usuario del campo presionado)
hora_entra = NULL
hora_comienzo_refrigerio = NULL
hora_final_refrigerio = NULL
hora_salida = NULL

una ves creado este campo solo seria modificar el foreach de esta forma:

foreach($arraydedatos as $items){


if($_POST['btnEntra<? echo $items['idturno'] ?>']){

// funcion que "ACTUALIZA" la hora de entrada

}
if($_POST['btnComRef<? echo $items['idturno'] ?>']){
// funcion que "ACTUALIZA" la hora comienzo de refrigerio
}

//haces por los 4 botones de registro de hora.

}
despues haces que de nuevo se redireccione a tu formulario.

mejor te muestro algo de mi codigo:

if(isset($_POST['btnoperacion'.$items['id']])){
$controlUusario->id = $items['id'];
$maxId = $controlUusario->traerUltimoRegistro();
$usuarioActivo = $controlUusario->comprobarregisUsuario($maxId['ultimo']);
if($usuarioActivo['hora_entra'] == NULL || $usuarioActivo['hora_entra_ref'] == NULL || $usuarioActivo['hora_salida_ref'] == NULL || $usuarioActivo['hora_salida'] == NULL){
$getid = $items['id'];
}else{
$controlUusario->insertarNuevoRegistro();

}
}
if(isset($_POST['btnhentra'.$items['id']])){
$NumregistroUsu = $controlUusario->verficacionusuario();
if($NumregistroUsu == 0){
$controlUusario->insertarNuevoRegistro();
}
$maxId = $controlUusario->traerUltimoRegistro();
$controlUusario->actualizarHoraEntrada($maxId['ultimo']);


}
Lo mismo haces por cada boton.

Nota el Boton "btnoperacion" es el boton de nuevo trabajo

esa parte de codigo que te mostre es para validar si ya existe el registro del usuario entcs que se cree uno nuevo,

$NumregistroUsu = $controlUusario->verficacionusuario();
if($NumregistroUsu == 0){
$controlUusario->insertarNuevoRegistro();
}

este codigo solo lo hago en el primer boton ya que cuando no hay ningun registro en la tabla lo p`rimero que se presiona el el boton de hora de entrada.

^^
  #9 (permalink)  
Antiguo 04/02/2011, 10:37
 
Fecha de Ingreso: abril-2010
Mensajes: 6
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Registro de entrada para empleados

Muchisimas gracias amigo te lo agradezco, me ha servido de mucho

Etiquetas: empleados, entrada, registro
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 11:48.