Título: funcion recursiva de hijo a padre Publicado por: satan69 en 22 Octubre 2010, 00:22 am 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 Título: Re: funcion recursiva de hijo a padre Publicado por: ~ Yoya ~ en 22 Octubre 2010, 00:41 am 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... Título: Re: funcion recursiva de hijo a padre Publicado por: satan69 en 22 Octubre 2010, 00:55 am alguna sugerencia de codigo..? por favor
Título: Re: funcion recursiva de hijo a padre Publicado por: ~ 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? Título: Re: funcion recursiva de hijo a padre Publicado por: satan69 en 22 Octubre 2010, 01:33 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 Título: Re: funcion recursiva de hijo a padre Publicado por: ~ Yoya ~ en 22 Octubre 2010, 12:51 pm Oka, mira esta función que hice:
Código
Salida: Código: Foro de elhacker.net -> Programación -> Desarrollo Web -> PHP Título: Re: funcion recursiva de hijo a padre Publicado por: satan69 en 22 Octubre 2010, 18:11 pm Oka, mira esta función que hice: Código
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.. Título: Re: funcion recursiva de hijo a padre Publicado por: ~ 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 Título: Re: funcion recursiva de hijo a padre Publicado por: satan69 en 22 Octubre 2010, 22:31 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..? Título: Re: funcion recursiva de hijo a padre Publicado por: ~ Yoya ~ en 22 Octubre 2010, 23:05 pm pero ya eso es problema de tu source, muéstrameel source y trata de detallar un poco mas
Título: Re: funcion recursiva de hijo a padre Publicado por: satan69 en 23 Octubre 2010, 01:33 am 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 Título: Re: funcion recursiva de hijo a padre Publicado por: ~ Yoya ~ en 23 Octubre 2010, 02:15 am Te sale solo uno porque usas if y necesitas que el ciclo se vaya repitiendo...
Código
Salida: Código: Array Con if Código
Salida: Código
Creo que también tienes un error con el array, aqui un ejemplo: Código
Salida: Código: Array Título: Re: funcion recursiva de hijo a padre Publicado por: satan69 en 23 Octubre 2010, 17:35 pm si te entiendo, pero utilizando funcion recursiva como la que te estaba ensenado..?
Título: Re: funcion recursiva de hijo a padre Publicado por: ~ Yoya ~ en 23 Octubre 2010, 18:23 pm Código
Salida: Código: Array Título: Re: funcion recursiva de hijo a padre Publicado por: satan69 en 23 Octubre 2010, 20:34 pm Código
Salida: Código: Array 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 Título: Re: funcion recursiva de hijo a padre Publicado por: ~ Yoya ~ en 23 Octubre 2010, 21:04 pm Citar ejemplo quiero sacar todos los padres de php? ese es el ejemplo Cada vez entiendo menos tu problema... Ps en vez de crear un source que ya estoy perdido xD, mejor arreglemos tu source..Citar 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..? Citar Te sale solo uno porque usas if y necesitas que el ciclo se vaya repitiendo... Título: Re: funcion recursiva de hijo a padre Publicado por: satan69 en 27 Octubre 2010, 09:44 am Citar ejemplo quiero sacar todos los padres de php? ese es el ejemplo Cada vez entiendo menos tu problema... Ps en vez de crear un source que ya estoy perdido xD, mejor arreglemos tu source..Citar 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..? Citar Te sale solo uno porque usas if y necesitas que el ciclo se vaya repitiendo... mira el primer mensaje que puse, lo que quiero yo es con esa funcion obtener todos los padres meterlos en un array despues ordenarlos... saludos Título: Re: funcion recursiva de hijo a padre Publicado por: ~ Yoya ~ en 27 Octubre 2010, 19:46 pm puedes poner la estructura de la tabla que usas y algunos de los registro que tienen, así puedo testear...
Título: Re: funcion recursiva de hijo a padre Publicado por: Xt3mP en 30 Octubre 2010, 12:04 pm No se si te entendí muy bien pero lo que quieres hacer es que si la estructura es:
1 > 2 > 3 > 4 y quieres mostrar el 3 te muestre 1 > 2 > 3 o bien si quieres mostrar el 4 te muestre 1 > 2 > 3 > 4, es decir que si tienes digamos "3 categorías" y eliges la número 3, te cree como un árbol prácticamente desde la primer categoría hasta la que elegiste? Citar 1 |+2 |++3 Sí es así y es por base de datos (mis ocurrencias son grandes pero funcionan) primero tendría que saber como estan ordenadas tus tablas para ver como haré la petición, bueno, según leí tienes un id y un parent para indicar, entonces una posible solución sería: La función que tienes para obtener el "ID" y ya sea un bucle (digamos, si el parent o el ID esta por orden númerico) que mientras el $i < ID_categoria te tire las anteriores, asi que suponiendo que tenemos 1 = ID 1 2 = ID 2 3 = ID 3 Si elegimos la 3 seria $i = 0 ; $i < 3; $i++ entonces de esta manera obtendras todos los ID anteriores o parents (según te acomodes), ya solo sería cuestión de que los organizes en un array y los muestres. Ahora, si solo te tira el último, puedes utilizar array_push() con el nuevo padre para asi agregarlo al final ya que pues dicha función va agregando valores al final de un array, pero bueno, alomejor al leer esto te da ideas, saludos. |