Foro de elhacker.net

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
  1. function recursive($pariente)
  2. {
  3.   $sql = mysql_query("SELECT * FROM Familia WHERE IdPadre = '$pariente' ") or die(mysql_error());
  4.   while( $Hijo = mysql_fetch_array($sql) )
  5.    {
  6.    echo "" .$Hijo['nombre']. "<br>";
  7.         recursive_hijos($Hijo['Id']);  
  8.    }
  9. }
  10.  

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
  1. class Base_model extends CI_Model { //Al definir una clase la primera letra siempre tiene que ser mayuscula
  2. function __construct()
  3. {
  4. //Llamar al contructor del modelo
  5. parent::__construct();
  6. }
  7. public function consulta($pariente)
  8. {
  9. //Preparamos la consulta
  10. $this->db->get_where('Familia', array('IdPadre' => $pariente));
  11. //Generamos la consulta
  12. $query = $this->db->get();
  13. //Devolvemos el resultado
  14. return $query->result();
  15. }
  16. }
  17.  

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
  1. <?php echo $nombreHijo; ?>
  2.  

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

.../controllers/casa.php
Código
  1. class Casa extends CI_Controller {
  2. public function recursive($pariente){ //Esta funcion va ser poder accedida desde ejemplo.com/index.php/casa/recursive
  3. $this->load->model('Base', 'db'); //Cargamos el modelo
  4. $respuesta = $this->db->consulta($pariente); //Genera la consulta
  5. //Es solo un ejemplo, hay que pensar desde aqui :)
  6. while($respuesta)
  7. {
  8. //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.
  9. $datos['nombreHijo'] = $respuesta;
  10. //Cargamos la vista y mostramos
  11. $this->load->view('familia', $data);
  12. }
  13. }
  14. }
  15.  




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
  1.  
  2. public function traer($id_pariente)
  3. {
  4.   // procedimientos
  5.   traer($id);
  6. }
  7.  
  8.  

y me muestra esto:

Código
  1. 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
  1. public function traer($id_pariente)
  2. {
  3.   // procedimientos
  4.   traer($id);
  5. }

es así:

Código
  1. public function traer($id_pariente)
  2. {
  3.   // procedimientos
  4.   $this-> traer($id);
  5. }

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!!