![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
13/12/2004, 17:57
|
![Avatar de KarlanKas](http://static.forosdelweb.com/customavatars/avatar11549_2.gif) | Moderador extraterrestre | | Fecha de Ingreso: diciembre-2001 Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años, 1 mes 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(' ',$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. |