elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 04:10  


Tema destacado: Suscripción al boletín mensual de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP
| | | |-+  funcion recursiva de hijo a padre
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: funcion recursiva de hijo a padre  (Leído 2,867 veces)
satan69


Desconectado Desconectado

Mensajes: 341



Ver Perfil
funcion recursiva de hijo a padre
« en: 22 Octubre 2010, 00:22 »

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


En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #1 en: 22 Octubre 2010, 00:41 »

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


« Última modificación: 22 Octubre 2010, 00:44 por ~ Yoya ~ » En línea

satan69


Desconectado Desconectado

Mensajes: 341



Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #2 en: 22 Octubre 2010, 00:55 »

alguna sugerencia de codigo..? por favor
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #3 en: 22 Octubre 2010, 01:23 »

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?
En línea

satan69


Desconectado Desconectado

Mensajes: 341



Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #4 en: 22 Octubre 2010, 01:33 »

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
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #5 en: 22 Octubre 2010, 12:51 »

Oka, mira esta función que hice:

Código
<?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:
Código:
Foro de elhacker.net -> Programación -> Desarrollo Web -> PHP
En línea

satan69


Desconectado Desconectado

Mensajes: 341



Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #6 en: 22 Octubre 2010, 18:11 »

Oka, mira esta función que hice:

Código
<?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:
Código:
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..
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #7 en: 22 Octubre 2010, 19:45 »

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
En línea

satan69


Desconectado Desconectado

Mensajes: 341



Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #8 en: 22 Octubre 2010, 22:31 »

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..?
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #9 en: 22 Octubre 2010, 23:05 »

pero ya eso es problema de tu source, muéstrameel source y trata de detallar un poco mas
En línea

satan69


Desconectado Desconectado

Mensajes: 341



Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #10 en: 23 Octubre 2010, 01:33 »

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;
}

tonces en teorioa yo tendria que hacer esto

$link =url_pagina_categoria($link,3,$x)
aqui necesito que me regrese un array donde con el codigo que tengo de ordenar o tambien puedo usar el que tu me diste, lo ordeno y creo :


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
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #11 en: 23 Octubre 2010, 02:15 »

Te sale solo uno porque usas if y necesitas que el ciclo se vaya repitiendo...


Código
<?php 
 
$connect = mysql_connect('127.0.0.1', 'root', 'password');
mysql_select_db('ejemplo', $connect);
 
$sql = mysql_query('select id from ejemplo');
 
while($row = mysql_fetch_array($sql, MYSQL_NUM))
  {
     print_r($row);
  }
 
?>

Salida:
Código:
Array
(
    [0] => 1
)
Array
(
    [0] => 2
)
Array
(
    [0] => 3
)

Con if
Código
<?php 
 
$connect = mysql_connect('127.0.0.1', 'root', 'pass');
mysql_select_db('ejemplo', $connect);
 
$sql = mysql_query('select id from ejemplo');
 
if($row = mysql_fetch_array($sql, MYSQL_NUM))
  {
     print_r($row);
  }
 
?>

Salida:
Código
Array
(
   [0] => 1
)


Creo que también tienes un error con el array, aqui un ejemplo:
Código
<?php 
 
$array[] = 'asa';
$array[] = 5656;
$array[] = 1515.545;
 
print_r($array);
 
?>

Salida:

Código:
Array
(
    [0] => asa
    [1] => 5656
    [2] => 1515.545
)
En línea

satan69


Desconectado Desconectado

Mensajes: 341



Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #12 en: 23 Octubre 2010, 17:35 »

si te entiendo, pero utilizando funcion recursiva como la que te estaba ensenado..?
« Última modificación: 23 Octubre 2010, 18:20 por satan69 » En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #13 en: 23 Octubre 2010, 18:23 »

Código
<?php 
 
$connect = mysql_connect('127.0.0.1', 'root', 'pass');
mysql_select_db('ejemplo', $connect);
 
function ejemplo_while($str){
$sql = mysql_query($str);
while($row = mysql_fetch_array($sql, MYSQL_NUM))
  {
     $result[] = $row[0];
  }
  return $result;
}
 
$sql = ejemplo_while('select id from ejemplo');
print_r($sql);
 
 
?>

Salida:
Código:
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)
En línea

satan69


Desconectado Desconectado

Mensajes: 341



Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #14 en: 23 Octubre 2010, 20:34 »

Código
<?php 
 
$connect = mysql_connect('127.0.0.1', 'root', 'pass');
mysql_select_db('ejemplo', $connect);
 
function ejemplo_while($str){
$sql = mysql_query($str);
while($row = mysql_fetch_array($sql, MYSQL_NUM))
  {
     $result[] = $row[0];
  }
  return $result;
}
 
$sql = ejemplo_while('select id from ejemplo');
print_r($sql);
 
 
?>

Salida:
Código:
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)



gracias por todos los mensajes, pero esa funcion no es recursiva, mira le ejemplo que te puse

id  1
Programación
parent 0


id  2
Desarrollo Web
parent 1


id 3
PHP
parent 2


ejemplo quiero sacar todos los padres de php? ese es el ejemplo
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Calcular potencia con una función recursiva
Programación C/C++
DickGumshoe 4 328 Último mensaje 8 Abril 2012, 18:24
por DickGumshoe
Busqueda recursiva
Programación C/C++
s3tH 7 268 Último mensaje 6 Mayo 2012, 02:46
por david_BS
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines