Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/02/2013, 05:43
Avatar de konoyek
konoyek
 
Fecha de Ingreso: julio-2007
Mensajes: 268
Antigüedad: 16 años, 10 meses
Puntos: 0
Ordenar Categorias MySql

Hola a todos

Quiero organizar unas categorias como lo maneja wordpress donde tenga una jerarquia. actualmente tengo las siguientes tablas:

categorias
ID / Nombre / Descripcion / Estado

categorias_relacion
ID / principal / secundaria

Para tener una relacion de cada categoria con cada una, en la tabla categorias_relacion indico los Id para saber a donde pertenece cada uno.


la idea de esto es podar visualizar todas las categorias que desee sin problema alguno, el codigo que tengo actulamente es:

Código PHP:
$i=0;
$sql2="SELECT * FROM categoria_relacion ORDER BY principal ASC";
$res2=mysql_query($sql2);

while($row=mysql_fetch_assoc($res2) ){
$prin=$row['principal'];

$sql4="SELECT * FROM categoria WHERE estado=1 AND ID=$prin ORDER BY Nombre ASC";
$res4=mysql_query($sql4);
while($row=mysql_fetch_assoc($res4) ){
$id=$row['ID'];
$nombre=$row['Nombre'];
$descri=$row['descripcion'];
$estado=$row['estado'];
$conteo=0;

$i++;
if (($i%2)==0) {
$class="even";
}
else{
    $class="odd";
}


echo '<tr class="'.$class.'">
    <td>'.$nombre.' // '.$prin.'</td>
    <td>'.$descri.'</td>
    <td>'.$conteo.'</td>'; ?>
    <td>
<form  action="<?php echo $_SERVER['PHP_SELF']; ?>" name="edit" method="post">
<input name="editar" title="Editar" type="image" src='<? echo $url?>imagenes/edit.png' value="<? echo $num?>" />
<input type="hidden" name="num" value="<? echo $num;?>" />
<input type="hidden" name="editar"/>
</form>
</td>

</tr>
<?

$sql
="SELECT * FROM categoria_relacion WHERE principal=$id ORDER BY secundaria ASC";
$res=mysql_query($sql);

while(
$row=mysql_fetch_assoc($res) ){
$prin=$row['principal'];
$sec=$row['secundaria'];


$sql1="SELECT * FROM categoria WHERE estado=1 AND ID=$sec ORDER BY Nombre ASC";
$res1=mysql_query($sql1);
while(
$row=mysql_fetch_assoc($res1) ){
$id=$row['ID'];
$nombre=$row['Nombre'];
$descri=$row['descripcion'];
$estado=$row['estado'];
$conteo=0;



echo 
'<tr class="'.$class.'">
    <td> - '
.$nombre.' / '.$prin.' - '.$sec.'</td>
    <td>'
.$descri.'</td>
    <td>'
.$conteo.'</td>'?>
    <td>
<form  action="<?php echo $_SERVER['PHP_SELF']; ?>" name="edit" method="post">
<input name="editar" title="Editar" type="image" src='<? echo $url?>imagenes/edit.png' value="<? echo $num?>" />
<input type="hidden" name="num" value="<? echo $num;?>" />
<input type="hidden" name="editar"/>
</form>
</td>

</tr>

<?
}

}
}
}
echo 
"Total resultados: <b>$i</b>";
?>
El resultado que tengo es:

Cocinas
- Astra
- Iride
- prueba 1

Astra
- Cocinas

Cocinas
- Moderno


La Idea es obtener lo siguiente:


Cocinas
- Astra
-- Cocinas
--- Moderno
- Iride
- prueba 1