PHP de Venezuela
10 de Septiembre de 2010, 08:02:11 *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
VeneHosting.com :: Tu Hosting en Venezuela
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: No elimina. POO o SQL? [SOLUCIONADO]  (Leído 1020 veces)
0 Usuarios y 1 Visitante están viendo este tema.
remizero
Novato
*

Puntuación: 1
Desconectado Desconectado

Sexo: Masculino
Mensajes: 18



Ver Perfil WWW
« : 26 de Enero de 2010, 10:49:33 »

Hola nuevamente.

Tengo un pequeño problema con la implementación de una clase que he diseñado para el manejo de mi tabla feedback, la cual no elimina los datos que le indico. Estoy trabajando con MVC y POO como dice el título y a continuación les muestro mi código para que entiendan mejor.

Este es el código de mi modelo:
Código:
class feedback {
private $id;
private $nombre;
private $correo;
private $comentario;
private $fecha;
private $estatus;

public function __construct($i, $n, $c, $d, $f, $e) {
$this->id = $i;
$this->nombre = $n;
$this->correo = $c;
$this->comentario = $d;
$this->fecha = $f;
$this->estatus = $e;
}
...
}

Este es el código de mi controlador:
Código:
class cFeedback {

private $TABLA;
     private $ID;
private $NOMBRE;
private $CORREO;
private $COMENTARIO;
private $FECHA;
private $ESTATUS;

public function __construct() {
$this->TABLA = 'feedback';
$this->ID = 'id';
$this->NOMBRE = 'nombre';
$this->CORREO = 'correo';
$this->COMENTARIO = 'comentario';
$this->FECHA = 'fecha';
$this->ESTATUS = 'estatus';
}

public function eliminar ($user) {
$auxConexion = new conexion();
$id = $user->getId();
$sql = "DELETE FROM $this->TABLA WHERE $this->ID = \"$id\"";
$count =  $auxConexion->eliminar($sql);
$auxConexion->close();
return $count;
}
...
}

A parte de todo esto, tambien tengo este otro codigo que es el que me controla la conexion a la base de datos y las consultas a la misma:
Código:
class conexion {
public $baseDatos;
private $servidor;
private $usuario;
private $clave;
private $conexion;
private $bdSeleccionada;

function __construct() {
$this->baseDatos = 'mi_base_de_datos';
$this->port = 'mi_puerto';
$this->servidor = 'mi_servidor';
$this->usuario = 'mi_usuario';
$this->clave = 'mi_clave';
$this->conectar();
}

public function conectar() {
$this->conexion = mysql_connect($this->servidor,$this->usuario,$this->clave);
$this->bdSeleccionada = mysql_select_db($this->baseDatos,$this->conexion);
return $this->conexion;
}
...
public function eliminar ($sql){
$res = mysql_query($sql, $this->conexion) or die( mysql_error() );
return $res;
}
...
}


Y este código es el que me ejecuta todo lo anterior y que tengo en una capa previa a mi página (vista):

Código:
include("../modelo/feedback.php");
include("../controlador/cFeedback.php");

$aux = substr($_POST[varID], 3);      //ESTA ES MI VARIABLE CONTROL PARA PODER ELIMINAR EL REGISTRO
$objAuxFeedback = new feedback($aux, "", "", "", "", true);

$controlFeedback = new cFeedback();
if ($controlFeedback->eliminar($objAuxFeedback))
header("location: comentario.php?var=Se ha eliminado el comentario con éxito");
else
header("location: comentario.php?var=ERROR. No se pudo eliminar el comentario");


De verdad que así como está, no le veo ningún error, pero no elimina el registro que le estoy indicando. Si alguno de uds me podría indicar en donde estoy fallando se lo agradecería muchísimo.

De antemano muchísimas gracias por la ayuda.
« Última modificación: 15 de Marzo de 2010, 09:25:21 por remizero » En línea

