Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/01/2011, 14:25
Avatar de heberto
heberto
 
Fecha de Ingreso: septiembre-2004
Ubicación: Morelia, Michoacán
Mensajes: 104
Antigüedad: 20 años, 3 meses
Puntos: 0
De acuerdo Respuesta: Cerrar nodos de un XML con PHP y MySQL

Muchas gracias pacmanaman por tu respuesta, no la implemente tal como me la pusiste en el ejemplo, pero en base a ello pude generar el script que me da por resultado el XML que necesito.

Mi aporte con la solución....

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'";
    
//echo $sql;
    
    
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);
    
    
// CREACION DEL DOCUMENTO XML
    
$dom = new DOMDocument('1.0','UTF-8');
        
    
// ESCRITURA DEL NODO RAIZ CON SUS ATRIBUTOS
    
$nodo0 $dom->appendChild($dom->createElement('item'));
    
$atributo_id $dom->createAttribute('id');
    
$texto_id $dom->createTextNode('0');
    
$atributo_id->appendChild($texto_id);
    
    
$atributo_label $dom->createAttribute('label');
    
$texto_label $dom->createTextNode('La ciruela');
    
$atributo_label->appendChild($texto_label);
    
    
$nodo0->appendChild($atributo_id);
    
$nodo0->appendChild($atributo_label);
    
    
// ESCRITURA DE LOS NODOS SECUNDARIOS
    
if($totalRows_rsCategorias 0){
        do{
            for(
$i=0;$i<$nivel_max;$i++){
                
$item $row_rsCategorias['CatNivel'.$i];
                if(
$item != ""){
                    if(!isset(${
'item_nivel_'.$i})) ${'item_nivel_'.$i} = "";
                    if(${
'item_nivel_'.$i} != $item){
                        
$id $row_rsCategorias['IdCatNivel'.$i];
                        ${
'item_nivel_'.$i} = $item;
                        ${
'nodo'.($i+1)} = ${'nodo'.$i}->appendChild($dom->createElement('item'));
                        
                        
$atributo_id $dom->createAttribute('id');
                        
$texto_id $dom->createTextNode($id);
                        
$atributo_id->appendChild($texto_id);
                        
                        
$atributo_label $dom->createAttribute('label');
                        
$texto_label $dom->createTextNode(utf8_encode(${'item_nivel_'.$i}));
                        
$atributo_label->appendChild($texto_label);
    
                        ${
'nodo'.($i+1)}->appendChild($atributo_id);
                        ${
'nodo'.($i+1)}->appendChild($atributo_label);
                    }else{
                        
                    }
                }
            }
        }while(
$row_rsCategorias mysql_fetch_assoc($rsCategorias));
    }
    
    
$dom->formatOutput true;  
    
    
header("Content-type: text/xml");
    echo 
$dom->saveXML();
?>
__________________
Atte.

Ing. Julio Heberto Gonzalez Morales
Certified Macromedia Flash MX Designer