Ver Mensaje Individual
  #3 (permalink)  
Antiguo 14/02/2004, 08:35
Avatar de Lio Tse
Lio Tse
 
Fecha de Ingreso: febrero-2004
Mensajes: 21
Antigüedad: 20 años, 3 meses
Puntos: 0
Cita:
Mensaje Original por Cluster
Creo que deberías definir bien tu modelo de datos para la Base de datos (tabla(s)) que requieras ..
No creo que sea tema de definir tablas... tampoco pretendo reordenar la base de datos... se trata de una "simple" reordenación de array... se trata de una consulta de base de datos que recoge los registros referentes a un tema con

$sql="select id, numsubs, idaparsup from tabla where idtema=".$id;

esto generará una salida de registros rereferidos a un mismo tema y ordenados secuencialmente en función del campo 'id'

yo lo que pretendo es reordenar estos registros, generando un array (llamémosle 'ad') ordenado jerárquicamente en función de la dependencia entre registros que se recoge en los campos idaparsup y numsubs. Creo que la información que dan estos dos es suficiente para crear una rutina de ordenación... he pensado que quizás habría que añadir un campo ordinal que recogiera el orden de subaparatados, de forma que para el tema tendría el valor 0, para el apartado tendría, valor 1, para el subapartado del apartado tendría valor 2... y así sucesivamente... pero creo que estaría almacenando una información superflua y no tengo claro en que facilitaría la rutina de ordenación... principalmente porque no tengo nada claro como hacer esta rutina. Pero a ver si con un ejemplo se entiende un poco mejor que es lo que quiero.
Supongamos que tengo un tema con dos apartados, el primer apartado tiene 3 subaparatados y de éstos el segundo subapartado tiene uno más. Esto en la base de datos se recogería:

id............: 1, 2, 3, 4, 5, 6, 7
numsubs.: 2, 3, 0, 0, 1, 0, 0
idaparsup: 0, 1, 1, 2, 2, 2, 5

en donde he creado el subapartado 1.2.1 después de haber creado el 1.3

la ordenación jerárquica sería
tema: id=1
apartado 1: id=2
subapartado 1.1: id=4
subapartado 1.2: id=5
subapartado 1.2.1: id=7
subapartado 1.3: id=6
apartado 2: id=3

por lo que debería obtener un array 'ad' que de 1 a 7 tomara esos valores, de forma que en un bucle podría hacer la siguiente consulta a la base de datos

$sql="select * from tabla where id="$ad[i];
donde i tomaría los valores de 1 a 7

y esta sería la consulta para mostrar los valores de la tabla de datos.

El problema sigue siendo cómo hacer la rutina de ordenación

Saludos