Saludos a todos!
Estoy desarrollando un pequeño sistema de inventarios en Flex, PHP y MySQ en el cual tengo en mi base de datos una tabla con las categorias de los articulos registrados en dicho inventario. En la misma tabla tengo la relacion de las subcategorias de cada categoria. He desarrollado un script de PHP el cual me debe de generar un XML con las categorias registradas en el sistema. Dicho XML será leido por Flex y desplegarlo en un componente Tree. Basicamente el problema lo tengo al momento de querer cerrar los nodos del XML en mi script de PHP alguien me puede ayudar en esto por favor? ya le di muchas vueltas y me he ciclado y no saco una solución. De antemano muchas gracias por su atención. Anexo el codigo y estructura de la BD
Tabla en mi base de datos...
Código:
CREATE TABLE `Categorias` (
`IdCategoria` double NOT NULL AUTO_INCREMENT,
`IdCatPadre` double NOT NULL,
`Categoria` varchar(100) NOT NULL,
PRIMARY KEY (`IdCategoria`)
)
El código de mi archivo PHP. La conexion con la BD la hago en el archivo conexion.php
En este codigo solo consulto 3 niveles de profundidad. ¿Es posible hacer la busqueda de forma dinamica?
Código PHP:
<?php require_once('../Connections/conexion.php'); ?>
<?php
$nivel_max = 3;
$campos = "";
for($i=0;$i<$nivel_max;$i++){
$campos.= "t$i.IdCategoria AS IdCatNivel$i,t$i.categoria AS CatNivel$i,t$i.IdCatPadre AS IdPadreNivel$i";
if($i!=$nivel_max-1){
$campos.= ",";
}
}
$sql = "SELECT $campos ";
$sql .= "FROM Categorias AS t0 ";
for($i=1;$i<$nivel_max;$i++){
$sql .= "LEFT JOIN Categorias AS t$i ON t$i.IdCatPadre = t".($i-1).".IdCategoria ";
}
$sql .= "WHERE t0.IdCatPadre = '0'";
mysql_select_db($database_conexion, $conexion);
$query_rsCategorias = $sql;
$rsCategorias = mysql_query($query_rsCategorias, $conexion) or die(mysql_error());
$row_rsCategorias = mysql_fetch_assoc($rsCategorias);
$totalRows_rsCategorias = mysql_num_rows($rsCategorias);
$xml = "";
$error = 0;
$temp = array();
for($i=0;$i<$nivel_max;$i++){
$temp[$i] = "";
$cierre[$i] = true;
}
if($totalRows_rsCategorias > 0){
do{
for($i=0;$i<$nivel_max;$i++){
$item = $row_rsCategorias['CatNivel'.$i];
$sangria = "";
for($j=0;$j<$i;$j++){
$sangria.= "\t";
}
if($item != ""){
if($temp[$i] != $item){
$temp[$i] = $item;
$xml.= "\n".$sangria."<item label=\"".$temp[$i]."\">";
if($i == ($nivel_max-1)){
$xml.= "</item>";
}else{
}
}else{
}
}else{
$xml.= "</item>";
break;
}
}
}while($row_rsCategorias = mysql_fetch_assoc($rsCategorias));
}else{
$error = 1;
}
header("Content-type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
echo $xml;
?>
y este es el resultado que me genera....
Código:
<?xml version="1.0" encoding="iso-8859-1"?>
<item label="Ropa">
<item label="Tops">
<item label="Blusas"></item>
<item label="Playeras"></item>
<item label="Chaleco"></item>
<item label="Faldas">
<item label="Faldas cortas"></item>
<item label="Faldas largas"></item>
<item label="Vestidos">
<item label="Cocktail"></item>
<item label="Casual"></item>
<item label="Pantalones y Shorts">
<item label="Pesquero"></item>
<item label="Jeans"></item>
<item label="Chamarras y abrigos">
<item label="Saco"></item>
<item label="Blazer"></item>
<item label="Zapatos">
<item label="Botas"></item>
<item label="Tacones"></item>
<item label="Sandalias"></item>
<item label="Plataformas"></item>
<item label="Suecos"></item>
<item label="Flats"></item>
<item label="Accesorios">
<item label="Cabello"></item>
<item label="Aretes"></item>
<item label="Collares"></item>
<item label="Cinturón"></item>
<item label="Pulseras"></item>
<item label="Anillos"></item>
<item label="Bolsas"></item>
<item label="Productos únicos"></item>
<item label="Arte">
<item label="Pinturas"></item>
<item label="Esculturas"></item>
<item label="Fotografía"></item>