Foros del Web » Programando para Internet » PHP »

PHP OO Eliminacion logica PHP A/D

Estas en el tema de Eliminacion logica PHP A/D en el foro de PHP en Foros del Web. Buenas ; amigos de Foro web , en esta oportunidad vengo nuevamente a pedir de sus requerimientos . Lo que sucede que estado trabajando ; ...
  #1 (permalink)  
Antiguo 06/06/2013, 20:35
Avatar de nexus44  
Fecha de Ingreso: octubre-2012
Ubicación: Piura
Mensajes: 108
Antigüedad: 12 años
Puntos: 1
Exclamación Eliminacion logica PHP A/D

Buenas ; amigos de Foro web , en esta oportunidad vengo nuevamente a pedir de sus requerimientos .

Lo que sucede que estado trabajando ; un boton de eliminacion de usuario mediante una base de datos es correcto ; lo conseguiente que quisiera saber como poderia realizar una eliminacion logica ; más no bruta. Que simplemente tenga la potestad de Activar/Desactivar al usuario una vez el usuario Desactivado no podra ingresar al sistema ; por la razon que se encuentra desactivado es correcto.

Espero cordialmente su ayudar ; PORFAVOR.


GRACIAS.
__________________

"Nuestra capacidad se aleja de la Humanidad"
  #2 (permalink)  
Antiguo 06/06/2013, 20:43
 
Fecha de Ingreso: septiembre-2008
Mensajes: 47
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Eliminacion logica PHP A/D

Hola Nexus 44, pienso que podrías tener un campo "activo" en la tabla de usuarios para indicar si el usuario está activo o no (un campo booleano). Luego con el botón de eliminar solo cambias el valor de ese campo, de "activo" a "inactivo".

Al loguearse el usuario se debería verificar, por medio de consultas a la base de datos, que el usuario esté "activo", aso contrario no te deja loguearte.

Este sistema se usa mucho, de hecho por eso en la mayoría de los foros cuando te suscribes te envían un mail para verificar tu usuario... cuando presionas el enlace del mail básicamente se cambia el estado de tu usuario a "activado".
  #3 (permalink)  
Antiguo 06/06/2013, 23:42
Avatar de nexus44  
Fecha de Ingreso: octubre-2012
Ubicación: Piura
Mensajes: 108
Antigüedad: 12 años
Puntos: 1
Respuesta: Eliminacion logica PHP A/D

HOLA , Xeomdq ; Gracias por responder claramente estado indagando por que más que todo de eso se trata , por lo tanto debera haber.

En la base de datos una tabla llamada "estado" 0(activo) y 1(inactivo) entonces mi problema es como puedo programar eso en php , necesito un ejemplo o algo para poder guiarme ; soy conciente que tengo la idea , pero al momento de desarrollarla en el php es mi problema.
__________________

"Nuestra capacidad se aleja de la Humanidad"
  #4 (permalink)  
Antiguo 07/06/2013, 07:37
Avatar de wizanchez  
Fecha de Ingreso: junio-2013
Ubicación: bogota
Mensajes: 120
Antigüedad: 11 años, 5 meses
Puntos: 6
Respuesta: Eliminacion logica PHP A/D

- en el momento de la eliminacion colocaria 3 campos
eliminado (int): si es 0=activo, 1=inactivo
eliminado_fecha (datetime): para saber en que fecha fue eliminado
eliminado_user (int): saber que usuario lo elimino

en el momento de inactivar tendria que
Código PHP:
Ver original
  1. $SQL='UPDATE
  2.                      tabla
  3.                SET
  4.                      eliminado=1,
  5.                      eliminado_fecha=NOW(),
  6.                      eliminado_user=$user_id
  7.                WHERE
  8.                              .......';

- en el momento de las consulta se convertiria en obligatorio preguntar este campo
Código PHP:
Ver original
  1. $SQL='
  2.           SELECT
  3.                       *
  4.           FROM
  5.                     tabla
  6.          WHERE
  7.                    eliminado=0
  8.                    AND ........
  9.  
  10. ';

- para soluciones empresariales, esto es una regla para todas las tablas, jamas se borra nada , unicamente se elimina logicamente
__________________
---------
cubesoftechnology.com
Wizanchez,,
  #5 (permalink)  
Antiguo 07/06/2013, 07:43
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: Eliminacion logica PHP A/D

Cita:
Iniciado por nexus44 Ver Mensaje
HOLA , Xeomdq ; Gracias por responder claramente estado indagando por que más que todo de eso se trata , por lo tanto debera haber.

En la base de datos una tabla llamada "estado" 0(activo) y 1(inactivo) entonces mi problema es como puedo programar eso en php , necesito un ejemplo o algo para poder guiarme ; soy conciente que tengo la idea , pero al momento de desarrollarla en el php es mi problema.
Entonces hacete un cursito por que lo que preguntas es mas que simple,

te dicen: agregar un campo activo en la tabla usuario

cuando se loguea el usuario solo haces:

if($activo)

y listo,

por supuesto el script debes adaptarlo a tu sistema
  #6 (permalink)  
