Foros del Web » Programando para Internet » PHP »

Ayuda en array

Estas en el tema de Ayuda en array en el foro de PHP en Foros del Web. Buenas, Pues tengo un problemilla que no acabo de resolver, Tengo un array pongamos Código PHP: $array [ id ] $array [ id_2 ]  Pues ...
  #1 (permalink)  
Antiguo 15/02/2005, 10:38
 
Fecha de Ingreso: julio-2004
Mensajes: 31
Antigüedad: 19 años, 9 meses
Puntos: 0
Ayuda en array

Buenas,

Pues tengo un problemilla que no acabo de resolver,

Tengo un array pongamos

Código PHP:
$array[id]
$array[id_2
Pues bien, con esos datos... el id es el numero de id del array y el id_2 el id al que pertenece, un ejemplo

id: 1
id_2 : 0

id: 2
id_2 : 0

id: 3
id_2 : 1

id: 4
id_2 : 3

id: 5
id_2 : 2

id: 6
id_2 : 4

Pues bien ahi va el id 1 es raiz, el id 2 tambien, el id 3 es hijo del id 1, el id 4 es hijo del id 3 y este a su vez del 1.

Bueno, nose si es un poco lioso, es la manera que se me ha ocurrido para hacer lo que necesito, categorias y subcategorias, pero si me recomendais una forma mejor... mejor que mejor :)

Bien, el caso es que nose como hacer para relaccionarlos entre si mediante php de forma infinita y queria mostrarlos en una pagina pero nose como.

A ver si podeis ayudarme

Salu2
  #2 (permalink)  
Antiguo 15/02/2005, 11:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Lo quieres hacer con arrays? .. (si vas a "fijar" todo esto como un array podrías usar tal vez una estructura en XML mejor)

Bueno .. una técnica sería usando arrays bidimensionales

$array['dato'][0]="categoria1";
$array['padre'][0]=0;

$array['dato'][1]="categoria2";
$array['padre'][1]=0;

$array['dato'][2]="Sub-categoria de categoria 2";
$array['padre'][2]=1;

$array['dato'][3]="Sub-sub-categoria de categoria 2";
$array['padre'][3]=2;

$array['dato'][4]="categoria 3";
$array['padre'][4]=0;

etc ...

De esta forma .. guardas el "identificador" del padre que pertenece tu dato. Un "padre" 0 indica que cuelga de la "raiz" .. los otros .. de sus respectivos padres.

Un saludo,
  #3 (permalink)  
Antiguo 15/02/2005, 14:30
 
Fecha de Ingreso: julio-2004
Mensajes: 31
Antigüedad: 19 años, 9 meses
Puntos: 0
Buenas,

No me refiero a la manera de guardar los datos en el array... yo los tengo en una base de datos y ahora mismo los tengo guardados en un array como

$cat['id']
$cat['id_padre']

Y puesta la forma de heredar que tu dices, que es la que puse en el primer post.

En lo que no me aclaro... es la forma de escribir en pantalla eso de esta forma

Categoria 1
Categoria 1 -> Sub 1
Categoria 1 -> sub 2 -> sub sub 1
Categoria 2
Categoria 3
Categoria 4
Categoria 4 -> Sub 1

Asi... nose como hacerlo en php para sacar todos los datos... lo he hecho para llegar hasta 3 subcategorias, pero claro... me gustaria una forma que fueran infinitas subcategorias.

Venga, salu2 y gracias por contestar Cluster
  #4 (permalink)  
Antiguo 16/02/2005, 06:18
 
Fecha de Ingreso: julio-2004
Mensajes: 31
Antigüedad: 19 años, 9 meses
Puntos: 0
Buenas,

Alguna sugerencia?

Salu2
  #5 (permalink)  
Antiguo 16/02/2005, 09:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tendrías que haber comentado que usas Base de datos ..

Sobre todo eso hay un montón de "tratados" y soluciones várias (cada una con sus ventajas y desventajas) .. una de ella la que tu mismo "deducistes" y también te propuse yo (considero que para el volumen de ramas que vas a tener no hace falta complicarse con otros métodos).

