Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/12/2012, 14:58
hades_hack
 
Fecha de Ingreso: noviembre-2012
Ubicación: chillan
Mensajes: 14
Antigüedad: 11 años, 5 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