Antiguo 07/06/2013, 11:43
Avatar de nexus44  
Fecha de Ingreso: octubre-2012
Ubicación: Piura
Mensajes: 108
Antigüedad: 12 años
Puntos: 1
Respuesta: Eliminacion logica PHP A/D

Hola , wizanchez gracias por responder tal cordialmente ; estare asumiendo el ejemplo requerido cualquier duda ; espero me ayudes a solucionarlo



Patriarka
; remitete a responder con mas cuidado en tus comentarios porfavor esta bien que no sepa pero creo que de eso se trata este foro.
__________________

"Nuestra capacidad se aleja de la Humanidad"
  #7 (permalink)  
Antiguo 07/06/2013, 11:54
Avatar de nexus44  
Fecha de Ingreso: octubre-2012
Ubicación: Piura
Mensajes: 108
Antigüedad: 12 años
Puntos: 1
Respuesta: Eliminacion logica PHP A/D

En este codigo presento como una advertencia a eliminar . SI / NO

codigo :


borrar_confirma.php

Código PHP:
Ver original
  1. <?php require_once('Connections/con_usuarios.php'); ?>
  2. <?php
  3. if (!function_exists("GetSQLValueString")) {
  4. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
  5. {
  6.   if (PHP_VERSION < 6) {
  7.     $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  8.   }
  9.  
  10.   $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  11.  
  12.   switch ($theType) {
  13.     case "text":
  14.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  15.       break;    
  16.     case "long":
  17.     case "int":
  18.       $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  19.       break;
  20.     case "double":
  21.       $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
  22.       break;
  23.     case "date":
  24.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  25.       break;
  26.     case "defined":
  27.       $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  28.       break;
  29.   }
  30.   return $theValue;
  31. }
  32. }
  33.  
  34. $colname_usuario = "-1";
  35. if (isset($_GET['nombre_user'])) {
  36.   $colname_usuario = $_GET['nombre_user'];
  37. }
  38. mysql_select_db($database_con_usuarios, $con_usuarios);
  39. $query_usuario = sprintf("SELECT * FROM usuarios WHERE nombre_user = %s", GetSQLValueString($colname_usuario, "text"));
  40. $usuario = mysql_query($query_usuario, $con_usuarios) or die(mysql_error());
  41. $row_usuario = mysql_fetch_assoc($usuario);
  42. $totalRows_usuario = mysql_num_rows($usuario);
  43. ?>
  44. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  45. <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/base.dwt.php" codeOutsideHTMLIsLocked="false" -->
  46. <head>
  47. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  48. <!-- InstanceBeginEditable name="doctitle" -->
  49. <title>Documento sin título</title>
  50. <!-- InstanceEndEditable -->
  51. <style type="text/css">
  52. <!--
  53. body {
  54.     margin-top: 0px;
  55.     background-image: url(fondo.jpg);
  56.     background-repeat: repeat-x;
  57. }
  58. -->
  59. </style>
  60. <!-- InstanceBeginEditable name="head" -->
  61. <!-- InstanceEndEditable -->
  62. </head>
  63.  
  64. <body>
  65. <table width="80%" border="0" align="center">
  66.   <tr>
  67.     <td align="center" bgcolor="#6DC1F0"><h1>curso de control de usuarios<br />
  68.       ww.videotutoriales.es</h1></td>
  69.   </tr>
  70.   <tr>
  71.     <td align="center" bgcolor="#FFFFFF"><!-- InstanceBeginEditable name="contenido" -->
  72.       <h2>¿Seguro que desea eliminar al usuario <?php echo $row_usuario['nombre_user']; ?>?.</h2>
  73.       <p><a href="eliminar_user.php?nombre_user=<?php echo $row_usuario['nombre_user']; ?>">SI</a> / <a href="listado_users.php">NO</a></p>
  74.     <!-- InstanceEndEditable --></td>
  75.   </tr>
  76. </table>
  77. </body>
  78. <!-- InstanceEnd --></html>
  79. <?php
  80. ?>
__________________

"Nuestra capacidad se aleja de la Humanidad"
  #8 (permalink)  
Antiguo 07/06/2013, 11:57
Avatar de nexus44  
Fecha de Ingreso: octubre-2012
Ubicación: Piura
Mensajes: 108
Antigüedad: 12 años
Puntos: 1
Respuesta: Eliminacion logica PHP A/D

mi bd : usuarios

