Ver Mensaje Individual
  #7 (permalink)  
Antiguo 13/12/2004, 17:57
Avatar de KarlanKas
KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Pues la verdad es que me ha servido! No he entrado aún a mirar lo de los nodos, pero para ver si era lo que quería he hecho unas pruebas y ha funcionado!!

He modificado un poco el código que proponían porque yo tengo un campo con el id y otro con el nombre y el alemán este tan simpático sólo tenía el campo del nombre. Y la función ha quedado así:

Código PHP:
// $parent is the parent of the children we want to see
// $level is increased when we go deeper into the tree,
//        used to display a nice indented tree

function display_children($parent$level) {
   
// retrieve all children of $parent
   
$result mysql_query('SELECT * FROM categorias '.
                          
'WHERE pende="'.$parent.'";');

   
// display each child
   
while ($row mysql_fetch_array($result)) {
       
// indent and display the title of this child

//Aquí hice otro cambio porque quería que mostrara un combo con las opciones

       
echo "<option value='".$row['id']."'>".str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;',$level).$row['nombre']."</option>\n";

       
// call this function again to display this
       // child's children
       
display_children($row['id'], $level+1);
   }

Básicamente lo que hace es lo que no quería hacer (jeje). Hace varias consultas: va id por ide viendo los que dependen de él y los va poniendo debajo. Es muy ingenioso en su forma! Se basa en que ninguna subcategoría va a tener un id anterior a la categoría que lo envuelve (como es lógico ya que para meter una cosa dentro de otra debes hacer antes el continente que el contenido).

Y luego en el código de la página pongo:
Código PHP:
<select name="categoria">
<option>Seleccione la categoría</option>
<?echo "<select name='categoria'>";
display_children('',0);
?>
</select>
En cuanto mire lo de los nodos os comento
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.