Foros del Web » Programando para Internet » PHP »

mysql_query() de PHP

Estas en el tema de mysql_query() de PHP en el foro de PHP en Foros del Web. Hola que tal espero que todos se encuentren bien, el asunto es el siguiente he escrito un codigo en PHP con el cual pretendo insertar ...
  #1 (permalink)  
Antiguo 25/05/2008, 17:18
 
Fecha de Ingreso: octubre-2007
Mensajes: 7
Antigüedad: 16 años, 5 meses
Puntos: 0
Exclamación mysql_query() de PHP

Hola que tal espero que todos se encuentren bien, el asunto es el siguiente he escrito un codigo en PHP con el cual pretendo insertar o actualizar un registro en mi BD segun sea el caso (Si lo encuentra actualiza el registro y si no lo encuentra lo inserta), el problema es que no importa si encuentra el registro o no, el codigo siempre se va por la opción de insertar y la verdad ya no se que mas probar.

este es el código

Código PHP:
 // objeto de tipo Conexion...
    
$cone = new Conexion();
    
// función de la clase Conexion utilizada para conectar la Base de Datos...
    
$cn $cone->conectar();
    
        
$empleado $_POST["codEmpleado"];
    
$fecha $_POST["fecha"];
    
$entrada $_POST["entrada"];
    
$salida $_POST["salida"];
    
         
// Generar un numero aleatorio para concatenarlo con la hora y generar el codigo del registro
    
$num rand(1,100);
    
$diferencia time() - 16200;
    
$diferencia .= $num;
    
    
$query "select * from reg_ent_sal where num_empleado = '$empleado' and fecha_reg = '$fecha'";
    
$rs mysql_query($query,$cn);
    
    if(!
$rs)
    {
        
//si no lo encuentra inserta...
        
$q "insert into reg_ent_sal(cod_reg,num_empleado,fecha_reg,hora_ent,hora_sal,foto_reg,retardo)";
        
$q.= " value('".$diferencia."','".$empleado."','".$fecha."','".$entrada."','".$salida."','','".$retardo."')";
        
$r mysql_query($q,$cn);
    }else{
            
//si lo encuentra actualiza...
            /*$q = "update reg_ent_sal set hora_sal='$salida' where num_empleado = '$empleado' and fecha_reg = $fecha";
             $r = mysql_query($q,$cn);*/
         
}
    
    
mysql_close($cn); 
Creo que parte del problema esta con el valor que devuelve mysql_query() que no importa si encuentra o no el registro en base de datos, siempre devuelve este valor: Resource id #4.

Le agradesco mucho su ayuda, porque de verdad ya no se cual es el problema.
  #2 (permalink)  
Antiguo 25/05/2008, 17:39
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: mysql_query() de PHP

Que tal the_rockie prueba así tu código:

Código PHP:
 // objeto de tipo Conexion... 
    
$cone = new Conexion(); 
    
// función de la clase Conexion utilizada para conectar la Base de Datos... 
    
$cn $cone->conectar(); 
     
    
$empleado $_POST["codEmpleado"]; 
    
$fecha $_POST["fecha"]; 
    
$entrada $_POST["entrada"]; 
    
$salida $_POST["salida"]; 
     
         
// Generar un numero aleatorio para concatenarlo con la hora y generar el codigo del registro 
    
$num rand(1,100); 
    
$diferencia time() - 16200
    
$diferencia .= $num
     
    
$query "select * from reg_ent_sal where num_empleado = '$empleado' and fecha_reg = '$fecha'"
    
$rs mysql_query($query,$cn) or die( mysql_error() ); 
     
    if(
mysql_num_rows($rs) > 0
    { 
     
    
//si lo encuentra actualiza... 
        
$q "update reg_ent_sal set hora_sal='$salida' where num_empleado = '$empleado' and fecha_reg = '$fecha'"
        
$r mysql_query($q,$cn) or die( mysql_error() );
    }else{ 
            
  
// si no lo encuentra inserta... 
        
$q1 "insert into reg_ent_sal(cod_reg,num_empleado,fecha_reg,hora_ent,hora_sal,foto_reg,retardo)"
        
$q1.= " value('".$diferencia."','".$empleado."','".$fecha."','".$entrada."','".$salida."','','".$retardo."')"
        
$r mysql_query($q1$cn) or die( mysql_error() ); 
        
         } 
     
    
mysql_close($cn); 
Saludos.
  #3 (permalink)  
Antiguo 25/05/2008, 17:43
Avatar de lucasan
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: Cali - Colombia
Mensajes: 1.144
Antigüedad: 16 años, 10 meses
Puntos: 59
Respuesta: mysql_query() de PHP

Usa mysql_num_rows que te devuelve el número de filas afectadas o encontradas.

Código PHP:
if(mysql_num_rows($rs) == 0)
    {
        
//si no lo encuentra inserta...
        
$q "insert into reg_ent_sal(cod_reg,num_empleado,fecha_reg,hora_ent,hora_sal,foto_reg,retardo)";
        
$q.= " value('".$diferencia."','".$empleado."','".$fecha."','".$entrada."','".$salida."','','".$retardo."')";
        
$r mysql_query($q,$cn);
    } 
Otra cosa que veo, tu dirás si estoy en lo correcto, es que en la consulta pones como condición una fecha, esto puede resultar que aunque el usuario exista, si la fecha no es la misma el registro se inserte de nuevo.

Que fecha es la que consultas? fecha de nacimiento? de registro?

Se me ocurre solo un caso en el que esta consulta sería correcta, por ejemplo si cada usuario puede ingresar un registro por día.

Si ese es el caso olvida mi acotación.

Saludos.
__________________
Plan Original Desarrollo Web
~$>sudo apt-get install -f
"Asi debería arreglarse todo en la vida"
  #4 (permalink)  
Antiguo 30/05/2008, 09:04
 
Fecha de Ingreso: octubre-2007
Mensajes: 7
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: mysql_query() de PHP

ok gracias, si funciona, aunque a medias, coloque un par de echo para visualizar por que opciones esta pasando y siempre me muestra el mensaje de actualizar, aunque si hace el trabajo....!. Buenosolo queda investigar un poco mas gracias por su ayuda y cualquier cosa que crean que pueda estar sucediendo me cuentan, su opinion sera bien recibida....

Ah lucasan los registros si son diarios, saludos
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 13:28.