Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Problema generazione XML ciclo dati DB

    Ciao a tutti e grazie in anticipo!
    Ho una tabella del DB così formata:

    ____ id____|___name___|__parentId__|__owner__|
    1 | gruppo1 | 0 | |
    2 | gruppo2 | 1 | |
    3 | gruppo3 | 1 | |
    4 | gruppo4 | 2 | |



    Una semplice gerarchia, gruppo1 è il principale, gruppo 2 e gruppo3 appartengono a gruppo 1 così via.
    Io vorrei riportare questa struttura in un XML.
    La mia funzione qui sotto ha qualche problemino nel chiudere i tag, la struttura dell'XML dovrebbe essere questa:

    Codice PHP:
    <GRUPPO>
    <
    ID>5</ID>
    <
    NAME>Gruppo 1</NAME>
    <
    PARENT>0</PARENT>
    <
    OWNER></OWNER>
    <
    CHILDREN>
              <
    GRUPPO>
               <
    ID>2</ID>
               <
    NAME>Gruppo 2</NAME>
               <
    PARENT>1</PARENT>
               <
    OWNER></OWNER>
               <
    CHILDREN>
               (
    non ne ha)
               </
    CHILDREN>
               </
    GRUPPO>

              <
    GRUPPO>
               <
    ID>3</ID>
               <
    NAME>Gruppo 3</NAME>
               <
    PARENT>1</PARENT>
               <
    OWNER></OWNER>
               <
    CHILDREN>
               (
    non ne ha)
               </
    CHILDREN>
               </
    GRUPPO>
    </
    CHILDREN>
    </
    GRUPPO>

    <
    GRUPPO>
               <
    ID>4</ID>
               <
    NAME>Gruppo 4</NAME>
               <
    PARENT>0</PARENT>
               <
    OWNER></OWNER>
               <
    CHILDREN>
               (
    non ne ha)
               </
    CHILDREN>
    </
    GRUPPO

    sbaglio qualcosa nella chiusura dei tag e non trovo l'errore...
    AIUTATEMI PLEASE
    ecco il mio script!


    Codice PHP:
    function get_organigramma($id=0){

                
    $query $this->db->query('SELECT * FROM groups WHERE id>4 AND parentId='.$id);
                
    //debug
                //echo " ha ".$query->num_rows." figli.
    ";
                echo  "
    parentId=".$id."  ->  trovati ".$query->num_rows." record
    ";
            
            if(
    $query->num_rows > 0) {
                    foreach(
    $query->result() as $row){
                        
    $this->xml .= "<GRUPPO>\n";
                        
    $this->xml .= "<ID>".$row->id."</ID>\n";
                        
    $this->xml .= "<NAME>".$row->name."</NAME>\n";
                        
    $this->xml .= "<PARENT>".$row->parentId."</PARENT>\n";
                        
    $this->xml .= "<OWNER>".$row->owner."</OWNER>\n";
                        
    $this->xml .= "<CHILDREN>\n";
                        
    $hasChildren = $this->has_children($row->id);
                        //debug
                        //echo "
    il Gruppo ".$row->id;
                        if (
    $hasChildren){
                            
    $this->childrenCounter++;
                            
    $this->xml .= $this->get_organigramma($row->id);
                        }else{
                            
    $this->xml .= "</CHILDREN>\n";
                            
    $this->xml .= "</GRUPPO>\n";
                        }
                    }
                    
                    for(
    $i=0;$i<$this->childrenCounter;$i++){
                            
    $this->xml .= "</CHILDREN>\n</GRUPPO>\n";
                    }
                    //
    $this->childrenCounter = 0;
                    
    $this->xml .= "-----------------------------------------------------------\n";
                    return 
    $this->xml;
            }else {
                    return false;
            }
        }
        
        function has_children (
    $id) {
            
    $query = $this->db->query('SELECT * FROM groups WHERE parentId='.$id);
            if(
    $query->num_rows > 0) {
                    return true;
            }else{
                    // gestire l'errore - rollback ?
                    return false;
            }
        } 
    Ho capito che quando poni una domanda e nessuno ti sa rispondere, è arrivato il momento in cui sei tu a poter dare delle risposte agli altri...

  2. #2
    Soluzione trovata!
    Grazie lo stesso:

    Codice PHP:
        function get_organigramma($id=0){

            
    $query $this->db->query('SELECT * FROM groups WHERE id>4 AND parentId='.$id);
            if(
    $query->num_rows 0) {
                    foreach(
    $query->result() as $row){
                        
    $this->xml .= "<GRUPPO>";
                        
    $this->xml .= "<ID>".$row->id."</ID>";
                        
    $this->xml .= "<NAME>".$row->name."</NAME>";
                        
    $this->xml .= "<PARENT>".$row->parentId."</PARENT>";
                        
    $this->xml .= "<OWNER>".$row->owner."</OWNER>";
                        
    $this->xml .= "<CHILDREN>";
                        
    $this->has_children($row->id);
                        
    $this->xml .= "</CHILDREN>";
                        
    $this->xml .= "</GRUPPO>";
                    }
                    return 
    $this->xml;
            }else {
                    return 
    false;
            }
        }
        
        function 
    has_children ($id) {
            
    $query $this->db->query('SELECT * FROM groups WHERE parentId='.$id);
            if(
    $query->num_rows 0) {
                foreach(
    $query->result() as $row){
                        
    $this->xml .= "<GRUPPO>";
                        
    $this->xml .= "<ID>".$row->id."</ID>";
                        
    $this->xml .= "<NAME>".$row->name."</NAME>";
                        
    $this->xml .= "<PARENT>".$row->parentId."</PARENT>";
                        
    $this->xml .= "<OWNER>".$row->owner."</OWNER>";
                        
    $this->xml .= "<CHILDREN>";
                        
    $this->has_children($row->id);
                        
    $this->xml .= "</CHILDREN>";
                        
    $this->xml .= "</GRUPPO>";
                }
            }else{
                    return 
    false;
            }
        } 
    Ho capito che quando poni una domanda e nessuno ti sa rispondere, è arrivato il momento in cui sei tu a poter dare delle risposte agli altri...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.