elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13]
121  Programación / PHP / Re: Funcion que falla y borra una tabla entera en: 1 Junio 2011, 09:58 am
 id_familia      nombre_familia  id_padre

         1      |     Electronica     |        0      |
         2      |     Ordenador     |        1      |
         3      |     Monitor           |        2      |
         4      |     Fontaneria     |        0      |
         5      |     Carpinteria     |        0      |
         6      |      Mesa             |        5      |
         7      |     Teclado          |        2      |



Hola chicos, os dejo unos datos de prueba de la tabla en cuestión. Técnicamente si borro Electrónica, debería de  borrar también Ordenador, Monitor y Teclado, porque están relacionadas por una jerarquía.

Mientras que los demás registros no se deberían de borrar. Nakp si veo que es un problema de lógica me pego un tiro  :xD, he estado 3 días con la maldita función  ;D.

Shell Root estuve probando tu código y solo me borra un nivel, es decir no borra los nietos.

Acabo de ver un fallo, en mi codigo. (Por hacer copy-paste). Realmente en la ultima llamada se llama asi misma.
Código
  1. <?php
  2.      function borrarRegistro($id)
  3.      {      
  4.         $datos = $this->buscarHijo($id);
  5.  
  6.         $this->borrar($id);
  7.  
  8.         $total = count($datos);
  9.         for($i = 0;$i<=$total;$i++)
  10.         {
  11.            $this->borrar($datos[$i][id_familia]);
  12.            if(isset($datos))
  13.            {
  14.               $this->borrarRegistro($datos[$i][id_familia]);
  15.            }
  16.         }                  
  17.      }
  18. ?>
  19.  
Intenté hacerlo recursivo para buscar hijos hasta que se hayan borrado todos los que estén relacionados. Muchas gracias a los dos, si conseguimos solucionarlo os invito a unas cañas  :P.

Un saludo.


Edito: Lo siento, pero no consigo que los datos de prueba estén bien cuadrados :(.
122  Programación / PHP / Funcion que falla y borra una tabla entera en: 31 Mayo 2011, 17:40 pm
Hola chic@s, tengo hecha una función que borra lo que no debe. Os explico que debería de hacer: Es una función que borra un registro de una base de datos (Mysql) y tiene mas registro que dependa de ella, también se tendrían que borrar.

Pero lo que sucede es que se cepilla toda la tabla, estuve depurando el programa y no veo ningún fallo, haber si vosotros podéis verlo.

Esta es la tabla:

CREATE TABLE snd_familia (
id_familia int(4) auto_increment primary key,
nombre_familia varchar(15) NOT NULL,
id_padre int(4) NOT NULL);

El campo ip_padre se relaciona con el campo id_familia, sacando la información de este último. Yo lo haría con dos tablas, pero tengo que hacerla en una.

Aqui os pongo las funciones que utilizo:

      function buscarHijo($id_familia)
      {
         try
         {
            global $config;
            $db = new ConexionBD();
            $db->conectar();
            
            $query = sprintf("select * from %sfamilia where id_padre = ('%s')",
            mysql_real_escape_string($config['tbl_prefix']),
            mysql_real_escape_string($id_familia));
            $sql = mysql_query($query);
            
            while($row = mysql_fetch_assoc($sql))
            {
               $datos[] = $row;
            }                     
            return $datos;         
            $db->desconectar();
         }catch(Exception $e){
            echo "Ocurrio un error: " . mysql_error();
         }
      }

      function borrar($id_familia)
      {
         try{
            global $config;
            $db = new ConexionBD();
            $db->conectar();            
               $query=sprintf("DELETE FROM %sfamilia WHERE id_familia= ('%s')",
               mysql_real_escape_string($config['tbl_prefix']),
               mysql_real_escape_string($id_familia));
               mysql_query($query);
               $db->desconectar();            
         }catch(Exception $e){
            echo "Ocurrio un error: " . mysql_error();
            }
      }

      function borrarRegistro($id)
      {      
         $datos = $this->buscarHijo($id);

         $this->borrar($id);
         
         $total = count($datos);
         for($i = 0;$i<=$total;$i++)
         {
            $this->borrar($datos[$i][id_familia]);
            if(isset($datos))
            {
               $this->borrado($datos[$i][id_familia]);
            }
         }                  
      }  

Gracias por leer el tema y si algo no se entiende o veis como se puede mejorar, ponedlo por favor. Que llevo poco con este lenguaje jeje.

Un saludo
123  Foros Generales / Foro Libre / Re: Los hombres arrogantes y de aspecto triste tienen más posibilidades de ligar en: 31 Mayo 2011, 17:26 pm
Creo que no eres la unica que lo piensa, esos estudios se deben de hacérselo a gente "especial" xD.
124  Foros Generales / Foro Libre / Re: Guerra con historia en: 31 Mayo 2011, 17:23 pm
Querer es Poder!!!!Animo :D
125  Foros Generales / Foro Libre / Re: ¿Ser amigos? en: 27 Mayo 2011, 11:51 am
Y nunca las comprenderemos por mucho que queramos, cada una es un mundo y nosotros sus exploradores xDD
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines