Foros del Web » Programando para Internet » PHP »

codigo compara fecha

Estas en el tema de codigo compara fecha en el foro de PHP en Foros del Web. Amigos porfa le podrían echar una miradita a este código que no quiere resultar: La idea es la siguiente, en esta parte del sistema estoy ...
  #1 (permalink)  
Antiguo 10/12/2012, 14:58
 
Fecha de Ingreso: noviembre-2012
Ubicación: chillan
Mensajes: 14
Antigüedad: 11 años, 4 meses
Puntos: 0
Pregunta codigo compara fecha

Amigos porfa le podrían echar una miradita a este código que no quiere resultar:
La idea es la siguiente, en esta parte del sistema estoy creando una ficha y resulta que por funcionario solo puedo crear una ficha anual entonces que es lo que estoy haciendo en el código el cual es con php y mysql(wamp) la idea que en el formulario crear ficha el usuario ingresa el rut del funcionario(como el id del fucionario) y la fecha en la cual se esta creando la ficha (los otros datos se crean automáticamente al insertadr en la BD) y le da al botón "CREAR FICHA" entonces los datos le llegan a la función "IngresaFicha", y el código de la función es este

Código PHP:

  
public function IngresaFicha($ficha) {
       
       
$conexion=new conexion();  

        
        
$link=$conexion->Conectarse();
            
//aquí obtengo el rut enviado por la caja de texto(id del Funcionario)
$rut=$ficha->getrut();
//aquí obtengo la fecha enviada por el usuario en la caja de texto " fN=fecha nueva "
 
$fN=$ficha->getfecha();
                                        
                                           
//aquí obtengo solo el año de la fecha enviada por el usuario

$fN=date("Y");                                           
 
//query selecciono el "AÑO" de las fechas que ya están ingresadas en la BD y que estén unidas por el rut
$sql=mysql_query("SELECT YEAR(fecha) FROM ficha WHERE rutFuncionario='$rut'");

//retorna cantidad de filas de resultado de query
$cnt_ficha=mysql_num_rows($sql);
 
 
//ciclo
for($i=0;$i<=$cnt_ficha;$i++)
{
    
//por cada resultado, consultamos la fecha de acuerdo a posicion de $i
    
$fecha=$row_ficha[$i]['0'];
      
    
//pregunto si la fecha(AÑO) de la BD es = a la fecha(AÑO) enviada por el usuario provoca error
          
if ($fecha==$fN){
                          return 
false;}
        
 
//de lo contrario realizo nueva insercion       
 
else{
     
 
$query1"SELECT MAX(numFicha) from ficha where rutFuncionario ='$rut'";         $res=mysql_query($query1,$link);
  while (
$row=mysql_fetch_row($res)){
                                                          
$MX $row[0];}
                                                        
$numFinal=$MX+1;
 
$query="INSERT INTO ficha (numFicha,fecha,sexo,hora,rutFuncionario,lugarTrabajo,Estado)VALUE ('$numFinal','".$ficha->getfecha()."','".$ficha->getsexo()."','".$ficha->getreloj()."','".$ficha->getrut()."','".$ficha->getltrabajo()."','".$ficha->getestado()."');";
                                                             
$result=mysql_query($query) or die(mysql_error());
                                                                                                                           return 
true;
     }
      }
   } 
Cabe mencionar que el campo fecha en la BD esta definido como date con formato YYYY-mm-dd, y el formato de la caja de texto de donde envía la fecha el usuario es de igual forma.

y por ultimo el error que tengo es que ingresa de todas formas fichas de cualquier año sin verificar si la fecha existe previamente.

PD...: en la comparación de la fecha lo único que me interesa comparar es el año no me interesa ni el dia ni el mes

De antemano muchas gracias
  #2 (permalink)  
Antiguo 10/12/2012, 16:02
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: codigo compara fecha

¿La variable $row_ficha de dónde sale? La usas pero no se asigna en ninguna parte.
Además, aquí lo que estás haciendo es obtener el año actual, no el año indicado por el usuario:
Código PHP:
Ver original
  1. $fN=date("Y");
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 10/12/2012, 16:35
 
Fecha de Ingreso: noviembre-2012
Ubicación: chillan
Mensajes: 14
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: codigo compara fecha

CODIGO CORREGIDO SORRY ES QUE TENGO TANTOS CODIGOS DE PRUEBA QUE ME EQUIVOQUE AL COPIARLO

Código PHP:

 
public function IngresaFicha($ficha) {
       
       
$conexion=new conexion();  

        
        
$link=$conexion->Conectarse();
            
//aquí obtengo el rut enviado por la caja de texto(id del Funcionario)
$rut=$ficha->getrut();
//aquí obtengo la fecha enviada por el usuario en la caja de texto " fN=fecha nueva "
 
$fN=$ficha->getfecha();
                                        
                                           
//aquí obtengo solo el año de la fecha enviada por el usuario

$fN=date("Y");                                           
 
//query selecciono el "AÑO" de las fechas que ya están ingresadas en la BD y que estén unidas por el rut
$sql=mysql_query("SELECT YEAR(fecha) FROM ficha WHERE rutFuncionario='$rut'");

//retorna cantidad de filas de resultado de query
$row_ficha=mysql_fetch_row($sql);
 
//ciclo
for($i=0;$i<=$row_ficha;$i++)
{
    
//por cada resultado, consultamos la fecha de acuerdo a posicion de $i
    
$fecha=$row_ficha[$i]['0'];
      
    
//pregunto si la fecha(AÑO) de la BD es = a la fecha(AÑO) enviada por el usuario provoca error
          
if ($fecha==$fN){
                          return 
false;}
        
 
//de lo contrario realizo nueva insercion       
 
else{
     
 
$query1"SELECT MAX(numFicha) from ficha where rutFuncionario ='$rut'";         $res=mysql_query($query1,$link);
  while (
$row=mysql_fetch_row($res)){
                                                          
$MX $row[0];}
                                                        
$numFinal=$MX+1;
 
$query="INSERT INTO ficha (numFicha,fecha,sexo,hora,rutFuncionario,lugarTrabajo,Estado)VALUE ('$numFinal','".$ficha->getfecha()."','".$ficha->getsexo()."','".$ficha->getreloj()."','".$ficha->getrut()."','".$ficha->getltrabajo()."','".$ficha->getestado()."');";
                                                             
$result=mysql_query($query) or die(mysql_error());
                                                                                                                           return 
true;
     }
      }
   } 
  #4 (permalink)  
Antiguo 10/12/2012, 16:39
 
Fecha de Ingreso: noviembre-2012
Ubicación: chillan
Mensajes: 14
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: codigo compara fecha

David...:, suponiendo que el usuario envía la fecha -> $fecha=2012-12-10
como obtengo solo el 2012de la variable $fecha para comparar con las fechas que están en la BD
  #5 (permalink)  
Antiguo 10/12/2012, 16:55
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: codigo compara fecha

Por otro lado, mysql_fetch_row deberías usar a cada paso del bucle, de la forma en que está ahora solo obtienes el primer registro. Revisa la documentación:
http://php.net/mysql_fetch_row

En cuanto a tu pregunta de la fecha, puedes usar explode con el caracter '-', o date_parse.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.

Etiquetas: fecha, formulario, mysql, sql, usuarios
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 16:10.