Si quieres ver realmente cambios, comienza por cambiar tu primero.
PHP de Venezuela
« : 26 de Enero de 2010, 10:49:33 »

Learn PHP from The PHP Experts
 En línea
remizero
Novato
*

Puntuación: 1
Desconectado Desconectado

Sexo: Masculino
Mensajes: 18



Ver Perfil WWW
« Respuesta #1 : 26 de Enero de 2010, 11:06:59 »

ok Amigos.

Haciendo algunos cambios me di cuenta que si elimina, pero de alguna manera extraña no elimina de la forma que plantee al principio.

Me explico mejor.

Con el código que postee al principio no elimina, es decir el siguiente:
Código:
if ($controlFeedback->eliminar($objAuxFeedback))
header("location: comentario.php?var=Se ha eliminado el comentario con éxito");
else
header("location: comentario.php?var=ERROR. No se pudo eliminar el comentario");

Pero si solo coloco de la siguiente manera si elimina
Código:
$controlFeedback->eliminar($objAuxFeedback);

Pero la idea es que haga la redirección informando un éxito, que se ha eliminado el registro; o un error, que no se ha podido eliminar el registro.

Pareciera que la hacer el llamado del header anulara la consulta para hacer la eliminación.

He de acotar que la página comentario.php hace una consulta a la base de datos para mostrar todos los comentarios en la tabla.
En línea

Si quieres ver realmente cambios, comienza por cambiar tu primero.
remizero
Novato
*

Puntuación: 1
Desconectado Desconectado

Sexo: Masculino
Mensajes: 18



Ver Perfil WWW
« Respuesta #2 : 28 de Enero de 2010, 04:03:01 »

Sin comentarios.

Gracias por la ayuda prestada.
En línea

Si quieres ver realmente cambios, comienza por cambiar tu primero.
Pax
Moderador Global
Fanático
*****

Puntuación: 4
Desconectado Desconectado

Sexo: Masculino
Mensajes: 339



Ver Perfil WWW
« Respuesta #3 : 28 de Enero de 2010, 08:14:39 »

Remizero disculpa que tu codigo estaba un poco largo y el atenderlo lleva un poco mas de tiempo, recuerda que esta comunidad es pequeña...
En línea

Un usuario mas...
Todas tus preguntas, consigues respuesta en google
Googlear no cuesta nada...

http://php.org.ve/index.php/topic,104.0.html <-- Normas criollas del foro
remizero
Novato
*

Puntuación: 1
Desconectado Desconectado

Sexo: Masculino
Mensajes: 18



Ver Perfil WWW
« Respuesta #4 : 29 de Enero de 2010, 12:32:46 »

Remizero disculpa que tu codigo estaba un poco largo y el atenderlo lleva un poco mas de tiempo, recuerda que esta comunidad es pequeña...

Descuida Pax, entiendo perfectamente la situación, y pido disculpas por mi comentario anterior, el cual se  debe a una frustración al trabajar con POO.

Ya solucioné el problema que se me presentó. Aquí les dejo la solución para que alguien más le sirva.

