Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Datos no se eliminan

Estas en el tema de Datos no se eliminan en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos, alguien que me ayude a identifica la razon por la cual no se eliminan los datos en mysql. Aqui el codigo: CLASE ...
  #1 (permalink)  
Antiguo 30/11/2011, 13:13
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 14 años, 10 meses
Puntos: 4
Datos no se eliminan

Hola a todos, alguien que me ayude a identifica la razon por la cual no se eliminan los datos en mysql.

Aqui el codigo:

CLASE CONECTION
Código PHP:
<?php
    
    
class Conection{
        var 
$enlace;
        function 
__construct($url$user$pass$database){
            
            
$this->enlace mysql_connect($url,$user,$pass);
            
            if(!
$this->enlace){
                die(
'No se pudo establecer la conexion con la base de datos. El error es el siguient : ' mysql_error());            
            } 
            
/*
            else {
                echo "Conexion Exitosa";    
            }
            */
            
            
mysql_select_db($database);
        }
        
        function 
_destruct(){
            
mysql_close();
        }
    }
    
    
$conection = new Conection($config['url'],$config['user'],$config['pass'],$config['database']);
?>
CLASE QUE MANEJA LOS METODOS

[PHP]
<?php

require_once("Conection.php");

class SubjectManager {

public function remove ($object){ //Remove the entity instance.
$sentence = "delete from subjects where subject_Id = '".$object."' ";
$rs = mysql_query($sentence);
echo $sentence;
if($rs == false) {
echo 'Error al eliminar los campos en la tabla.';
}else{
echo 'Los datos se han eliminado correctamente.';
}
}

}

CLASE QUE EJECUTA EL METODO

Código PHP:
require_once("../../entities/Engine.php");
                                                        require_once(
"../../entities/SubjectManager.php");
                                                        
$subjectManager = new SubjectManager();
                                                        
$subjectManager->remove($_GET['id']);
$subjectManager->showSubjectTable(); 

El id que le paso en este metodo, hice que se mostrara en la clase que maneja lois metodos y se ve. He ejecutado la sentencia en le gestor de bases de datos, y la funcion se elimina correctamente. Cuando la ejecuto desde la pagina, entonces me muestra el mensaje de que se ha ejecutado bien, pero me sigue mostrando el registro.

El metodo $subjectManager->showSubjectTable(); que esta debajo del remove, es el que muestra los datos. Esto lo hago luego de que se elimine el registro.

Cuando le doy a eliminar desde la pagina, y compruebo si se elimino de la base de datos, tampoco lo hace.
  #2 (permalink)  
Antiguo 30/11/2011, 13:46
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Datos no se eliminan

no veo que lleves correlación entre el recurso de conexión $conection->enlace, contra las demás fuinciones, se supone que debes usar el mismo recurso. ¿tu mysql está en modo Autocommit=0?
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 30/11/2011, 13:48
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Datos no se eliminan

No se eso, como puedo averiguarlo. He realizado inserciones y consulta a la base de datos asi como esta el codigo. Pero no se elimnan.
  #4 (permalink)  
Antiguo 30/11/2011, 14:06
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Datos no se eliminan

Algo que he notado es k hay un espacio en el id. es decir:

delete from subjects where subject_Id = ' 58'

Antes del numero hay un espacio. Aunque eso no afecta, porque si copio ese codigo y lo pego en la base de datos, se elimina bien, pero no se elimina cuando se ejecuta desde el metodo de la clase que lo contiene.
  #5 (permalink)  
Antiguo 30/11/2011, 14:08
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Datos no se eliminan

He visto que algunos le ponen unas llames a la variable, pero probe con eso y hace lo mismo. Como lo tenia era poniendole comillas dobles luego el punto de concatenacion. Funciono igual, aun sigue sin eliminarse el registro. Por favor, alguien ayudeme.
  #6 (permalink)  
Antiguo 30/11/2011, 15:19
 
Fecha de Ingreso: noviembre-2011
Mensajes: 7
Antigüedad: 12 años, 5 meses
Puntos: 2
De acuerdo Respuesta: Datos no se eliminan

Podrias probar creando un metodo aun mas simple asi como este

Código PHP:
Ver original
  1. <?php
  2. public function eliminar()
  3. {
  4.       global $bd;
  5.       $sql = "DELETE FROM nombre_tabla";
  6.       $sql .= " WHERE id=".$this->id;
  7.       $bd->enviar_consulta($sql);
  8.       if($bd->affected_rows()==1)
  9.       {
  10.              return true;
  11.       }
  12.       else
  13.       {
  14.              return false;
  15.        }
  16. }
  17. ?>

logicamente tendrias que crear esta funcion en una clase padre en la que se declare las funcion mysql_query(), mysql_affected_rows() y las conexiones a labase de datos.

Saludos.
  #7 (permalink)  
Antiguo 01/12/2011, 07:18
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Datos no se eliminan

Cita:
Iniciado por sterlingdiazd Ver Mensaje
Algo que he notado es k hay un espacio en el id. es decir:

delete from subjects where subject_Id = ' 58'

Antes del numero hay un espacio. Aunque eso no afecta, porque si copio ese codigo y lo pego en la base de datos, se elimina bien, pero no se elimina cuando se ejecuta desde el metodo de la clase que lo contiene.
claro que afecta, le estás indicando que busque un string ' 58' y no un integer 58

¿cuando se lo pegas a la base de datos, con que programa?: eso no quiere decir que la libreria de php haga el filtrado automático, eso denota falta de seguridad en cuanto a SQL Inyections
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #8 (permalink)  
Antiguo 01/12/2011, 20:27
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Datos no se eliminan

Gracias por responder. Eso mismo era lo que pasaba. Cuando hice un cast a integer, inmediatamente desaparecio el espacio, y el registro se elimino. Gracias!!!!!

Etiquetas: mysql, registro, tabla
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 01:37.