CREATE TABLE IF NOT EXISTS `usuarios` (
`usuario_id` int(12) unsigned NOT NULL AUTO_INCREMENT,
`nombre_user` varchar(60) NOT NULL,
`nombre` varchar(40) NOT NULL,
`apellido` varchar(40) NOT NULL,
`password` varchar(40) NOT NULL,
`email` varchar(40) NOT NULL,
`fecha` date NOT NULL,
`control` enum('admin','user','premium') NOT NULL DEFAULT 'user',
`estado` enum('a','i') NOT NULL,
PRIMARY KEY (`usuario_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;



Una vez dado SI , va ir a :


eliminar_user.php

entonces , aqui es donde debo trabajar lo que es la eliminacion logica ; pero como asignarlo.
Código PHP:
Ver original
  1. <?php require_once('Connections/con_usuarios.php'); ?>
  2. <?php
  3. if (!function_exists("GetSQLValueString")) {
  4. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
  5. {
  6.   if (PHP_VERSION < 6) {
  7.     $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  8.   }
  9.  
  10.   $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  11.  
  12.   switch ($theType) {
  13.     case "text":
  14.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  15.       break;    
  16.     case "long":
  17.     case "int":
  18.       $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  19.       break;
  20.     case "double":
  21.       $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
  22.       break;
  23.     case "date":
  24.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  25.       break;
  26.     case "defined":
  27.       $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  28.       break;
  29.   }
  30.   return $theValue;
  31. }
  32. }
  33.  
  34. if ((isset($_GET['nombre_user'])) && ($_GET['nombre_user'] != "")) {
  35.   $deleteSQL = sprintf("DELETE FROM usuarios WHERE nombre_user=%s",
  36.                        GetSQLValueString($_GET['nombre_user'], "text"));
  37.  
  38.   mysql_select_db($database_con_usuarios, $con_usuarios);
  39.   $Result1 = mysql_query($deleteSQL, $con_usuarios) or die(mysql_error());
  40.  
  41.   $deleteGoTo = "listado_users.php";
  42.   if (isset($_SERVER['QUERY_STRING'])) {
  43.     $deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
  44.     $deleteGoTo .= $_SERVER['QUERY_STRING'];
  45.   }
  46.   header(sprintf("Location: %s", $deleteGoTo));
  47. }
  48.  
  49. $colname_usuario = "-1";
  50. if (isset($_GET['nombre_user'])) {
  51.   $colname_usuario = $_GET['nombre_user'];
  52. }
  53. mysql_select_db($database_con_usuarios, $con_usuarios);
  54. $query_usuario = sprintf("SELECT * FROM usuarios WHERE nombre_user = %s", GetSQLValueString($colname_usuario, "text"));
  55. $usuario = mysql_query($query_usuario, $con_usuarios) or die(mysql_error());
  56. $row_usuario = mysql_fetch_assoc($usuario);
  57. $totalRows_usuario = mysql_num_rows($usuario);
  58. ?>
  59. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  60. <html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/base.dwt.php" codeOutsideHTMLIsLocked="false" -->
  61. <head>
  62. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  63. <!-- InstanceBeginEditable name="doctitle" -->
  64. <title>Documento sin título</title>
  65. <!-- InstanceEndEditable -->
  66. <style type="text/css">
  67. <!--
  68. body {
  69.     margin-top: 0px;
  70.     background-image: url(fondo.jpg);
  71.     background-repeat: repeat-x;
  72. }
  73. -->
  74. </style>
  75. <!-- InstanceBeginEditable name="head" -->
  76. <!-- InstanceEndEditable -->
  77. </head>
  78.  
  79. <body>
  80. <table width="80%" border="0" align="center">
  81.   <tr>
  82.     <td align="center" bgcolor="#6DC1F0"><h1> control de usuarios<br />
  83.     </h1></td>
  84.   </tr>
  85.   <tr>
  86.     <td align="center" bgcolor="#FFFFFF"><!-- InstanceBeginEditable name="contenido" -->reemplazar<!-- InstanceEndEditable --></td>
  87.   </tr>
  88. </table>
  89. </body>
  90. <!-- InstanceEnd --></html>
  91. <?php
  92. ?>
__________________

"Nuestra capacidad se aleja de la Humanidad"

Última edición por nexus44; 07/06/2013 a las 12:05 Razón: easy
  #9 (permalink)  
Antiguo 12/06/2013, 17:14
Avatar de nexus44  
Fecha de Ingreso: octubre-2012
Ubicación: Piura
Mensajes: 108
Antigüedad: 12 años
Puntos: 1
Respuesta: Eliminacion logica PHP A/D

Hola wizanchez , estado indagando y he logrado obtener este codigo , como lo podria asimilar con el codigo posterior que he subido anteriormente.

Código PHP:
Ver original
  1. if(isset($_POST["Eliminar"])){
  2.    
  3.     $codigo=$_POST["estado"];
  4.        
  5.  
  6.     mysql_query("UPDATE usuarios SET  estado=0 WHERE id_usuario='$codigo'" );
  7.     echo "<br><div align='center' class='Texto'>El Registro Del cargo Ha Sido Eliminado Sastifactoriamente</div>";
  8.     desconectar ();
__________________

"Nuestra capacidad se aleja de la Humanidad"
  #10 (permalink)  
Antiguo 14/06/2013, 10:29
Avatar de nexus44  
Fecha de Ingreso: octubre-2012
Ubicación: Piura
Mensajes: 108
Antigüedad: 12 años
Puntos: 1
Respuesta: Eliminacion logica PHP A/D

Logre solucionar el problema gracias de todas formas alas personas que me respondieron salu2.
__________________

"Nuestra capacidad se aleja de la Humanidad"

Etiquetas: eliminacion, logica
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 18:11.