Foros del Web » Programando para Internet » PHP »

Duda con aplicacion - solo un usuario pueda modificar un registro

Estas en el tema de Duda con aplicacion - solo un usuario pueda modificar un registro en el foro de PHP en Foros del Web. hola amigos tengo la siguiente situacion: tengo una aplicacion creada con php y postgresql, para acceder a la aplicacion el usuario ingresa clave y contraseña, ...
  #1 (permalink)  
Antiguo 07/05/2014, 11:19
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Duda con aplicacion - solo un usuario pueda modificar un registro

hola amigos tengo la siguiente situacion: tengo una aplicacion creada con php y postgresql, para acceder a la aplicacion el usuario ingresa clave y contraseña, cada usuario debe de modificar uno o varios registros de una base de datos el problema es que en ocaciones dos o varios usuarios modifican un mismo registro. como puedo hacer para que un registro solo lo pueda modificar un usuario por ejemplo que sea el primero que lo tome.
  #2 (permalink)  
Antiguo 07/05/2014, 11:25
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Duda con aplicacion - solo un usuario pueda modificar un registro

Creo que eso lo puedes lograr mediante sessiones, puedes leer mas sobre eso aqui:

http://www.php.net/manual/es/session.customhandler.php
  #3 (permalink)  
Antiguo 07/05/2014, 11:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Duda con aplicacion - solo un usuario pueda modificar un registro

Eso sólo se controla a nivel de Base de Datos. Las sesiones de PHP no tienen impacto en las restricciones de BBDD.

Casi todos los motores de BBDD que posean control de transacciones tienen una forma de SELECT que tiene una sintaxis semejante a
Código MySQL:
Ver original
  1. SELECT ...
  2. FROM ...
  3. FOR UPDATE
Ese tipo de acción genera un bloqueo a nivel registro para todos los registros devueltos por la consulta. Si otro user intenta realizar una acción sobre ellos se produce un error de "table locked".

PosgreSQL: http://www.postgresql.org/docs/9.0/s...ql-select.html
MySQL: https://dev.mysql.com/doc/refman/5.0...ing-reads.html
Informix: http://pic.dhe.ibm.com/infocenter/id...s_sqs_0161.htm
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 07/05/2014 a las 11:32
  #4 (permalink)  
Antiguo 07/05/2014, 13:15
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Duda con aplicacion - solo un usuario pueda modificar un registro

gnzsoloyo gracias por responder, tengo una duda en cuanto al tema, la aplicacion que tengo consulta un tabla y dependiendo de una condicion me retorna un grupo de registros pero el unico registro que necesito modificar es el primero,

lo implementaria asi,
Código SQL:
Ver original
  1. BEGIN;
  2. SELECT id
  3. FROM turns
  4. WHERE estado = 2 AND servicio_id = 2
  5. ORDER BY id;
  6. UPDATE turns SET estado = 1 WHERE id =
  7. COMMIT;

que opinion tienes?
  #5 (permalink)  
Antiguo 07/05/2014, 13:25
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Duda con aplicacion - solo un usuario pueda modificar un registro

Cita:
pero el unico registro que necesito modificar es el primero,
Que tienes que darle mas restricciones para que sólo devuelva uno.
No sé si LIMIT (en el caso de MySQL), será operativo ene se contexto... Nunca lo intenté.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 07/05/2014, 13:27
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Duda con aplicacion - solo un usuario pueda modificar un registro

gnzsoloyo pero el primero de esa consulta no el primero de la tabla, pero tiene logica como lo pienso implementar?
  #7 (permalink)  
Antiguo 07/05/2014, 13:35
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Duda con aplicacion - solo un usuario pueda modificar un registro

LIMIT aplica al resultado de la CONSULTA, no de la tabla.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 07/05/2014, 13:49
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Duda con aplicacion - solo un usuario pueda modificar un registro

gnzsoloyo efectivamente es con LIMIT, tengo una duda ya como obtengo ese ultimo registro y que es un objeto ,puedo colocar el objeto con la prioridad en el WHERE del UPDATE (utilizando php)

Código SQL:
Ver original
  1. BEGIN;
  2. SELECT id
  3. FROM turns
  4. WHERE estado = 2 AND servicio_id = 2
  5. ORDER BY id
  6. LIMIT 1;
  7. UPDATE turns SET estado = 1 WHERE id = ; //este id es de la consulta lo puedo colococar con php?
  8. COMMIT;
  #9 (permalink)  
Antiguo 07/05/2014, 14:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Duda con aplicacion - solo un usuario pueda modificar un registro

Sólo te queda una opción: Tres (3) queries.
La primera para obtener el dato.
La segunda para reservarlo.
La tercera para el UPDATE.

La otra opción es meter todo en un Stored Procedure...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 07/05/2014, 20:33
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Duda con aplicacion - solo un usuario pueda modificar un registro

no me funciono asi

Código SQL:
Ver original
  1. BEGIN;
  2. SELECT id
  3. FROM turns
  4. WHERE estado = 2 AND servicio_id = 2
  5. ORDER BY id
  6. LIMIT 1;
  7. UPDATE turns SET estado = 1 WHERE id = 1
  8. COMMIT;


gnzsoloyo podrias indicarme mediante un ejemplo lo que me dijiste en

Cita:
Eso sólo se controla a nivel de Base de Datos. Las sesiones de PHP no tienen impacto en las restricciones de BBDD.

Casi todos los motores de BBDD que posean control de transacciones tienen una forma de SELECT que tiene una sintaxis semejante a
Código MySQL:

Ver original

SELECT ...
FROM ...
FOR UPDATE



Ese tipo de acción genera un bloqueo a nivel registro para todos los registros devueltos por la consulta. Si otro user intenta realizar una acción sobre ellos se produce un error de "table locked".

PosgreSQL: http://www.postgresql.org/docs/9.0/s...ql-select.html
MySQL: https://dev.mysql.com/doc/refman/5.0...ing-reads.html
Informix: http://pic.dhe.ibm.com/infocenter/id...s_sqs_0161.htm
  #11 (permalink)  
Antiguo 08/05/2014, 10:30
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Duda con aplicacion - solo un usuario pueda modificar un registro

En mi opinión, esto debería controlarse solo desde PHP, con un campo adicional en la tabla que quieres modificar.

Algo como:
Desde php
Código PHP:
Ver original
  1. SELECT id,estado_registro
  2. FROM turns
  3. WHERE estado = 2 AND servicio_id = 2
  4. ORDER BY id;
  5. if($estado_registro="libre")
  6. {
  7.  update turns set estado_registro='asignado' where ....;
  8. }
  9. else
  10. {
  11.    print("El usuario ya ha sido asignado a otro operador");
  12. }
  13. //seguir trabajando con el registro
  14.  
  15. //Cuando termina de trabajar con el registro
  16. update turns set estado_registro='libre' where ....;

Perdón por el PHP, simplemente es la logica que yo haría.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #12 (permalink)  
Antiguo 09/05/2014, 10:10
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Duda con aplicacion - solo un usuario pueda modificar un registro

huesos52 gracias por responder, que pasaria si los dos usuarios acceden al registro al mismo tiempo?

Etiquetas: aplicacion, modificar, registro, sql, usuario, 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 03:43.