funcion recursiva de hijo a padre

Iniciado por satan69, 22 Octubre 2010, 00:22 AM

0 Miembros y 3 Visitantes están viendo este tema.

satan69

hola muchachos , quiero saber como puedo hacer , para sacar de un id de un hijo a a todos los siguientes niveles altos  ejemplo

en el foro tenemos

Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP

o tambien

Foro de elhacker.net ->  Programación ->  Desarrollo Web ->  PHP



Programación
id  1
parent 0 


Desarrollo Web
id   2
parent 1


PHP
id 3
parent 2


ahora sacamos el id del foro php, y como hacemos para hacer esa estructura de arriba, yo tenia algo asi


function url_pagina_categoria($link,$hija,$x){
	

    
$sql="SELECT * FROM `contenido` WHERE idcontenido = ".$hija;
    
$result=mysql_query($sql);
if(
$result){

    
$row mysql_fetch_array($result);
	

	
$nombre $row['nombre'];
	
$idcontenido $row['idcontenido'];
	
 
	
$parent $row['parent'];
	
if(
$x==''){
	
$x=0;
	

	
}

if(
$parent==0){
	

	
	
	
	
	
	
	
$nombre str_replace(' ','-',$nombre); 
	
	
	
	
	
	
	
$link[$x] = $nombre.$x;
	
	
	
	
	
	
    }else{
	

	
	
	
	
	
	
	
$x $x+1;
	
	
	
	
	
	
	
$nombre str_replace(' ','-',$nombre); 
	
	
	
	
	
	
	
$link[$x]=$nombre;
	
	
	
	
	
	
	

	
	
	
	
	
	
	
url_pagina_categoria($link,$parent,$x);
	
	
	
	
	
	
	
}
}
//fin del la funcion revisar si existen datos

	
return 
$link;

}



yo lo estaba metiendo en una array porque sale en otro orden ya despues queria ordenarlo con foreach, pero si tienen alguna otra idea de com puedo hacerlo..?



gracias de antemano

~ Yoya ~

#1
Una solución seria usando MYSQL...

En el registro numero 3 de los campos idcontenido, nombre, parent corresponde los datos de la subpagina PHP, también podía crear un campo que contenga los niveles sobre el...

Lo ideal seria retornar un array asociativo...
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.


~ Yoya ~

Creo que estoy mirando hacia otro tema xD.

Tu problema es el array, quieres que salga de forma mas organizada ya que sale desorganizada no?
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

satan69

Cita de: ~ Yoya ~ en 22 Octubre 2010, 01:23 AM
Creo que estoy mirando hacia otro tema xD.

Tu problema es el array, quieres que salga de forma mas organizada ya que sale desorganizada no?



pues cuando se guarda , sale solo el ultimo que se guarda, y no hay mas elementos ese es el problema el segundo ya solucionando este es que sale de orden desendente ejemplo:

PHP -> Desarrollo Web -> Programación  -> Foro de elhacker.net
asi lo quiero
Foro de elhacker.net ->  Programación ->  Desarrollo Web ->  PHP

por eso estaba tratando de hacerlo con array para despues ordenarlo, pero si tienes alguna sugerencia pues bienvenido sea xD

~ Yoya ~

Oka, mira esta función que hice:

Código (php) [Seleccionar]
<?php 

function ordenar($text)
{
   
$resultado preg_split("/\s?->\s?/"$text.' ->');
   foreach(
array_reverse($resultado) as $result)
   {
      
$valor .= $result." -> ";
   }
   
$valor substr($valor,3,strlen($valor)-7);
   return 
$valor;
}

$parent ordenar('PHP -> Desarrollo Web -> Programación  -> Foro de elhacker.net');
echo 
$parent;


 
?>



Salida:
Foro de elhacker.net -> Programación -> Desarrollo Web -> PHP
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

satan69

Cita de: ~ Yoya ~ en 22 Octubre 2010, 12:51 PM
Oka, mira esta función que hice:

Código (php) [Seleccionar]
<?php 

function ordenar($text)
{
   
$resultado preg_split("/\s?->\s?/"$text.' ->');
   foreach(
array_reverse($resultado) as $result)
   {
      
$valor .= $result." -> ";
   }
   
$valor substr($valor,3,strlen($valor)-7);
   return 
$valor;
}

$parent ordenar('PHP -> Desarrollo Web -> Programación  -> Foro de elhacker.net');
echo 
$parent;


 
?>



Salida:
Foro de elhacker.net -> Programación -> Desarrollo Web -> PHP



exactamente lo que iva hacer, pero mi problema es a la hora de sacar los datos de la base de datos..

~ Yoya ~

Citar:silbar:mi problema es a la hora de sacar los datos de la base de datos..

Y cual es tu problema ps, explícate xD
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

satan69

Cita de: ~ Yoya ~ en 22 Octubre 2010, 19:45 PM
Citar:silbar:mi problema es a la hora de sacar los datos de la base de datos..

Y cual es tu problema ps, explícate xD



mira la funcion que tengo, a simplevista uno cree que funciona pero no funciona porque no me guarda el arreglo link, cuando quiero imprimirlo con print_r sale solo el ultimo que entro en el arreglo, ahora si tiene mas de 5 padres deberia de salir los  5 no el ultimo, me entiendes..?

~ Yoya ~

pero ya eso es problema de tu source, muéstrameel source y trata de detallar un poco mas
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.