Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => Mensaje iniciado por: 01munrra en 17 Abril 2012, 05:50 AM

Título: recursividad en codeigniter!,,,
Publicado por: 01munrra en 17 Abril 2012, 05:50 AM
saludos!,,, tienen alguna idea de como hacer una funcion recursiva en CI ??? 
Título: Re: recursividad en codeigniter!,,,
Publicado por: Kase en 17 Abril 2012, 07:57 AM
claro.. la llamas a si misma... o__o


Título: Re: recursividad en codeigniter!,,,
Publicado por: EFEX en 17 Abril 2012, 10:30 AM
En donde queres aplicarlo? muestra el codigo.
Título: Re: recursividad en codeigniter!,,,
Publicado por: 01munrra en 17 Abril 2012, 14:28 PM
EFEX , yo habia hecho esto en php puro.

esta funcion me recorre la misma tabla y me muestra los hijos de cada padre.

Código (php) [Seleccionar]

function recursive($pariente)
{
   $sql = mysql_query("SELECT * FROM Familia WHERE IdPadre = '$pariente' ") or die(mysql_error());
   while( $Hijo = mysql_fetch_array($sql) )
    {
      echo "" .$Hijo['nombre']. "<br>";
         recursive_hijos($Hijo['Id']); 
    }
}


ahora la quiero hacer pero usando Codeigniter, y pues para ser sincero ,e enriedo puesto que ahora tengo aparte el modelo(donde tengo que modelar la consulta a la base de datos),  la vista(donde voy a controlar las vistas) y el controlador, he aqui donde tengo que hacer una funcion que me recorra la tabla de manera recirsiva.
Título: Re: recursividad en codeigniter!,,,
Publicado por: EFEX en 18 Abril 2012, 13:52 PM
Estas empezando con CI verdad? Si tenes claro el patron MVC, lo cachas enseguida, podes leer la documentacion oficial en el sitio.

CodeIgniter User Guide Version 2.1.0
http://codeigniter.com/user_guide/ (http://codeigniter.com/user_guide/)

Este es un ejemplo, lo hice 'a mano alzada' y es para que veas como es el patron Modelo-Vista-Controlador, el codigo esta mal por lo que te aconsejo no probarlo :), si me equiboque en algo y me corrigen mejor.
El modelo esta encargado de hacer peticiones a la base de datos(insert, update, select, etc).

.../models/base.php
Código (php) [Seleccionar]

class Base_model extends CI_Model { //Al definir una clase la primera letra siempre tiene que ser mayuscula
function __construct()
{
//Llamar al contructor del modelo
parent::__construct();
}
public function consulta($pariente)
{
//Preparamos la consulta
$this->db->get_where('Familia', array('IdPadre' => $pariente));
//Generamos la consulta
$query = $this->db->get();
//Devolvemos el resultado
return $query->result();
}
}


Las vistas puede ser un pedazo del sitio web, como el header, footer, vista de un carrito de compras, etc.
No son llamadas directamente y se cargan en el controlador. El codigo php esta embebido dentro de la vista, por que estará nuestro codigo html, js, css y no hay clases ni funciones de php.

.../views/familia.php
Código (php) [Seleccionar]

<?php echo $nombreHijo?>


El controlador es la base de tu aplicación, es una clase que tiene una asociación con la url del sitio.
Citarejemplo.com/index.php/nombre-del-controlador/funcion

.../controllers/casa.php
Código (php) [Seleccionar]

class Casa extends CI_Controller {
public function recursive($pariente){ //Esta funcion va ser poder accedida desde ejemplo.com/index.php/casa/recursive
$this->load->model('Base', 'db'); //Cargamos el modelo
$respuesta = $this->db->consulta($pariente); //Genera la consulta
//Es solo un ejemplo, hay que pensar desde aqui :)
while($respuesta)
{
//Definimos lo que pasaremos a nuestra vista, nota que la clave 'nombreHijo' del array $datos esta asociado a la variable $nombreHijo de la vista familia.
$datos['nombreHijo'] = $respuesta;
//Cargamos la vista y mostramos
$this->load->view('familia', $data);
}
}
}



Título: Re: recursividad en codeigniter!,,,
Publicado por: 01munrra en 18 Abril 2012, 16:01 PM
si hasta hora estoy empezando a usar codeigniter, y se me dificulta un poco....... gracias por la explicacion, me daste un empujon, de donde empezar.... voy a tomar en cuenta tus explicaciones, cualquier cosa te estare comentando....
Título: Re: recursividad en codeigniter!,,,
Publicado por: 01munrra en 25 Abril 2012, 23:36 PM
EFEX, estoy en el modelado(models) haciendo algo parecido a esto:

Código (php) [Seleccionar]


public function traer($id_pariente)
{
   // procedimientos
   traer($id);
}



y me muestra esto:

Código (php) [Seleccionar]
Fatal error: Call to undefined function traer()   

y por su puesto señala la linea donde estoy llamando la funcion, y no entiendo por que no me reconoce la funcion, pusto que esta en la misma clase y pues si ves lo que esta hacien es llamandose a si misma con un nuevo parametro...

la manera de llamar funciones en php es esa, cierto?
pero entonces en codeigniter usa otra forma de llamar las funciones??..
Título: Re: recursividad en codeigniter!,,,
Publicado por: Kyke-28 en 28 Abril 2012, 00:26 AM
Se Nota que no haz programado POO( Programación Orientado a Objetos )
Código (php) [Seleccionar]

public function traer($id_pariente)
{
   // procedimientos
   traer($id);
}


es así:

Código (php) [Seleccionar]
public function traer($id_pariente)
{
   // procedimientos
   $this-> traer($id);
}


Aprende primero POO, ya te daras una idea con Codeigniter ya que se base mucho POO.

Saludos.
Título: Re: recursividad en codeigniter!,,,
Publicado por: 01munrra en 29 Abril 2012, 01:50 AM
Kyke-28, si he trabajado con POO, mi primer lenguaje en aprender a programar fue C++, use POO como no te imaginas,,,,, ahora con respecto a CI,  pregunto es por que no conozco muy bien su sintaxi de programacion,,, hasta hora estoy aprendiendo a programar en CI.

gracias por la info...

saludos!!