Puedes ver teoría y ejemplos resueltos en:
http://www.tonymarston.net/php-mysql...structure.html

También puedes ver códigos (classes) ya hechas en sitios como: www.phpclasses.org (busca por "tree").

Un saludo,
  #6 (permalink)  
Antiguo 16/02/2005, 10:15
 
Fecha de Ingreso: julio-2004
Mensajes: 31
Antigüedad: 19 años, 9 meses
Puntos: 0
Buenas,

Gracias de nuevo por tu contestacion Cluster.

He estado mirando ese link... y lo que traba mas que nada es de crear las tablas y tal de las bases de datos, yo todo eso lo tengo hecho... en lo que no me aclaro es en el codigo php que debo usar para que pueda tener subcategorías infinitas... vamos, partiendo de que la consulta de la base de datos la tengo guardad en un array como

$array ['id']
$array ['id_padre']

Eso lo tengo, entonces nose como hacerlo para que de forma infinita pueda sacar las categorias y subcategorías de la forma que ya puse

Categoria 1
Categoria 1 -> Sub 1
Categoria 1 -> sub 2 -> sub sub 1
Categoria 2
Categoria 3
Categoria 4
Categoria 4 -> Sub 1

Saludos
  #7 (permalink)  
Antiguo 16/02/2005, 11:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Repasalo bien .. hay muchooooooooo código creado para cosas como obtener "nodos" y demás .. así puedes ir recorriendo una estructura de ese tipo.

Algo que te puede servir:

1 Hacer tu consulta SQL ordenando por el ID del padre.

Recursivamente tienes que ir mirando ese ID (de registro no el "padre") obtenido si lo tienes en otros registros .. así sucesivamente.

Recursivamente implica tener alguna función que llames a si misma y consultas SQL condicionales bajo ese criterio.

Un saludo,
  #8 (permalink)  
Antiguo 16/02/2005, 11:41
 
Fecha de Ingreso: julio-2004
Mensajes: 31
Antigüedad: 19 años, 9 meses
Puntos: 0
Buenas,

Lo he estado mirando, pero con todo el codigo que hay me hago un lio patatero.

Tan solo te pido una cosa, que me serviría perfectamente ya que para lo que yo lo quiero es tan solo para sacar las categorias y ponerlas en un formulario.

Haber si podias ponerme un codigo en este ejemplo concreto, en php, que valiera para mas y mas subcategorias, que es lo que he estado probando a sacar yo pero no lo consigo

$array ['id'] = 1
$array ['id_padre'] 0

$array ['id'] = 2
$array ['id_padre'] = 1

$array ['id'] = 3
$array ['id_padre'] = 0

$array ['id'] = 4
$array ['id_padre'] = 2

$array ['id'] = 5
$array ['id_padre'] = 4

Salu2 y gracias de nuevo
  #9 (permalink)  
Antiguo 16/02/2005, 11:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. ahí queda tu petición .. a ver si alguien se anima ... Pero una vez más insisto que aclares si quieres hacerlo en el "array" o desde tu BD para que no se hagan lios.

Un saludo,
  #10 (permalink)  
Antiguo 16/02/2005, 11:55
 
Fecha de Ingreso: julio-2004
Mensajes: 31
Antigüedad: 19 años, 9 meses
Puntos: 0
Buenas,

Cluster, yo los datos de las categorias (id , id_padre,nombre...) los tengo en la base de datos... luego de ahi esa es la forma que se me ha ocurrido para clasificarlos, pero como te dije al principio del post, si me recomiendas una mejor y mas facil mejor que mejor...

Venga, a ver si alguien se anima

Salu2
  #11 (permalink)  
Antiguo 16/02/2005, 13:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Te recomendaría buscar en www.phpclasses.org por "tree" .. por ahí o encuentras lo que necesitas o ideas de como hacerlo.

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:31.