PHP - Eliminar o editar dato mediante el metodo $_GET

   
Vista:

Eliminar o editar dato mediante el metodo $_GET

Publicado por Eduardo attipax@gmail.com (18 intervenciones) el 09/06/2016 22:47:13
Buenas tardes o buenas noches estoy haciendo un proyecto donde cada usuarios tiene un código, y el código se envía por método $_GET , en la barra de direcciones.

get

Cada usuario tiene asignado un código o ID.
Para fundamentar un poco la idea, los usuarios ya tienen asignados los horarios y las oficinas donde van a realizar la charla en la BD. Ellos dan charlas en oficinas de un departamento. Cada usuario o trabajador le toca estar en diferentes oficinas, como también le puede tocar dictar su charla en la misma oficina pero en otro horario del día.

como se muestra en la imagen ya están dados los horarios y oficinas para los usuarios
bd

La idea es que Al momento de que ellos ingresan su código mediante el método $_GET por la barra de direcciones, se elimine solamente el USUARIO correspondiente a la oficina y a la hora que le toque en ese momento realizar la charla.

Ejemplo: Si el USUARIO33 dicta la charla a las 13:30 en la oficina 6. Solo se tendrá que eliminar ese registro y no los demás registros del USUARIO 33 que se dictaran o realizaran en otros horarios y en otras oficinas o en la misma oficina

es un extracto que muestra al USUARIO33 que debe realizar sus charlas en distintas oficinas y en distintos horarios
usu33
PD:((este registro no se elimina propiamente tal de la base de datos, sino que se envía a otra tabla donde estará PRESENTE y con la hora exacta que paso su código))

Este es mi código php.
Al momento de tener un registro repetido en la BD como el USUARIO33 no me permite eliminarlo o editarlo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
 
$estado = 'PRESENTE';
 
  // Importamos la configuración
    include("conexion.php");
 
    // Leemos los valores que nos llegan por GET
    $idUsuario = mysqli_real_escape_string($conexion, $_GET['codigo']);
 
       $consulta = "SELECT * FROM trabajadores WHERE usuario = '$idUsuario'";
        $ejecutar_consulta = $conexion->query($consulta);
        $registro = $ejecutar_consulta->num_rows;
 
if ($registro == 1) {
     // Esta es la instrucción para eliminar los registros del codigo de usuario
              $consulta = "DELETE  FROM trabajadores  WHERE usuario = '$idUsuario'";
        // Ejecutamos la consulta para editar
             // $consulta = "UPDATE  trabajadores SET estado='$estado' WHERE usuario = '$idUsuario' ";
 
               $ejecutar_consulta = $conexion->query(utf8_decode($consulta));
 
               echo ("Usuario: $idUsuario Modificado");
}
else
{
    echo ("NO se editaron los datos");
}
 
    $conexion->close();
 
?>

Pero si el usuario no se repite como el USUARIO44, el código funciona bien ya que al introducir el código se puede eliminar o editar.
usu44

En este caso le edite el estado a PRESENTE, pero mi idea es que se elimine de la tabla, pero si esta el código repetido no me deja que lo realize
usu44bd

incluso cree otro campo en la misma tabla con nombre "id" asignándolo como llave primaria, pero igualmente no me funciono.
Si alguien me puede orientar o me diga que estoy haciendo mal o si se puede hacer de otra manera, me ayudaría bastante ya que me quede trabado en esta parte por el poco conocimiento que tengo en PHP.

desde ya muchas gracias por su tiempo y disculpen si es muy extensa la explicación, lo quise dejar de una forma que se entendiera de que se trata
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip

Eliminar o editar dato mediante el metodo $_GET

Publicado por kip (572 intervenciones) el 10/06/2016 01:27:11
Hola, debes cambiar la linea:
1
if ($registro == 1) {

A esta:
1
if ($registro > 0) {

De esa forma se soluciona el problema, prueba y nos comentas como te fue.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Eliminar o editar dato mediante el metodo $_GET

Publicado por Eduardo attipax@gmail.com (18 intervenciones) el 10/06/2016 02:46:41
Hola Kip, primero que todo muchas gracias por darte el tiempo de leer mi consulta

usu33precambian-todos

Y Muchas Gracias!!!, ya que tu comentario me ayudo bastante, realice el cambio que me dijiste en el código y ahora puedo editar o eliminar cualquier dato que este o no repetido, gracias a tu ayuda.
usu33-si-se-modifican

Aquí muestra todos los datos del USUARIO33 cambiados de una sola vez a PRESENTE,
usu33cambian-todos

Le he puesto un campo de idAsistencia como Primary Key,(no se si sera necesario). pero como puedo hacer que al momento de que ellos ingresan su código mediante el método $_GET por la barra de direcciones, se elimine o edite solamente el USUARIO que corresponde a esa oficina y al bloque de hora que le esta correspondiendo en ese momento de realizar la charla.

Ejemplo: Si el USUARIO33 dicta la charla a las 13:30 en la oficina 6. he ingresa su código en ese tiempo. Solo se tendrá que eliminar o editar ese registro. ya que le toca en ese horario y esa oficina

y no los demás registros del USUARIO 33 que se realizaran en otros horarios y en otras oficinas, o en la misma oficina pero a otra hora. deberán esperar a que el USUARIO33 marque a esa hora y en x oficina

¿Que restricción tendría que hacer para que no me cambie todos los datos del USUARIO de una sola vez?

Desde ya muchas gracias Kip me ha sido de gran ayuda tu comentario anterior
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

Eliminar o editar dato mediante el metodo $_GET

Publicado por kip (572 intervenciones) el 10/06/2016 04:33:38
Es raro lo que pides, si bien alguien puede ingresar el id mediante la barra de direcciones, esto no deberia modificar nada de la tabla por cuestiones de seguridad, imaginate que un usuario quiera alterar los datos y modificarlos, podria hacerlo por la barra de direcciones colocando cada id de los otros usuarios, es por eso que aquello es mala practica.

Ahora bien, si sabiendo aquello aun quieres implementarlo, como saber en que oficina esta el usuario para buscar especificamente aquel dato ? Si bien el tiempo es algo que puede obtenerse y colocar como parametro de condicion en la query DELETE, como saber la oficina?

No se como estas desarollando tu sistema pero si es un sistema de inicio de sesion, te recomiendo almacenar en las variables $_SESSION los datos para enviar como parametros de condicion para que pueda hacerse la modificacion o eliminacion correspondiente, ahora si no se trata de un sistema pues no sabria como guiarte, te parece bien si nos cuentas un poco de que trata aqul sistema que desarrollas?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Eliminar o editar dato mediante el metodo $_GET

Publicado por Yamil Bracho (533 intervenciones) el 10/06/2016 05:00:28
Creo que tu mismo te has respondido. Seguramente tu sentencia de actualizacion la haces solo con el campo usuario asi que tiens que agregar el tiempo como otra condicion para que solo te actualize el usuario y la hora dada...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Eliminar o editar dato mediante el metodo $_GET

Publicado por Eduardo attipax@gmail.com (18 intervenciones) el 10/06/2016 07:23:48
Kip, muchas gracias nuevamente.
Tengo claro lo que me dices con respecto al ingreso del id mediante la barra de direcciones. y se que aquello es una mala practica
pero fue la única forma que se me ocurrió para simular un sensor. lo que hago en la barra de direcciones es simular una lectura de id.
sabiendo aquello.

ahora he puesto una hora de inicio y una de termino para que el usuario tenga un rango o tiempo limite para ingresar su código

tiempo-termino
PD:((como dije anteriormente este registro no se elimina propiamente tal de la base de datos, sino que se envía automáticamente después de eliminar el registro de esta tabla a otra tabla llamada presente, donde estará PRESENTE y con la hora exacta que paso su código))

¿como podría colocar el tiempo(hora inicio y termino) asignado de los campos como parámetro de condición en la query DELETE?

para que el usuario, si no ingresa su código dentro de ese rango de tiempo quedara como que no llego hacer su charla a la oficina, pero si ingresa su código dentro del tiempo asignado en los campos de la tabla "Hora de Inicio" y "Hora de termino" se eliminara de esa tabla donde y pasara a otra

Lo que no consigo es eliminar o editar el registro exacto que corresponde a esos parámetros de tiempo asignados en los campos, ya que si ingreso el código de un usuario me borra o edita todos de una vez (eso me ayudo a solucionarlo Kip), sin respetar los parámetros de tiempo u oficina, (nose si el idAsistencia podría ayudar como parámetro o condicional para que se elimine de una forma mas exacta)

Desde ya muchas gracias a Kip y ahora a Yamil Bracho por sus comentarios, por darse el tiempo de leer mi pregunta, hacer un análisis y responder, muchas gracias por el tiempo dedicado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

Eliminar o editar dato mediante el metodo $_GET

Publicado por kip (572 intervenciones) el 10/06/2016 20:59:24
Hola, podrias setear la zona horaria que desees para luego obtener la hora segun la zona horaria asignada y con aquella variable que contenga la hora la colocas como parametro en la query:

1
2
3
4
date_default_timezone_set('America/Argentina/Buenos_Aires'); //seteo la zona horaria en este caso Buenos Aires
$hora_actual = date("H:i:s", time()) ; //almaceno la hora actual en alguna variable
 
$query_delete = "DELETE  FROM trabajadores  WHERE (usuario = '$idUsuario') AND (Hora_de_inicio <= '$hora_actual' AND Hora_de_termino >= '$hora_actual' )";

Intenta de esa forma, nos avisas si te sirve.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Eliminar o editar dato mediante el metodo $_GET

Publicado por Eduardo (18 intervenciones) el 12/06/2016 00:27:15
Kip eres un Genio!!! Muchas gracias por tu ayuda y por tus comentarios y por el tiempo dedicado. si me sirvió, para que se pudiera usar el tiempo asignado en los campos como parámetro de condición en la query DELETE.

Tengo una ultima consulta
fecha

Si agrego un campo fecha, ¿Se puede utilizar como parámetro de condición en la misma query DELETE?
y como se puede hacer.

desde ya muchas gracias Kip por darte el tiempo de leer mi consulta y responderla de forma acertada, muchas bendiciones para ti y que tu conocimiento siga creciendo infinitamente por hacer esta noble labor de ayudar.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

Eliminar o editar dato mediante el metodo $_GET

Publicado por kip (572 intervenciones) el 12/06/2016 00:36:10
Hola, de nada, me alegra que te sirva.

Con respecto a tu otra consulta, lo mejor seria crear un campo DATETIME en lugar de tener un campo para fecha y otro para hora, en tu caso usaria dos campos DATETIME, uno de referencia para la fecha/hora de entrada y asi mismo otro para fecha/hora de salida.

Y para crear la fecha de referencia que colocaras en la query DELETE seria asi:

1
2
date_default_timezone_set('America/Argentina/Buenos_Aires'); //seteo la zona horaria en este caso Buenos Aires
$hora_actual = date("Y-m-d H:i:s", time()) ; //almaceno la hora actual en alguna variable

Prueba de esa forma y nos comentas.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Eliminar o editar dato mediante el metodo $_GET

Publicado por Eduardo (18 intervenciones) el 12/06/2016 01:35:59
Kip tienes razón fue mejor crear un campo DATATIME, muchas gracias por tu tiempo que dedicaste en ayudarme, eres una gran persona , gracias por hacer esta labor de ayudar a los demás, me ayudaste a resolver mi consulta,gracias
y como te dije muchas bendiciones en tu vida y nuevamente gracias.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar