Foros del Web » Programando para Internet » PHP »

log de querys

Estas en el tema de log de querys en el foro de PHP en Foros del Web. Hola a todos los foreros Me preguntaba si me pudieran orientar en cuanto a la creación de un log con todos los querys(insert,update,delete) que se ...
  #1 (permalink)  
Antiguo 02/08/2010, 16:00
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 8 años, 4 meses
Puntos: 7
log de querys

Hola a todos los foreros

Me preguntaba si me pudieran orientar en cuanto a la creación de un log con todos los querys(insert,update,delete) que se han ejecutado en el lado admin del sitio por los administradores del mismo.

Ya que los dueños del sitio son socios y quieren saber quien hizo y cuando lo hizo.

Gracias de Antemano.
  #2 (permalink)  
Antiguo 02/08/2010, 16:02
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 10 años, 4 meses
Puntos: 1531
Respuesta: log de querys

si usas un ORM o na capa de abstracción de base de datos es mucho más fácil, de lo contrario, tocará pasarte sql por sql para hacerlo
  #3 (permalink)  
Antiguo 02/08/2010, 16:13
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 8 años, 4 meses
Puntos: 7
Respuesta: log de querys

Gracias por tu respuesta
otras dudas

¿Y no podria programarlo en php, es decir por ejemplo con una rutina al ejecutar el query habrá el archivo y escriba fecha......etc?

y en todo caso que me recomendarias un ORM o una capa de abstracción, y si me podrías proporcionar un link para ver algunos ejemplos y tener más claro su funcionamiento.
  #4 (permalink)  
Antiguo 02/08/2010, 16:24
Avatar de sneyder05  
Fecha de Ingreso: enero-2009
Ubicación: Cali
Mensajes: 172
Antigüedad: 9 años, 10 meses
Puntos: 17
Respuesta: log de querys

Si usas una Clase para el manejo de la base de datos, puedes hacer un metodo que te ejecute un sql y cada vez que llames a este metodo creas o escribes en un archivo la sentencia sql q pasaste como parametro al metodo anterior, es decir:

Código PHP:
public function ejecutarSQL($sql){
     
$f fopen('log.txt','a+');
     
write($f,'\r\n'.$sql.'\r\n');
     
fclose($f); 

  #5 (permalink)  
Antiguo 02/08/2010, 16:42
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 8 años, 4 meses
Puntos: 7
Respuesta: log de querys

Gracias por tu respuesta muy explicita y muy fácil de entender
pero ahora mi duda es:

¿como incluir otros datos aparte del query en si como por ejemplo el user,pass o id del administrador, la fecha, etc., que ejecute ese query, ya que como lo mencione antes solo sería para el admin del sitio, es decir que un administrador pueda consultar las acciones de otro administrador?
  #6 (permalink)  
Antiguo 02/08/2010, 17:01
Avatar de sneyder05  
Fecha de Ingreso: enero-2009
Ubicación: Cali
Mensajes: 172
Antigüedad: 9 años, 10 meses
Puntos: 17
De acuerdo Respuesta: log de querys

Puede poner algo como esto:

Código PHP:
     $f fopen('log.txt','a+');
     
write($f,'\r\n'.$sql.'\r\n');//SQL
     
write(date('Y-m-d h:m:s'));//Fecha y Hora
     
fclose($f); 
Si deseas puedes hacer que se cree un archivo por dia y no q se guarde todo en 1 solo, seria sencillo, solo cambiamos el nombre del file y ya!!!
Asi:
Código PHP:
$f fopen('log'.date("Y-m-d").'.txt','a+'); 
Para otros datos como el user o pass, puedes manejar variables de sesion
  #7 (permalink)  
Antiguo 03/08/2010, 11:08
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 8 años, 4 meses
Puntos: 7
Respuesta: log de querys

Ok

Voy a aplicar la solución que me diste, cualquier cosa comentare el resultado.

Gracias por tu tiempo Sneyder05
  #8 (permalink)  
Antiguo 03/08/2010, 11:58
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 8 años, 4 meses
Puntos: 7
Respuesta: log de querys

Ya logro escribir en el log.txt que he subido a mi servidor pero pasa lo siguiente

me escribe la fecha y el user del admin pero no me escribe el query, además de no hacer un salto de línea alguna idea?

les pongo lo que aparece en el log.txt

2010-08-0312010-08-03\r\n12010-08-03\r\n12010-08-03\n\n2010-08-03admin\n

como veran ya utilice el \r\n y el \n y nada.

aqui les pongo mi codigo php

move_uploaded_file ($_FILES['bann']['tmp_name'], $dir.$archivo);
$sql = ejecutar("insert into banners(nombre,fecha,admin) values('$archivo','$fecha','$uid')");
$f = fopen('log.txt','a+');
fwrite($f,'\n'.$sql.date('Y-m-d').$uid.'\n');//SQL
fclose($f);

Gracias de antemano

Última edición por zapt142; 03/08/2010 a las 12:03 Razón: declaracion de una variable que no existe
  #9 (permalink)  
Antiguo 03/08/2010, 12:07
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 8 años, 4 meses
Puntos: 7
Respuesta: log de querys

Ya resolvi el error del salto de línea utilice comillas dobles en lugar de comillas simples pero sigue sin imprimirme el query.

Aquí les dejo el codigo

$archivo = $_FILES['bann']['name'];
if(isset($archivo)){
move_uploaded_file ($_FILES['bann']['tmp_name'], $dir.$archivo);
$sql = ejecutar("insert into banners(nombre,fecha,admin) values('$archivo','$fecha','$uid')");
$f = fopen('log.txt','a+');
fwrite($f,"\r\n".$sql.date('Y-m-d').$uid."\r\n");//SQL
fclose($f);

Esto es lo que me muestra el log.txt

152010-08-03admin

Y otra duda más que podrá ser ese 15 de más?

Gracias de Antemano

Última edición por zapt142; 03/08/2010 a las 12:09 Razón: mostrar lo que se escribe en log.txt
  #10 (permalink)  
Antiguo 03/08/2010, 22:11
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 8 años, 7 meses
Puntos: 460
Respuesta: log de querys

bueno no se si te sirva pero la sentencia que colocas en ejecutar que me imagino que ahi la ejecutas colocala en una variable y en vez de qrer enviarla variable donde realizas la consulta manda la variable con la sentencia sql sin ejecutar no se si me explico espero q te sirva la idea ya q lo mas dificil ya lo hicist suerte
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #11 (permalink)  
Antiguo 04/08/2010, 08:43
Avatar de sneyder05  
Fecha de Ingreso: enero-2009
Ubicación: Cali
Mensajes: 172
Antigüedad: 9 años, 10 meses
Puntos: 17
De acuerdo Respuesta: log de querys

Debes tener una variable para guardar el SQL, asi:
Código PHP:
$sql "Select * From tabla"
Y es esa variable la q escribis en el archivo, tu estas escribiendo el result que t arroja la ejecucion.

Suerte con eso
  #12 (permalink)  
Antiguo 04/08/2010, 14:37
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 8 años, 4 meses
Puntos: 7
De acuerdo Respuesta: log de querys

Gracias a su ayuda y orientación ya he podido terminar
mi log.txt que registre las acciones de los administradores.

Aqui les dejo mi código por si alguien algún día necesita algo similar

Código PHP:
Ver original
  1. $done = ejecutar("delete from banners where id_banner=".$idb);//Sentencia donde se ejecuta el query
  2. $query = "delete from banners where id_banner=".$idb;//Variable donde guardo mi sentencia
  3. $f = fopen('log.txt','a+'); // Rutina para escribir  el log.txt mi variable del query y demás cosas
  4.  fwrite($f,"\r\n".$query."-/".date('Y-m-d h:m:s')."-/".$uid."\r\n");//SQL
  5. fclose($f);

Etiquetas: log, querys
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 23:10.