Este es el codigo javascript y mi objeto ajax.
Código:
function objetoAjax() {
   var xmlhttp = false;
   try { // No IE
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
   } catch(e) {
      try { // IE
         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(E) {
         xmlhttp = false;
      }
   }
   if (!xmlhttp && typeof XMLHttpRequest != "undefined")
      xmlhttp = new XMLHttpRequest();
   return xmlhttp;
}

function eliminarComentario() {
   $("a.elimina").click(
      function() {
         id = $(this).parents("tr").find("td").find("div").eq(0).html();
         respuesta = confirm("Desea eliminar el comentario de la persona " + id + " ?");
         if (respuesta) {
            $(this).parents("tr").fadeOut("normal", function(){
   $(this).remove();
   enviar('eiminar', 'eliminarComentario.php', id);
              alert("Datos de usuario " + id + " eliminados")
})
         }
      });
};

function enviar(evento, urlDestino, dato) {
   var divMensaje = document.getElementById("error");
   evento = "eliminar";
   var ajax = objetoAjax();
   ajax.open("POST", urlDestino, true);
   ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
   ajax.send(evento+"="+dato);

   ajax.onreadystatechange = function() {
      if (ajax.readyState == 4) {
         var respuesta = ajax.responseText;
         if (respuesta == "OK")
            var texto = "Datos eliminados";
         else
            var texto = "Imposible eliminar datos";
         divMensaje.innerHTML = texto;
      }
   }
}

Y este el codigo php que realizala eliminacion.
Código:
include("feedback.php");
include("cFeedback.php");

if ( isset($_POST["eliminar"]) ) {
   $id = $_POST["eliminar"];
   $objAuxFeedback = new feedback($id, "", "", "", "", true);
   $controlFeedback = new cFeedback();
   if ($controlFeedback->eliminar($objAuxFeedback))
      echo "OK";
   else
      echo "NOOK";
}

Espero que les sirva a muchos de los que puedan leer este post.

PD. Voy a preparar un manual de POO en PHP que espero puedan montar aquí.
En línea

Si quieres ver realmente cambios, comienza por cambiar tu primero.
Pax
Moderador Global
Fanático
*****

Puntuación: 4
Desconectado Desconectado

Sexo: Masculino
Mensajes: 339



Ver Perfil WWW
« Respuesta #5 : 29 de Enero de 2010, 01:20:03 »

Me alegra que hallas conseguido dar con la solucion... te aseguro que esperamos con ansias todo aporte que puedas dar..
En línea

Un usuario mas...
Todas tus preguntas, consigues respuesta en google
Googlear no cuesta nada...

http://php.org.ve/index.php/topic,104.0.html <-- Normas criollas del foro
hackerunet
Novato
*

Puntuación: 0
Desconectado Desconectado

Mensajes: 3


Ver Perfil
« Respuesta #6 : 19 de Febrero de 2010, 01:34:36 »

Esta muy chevere tu post, yo te recomendaria usar ADODB para OOP ya que funciona espectacular, y te ahorraras reescritura de codigo en cuanto a estar llamando a mysql_query, cosa que ya casi ni recordaba que existia, gracias a ADODB. Por otra parte, el error donde fue especificamente? en la parte de Ajax o en el PHP... En el php no vi error alguno ya que la desicion de la ejecucion de la funcion borrar esta bien hecha. Yo normalmente instancio el procedimiento es decir
Código:
$variable  = $temp_x->execute($preparedSql);
if($variable){
....codigo.....
}else{
....codigo....
}
O sencillamente lo introduzco en un catch para manejo de excepciones...
Espero por vuestra respuesta.
En línea
remizero
Novato
*

Puntuación: 1
Desconectado Desconectado

Sexo: Masculino
Mensajes: 18



Ver Perfil WWW
« Respuesta #7 : 27 de Febrero de 2010, 08:16:39 »

Esta muy chevere tu post, yo te recomendaria usar ADODB para OOP ya que funciona espectacular, ...

Gracias por el dato, lo recomendare a mis conocidos y amigos, pero en este particular me gusta ser yo el que maneje absolutamente lo referente a bases de datos pues así tengo mayor control de lo que hago y no tengo que estudiar código de terceros, y que ademas, otros tendrían que estudiar mi código y seria más difícil para otros hacer una intrusión en mi código. Bueno son solo ideas mías, quizá estoy equivocado pero lo prefiero así.

Espero te haya servido las ideas que expuse y que bueno que te gustó, se ve que te gusta la programación.
En línea

Si quieres ver realmente cambios, comienza por cambiar tu primero.
PHP de Venezuela
   

 En línea
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

VeneHosting.com :: Tu Hosting en Venezuela
Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC XHTML 1.0 válido! CSS válido!
Página creada en 0.205 segundos con 27 consultas. (Pretty URLs adds 0.047s, 3q)