elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


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


Desconectado Desconectado

Mensajes: 341



Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #10 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


En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



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

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


Código
  1. <?php
  2.  
  3. $connect = mysql_connect('127.0.0.1', 'root', 'password');
  4. mysql_select_db('ejemplo', $connect);
  5.  
  6. $sql = mysql_query('select id from ejemplo');
  7.  
  8. while($row = mysql_fetch_array($sql, MYSQL_NUM))
  9.   {
  10.      print_r($row);
  11.   }
  12.  
  13. ?>

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

Con if
Código
  1. <?php
  2.  
  3. $connect = mysql_connect('127.0.0.1', 'root', 'pass');
  4. mysql_select_db('ejemplo', $connect);
  5.  
  6. $sql = mysql_query('select id from ejemplo');
  7.  
  8. if($row = mysql_fetch_array($sql, MYSQL_NUM))
  9.   {
  10.      print_r($row);
  11.   }
  12.  
  13. ?>

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


Creo que también tienes un error con el array, aqui un ejemplo:
Código
  1. <?php
  2.  
  3. $array[] = 'asa';
  4. $array[] = 5656;
  5. $array[] = 1515.545;
  6.  
  7. print_r($array);
  8.  
  9. ?>

Salida:

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


En línea

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


Desconectado Desconectado

Mensajes: 341



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

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

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



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

Código
  1. <?php
  2.  
  3. $connect = mysql_connect('127.0.0.1', 'root', 'pass');
  4. mysql_select_db('ejemplo', $connect);
  5.  
  6. function ejemplo_while($str){
  7. $sql = mysql_query($str);
  8. while($row = mysql_fetch_array($sql, MYSQL_NUM))
  9.   {
  10.      $result[] = $row[0];
  11.   }
  12.   return $result;
  13. }
  14.  
  15. $sql = ejemplo_while('select id from ejemplo');
  16. print_r($sql);
  17.  
  18.  
  19. ?>

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

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


Desconectado Desconectado

Mensajes: 341



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

Código
  1. <?php
  2.  
  3. $connect = mysql_connect('127.0.0.1', 'root', 'pass');
  4. mysql_select_db('ejemplo', $connect);
  5.  
  6. function ejemplo_while($str){
  7. $sql = mysql_query($str);
  8. while($row = mysql_fetch_array($sql, MYSQL_NUM))
  9.   {
  10.      $result[] = $row[0];
  11.   }
  12.   return $result;
  13. }
  14.  
  15. $sql = ejemplo_while('select id from ejemplo');
  16. print_r($sql);
  17.  
  18.  
  19. ?>

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

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #15 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...
En línea

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


Desconectado Desconectado

Mensajes: 341



Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #16 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
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #17 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...
« Última modificación: 27 Octubre 2010, 19:55 pm por ~ Yoya ~ » En línea

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

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: funcion recursiva de hijo a padre
« Respuesta #18 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.
En línea

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

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines