Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125

    paginazione in struttura ricorsiva

    Ciao a tutti

    Sto gestendo un albero con categorie e sottocategorie e visualizzo il contenuto a destra dell'albero.

    Il mio scopo e' inserire una paginazione ai risultati delle query.

    Qui mi si apre un grande cruccio.

    Questa e' la mia funzione per visualizzare in modo ricorsivo tutti i prodotti figli.
    Da notare e' che seleziono la cartella la funzione visualizzera' tutti i figli delle sotto cartelle.
    Codice PHP:

        
    public function visualizzaSelez($ownerEl)
        {
            
    $p = new Paging;
            
    // numero massimo di risultati per pagina
            
    $max 10;
            
    $inizio $p->paginaIniziale($max);
            
    $count 0;

            if (
    $ownerEl == null) {
                
    $ownerEl 0;
            }
            else {
                
    $ownerEl = (int) $ownerEl;
            }
            
    $sql sprintf("SELECT Id, name,codice, slave,img,descrizione,prezzo FROM " TREE_TABLE_PREFIX "_elements WHERE ownerEl = ".$ownerEl" AND attivo=1 ORDER BY RAND() ",$ownerEl);

            
    $str FAILED;
            
    $result $this->db->query($sql);
               
            if (
    $result !== false)
            {
                
    $str NULL;
                
            
            
                while (
    $row $this->db->fetchObject($result))
                {
                    
    $id_ret $row->Id;
                 
                            
                    
    $supp NULL;
                    if (
    $row->slave == 1){
                    
                         
    $str .= " <div class='article'>"
                        
    ."<a href='".$_SERVER['PHP_SELF']."?id_child=".$row->Id."' style='float:left;padding-right:15px;'>"
                           
    ." [img]../img/"$row->img."[/img]</a>"
                        
    ." <div style='width:50px;float:left;' >[img]../images/info.png[/img]Dettagli</div>"  
                        
    ."   [img]images/disponibile.png[/img]"
                        
    .

     [b]  "
    $row->codice."[/b]</p>"
                        
    .

     [b]  [url='"
    .$_SERVER[']Id."' >". $row->name."[/url][/b]</p>"
                         ."

    ".
    $row->descrizione. " <div class='prezzo'>€ ". number_format($row->prezzo,2,",",".")."<span> (iva esclusa)</span></div></p>"
                         ."
    </div>";
                    }else{
                        echo 
    $this->visualizzaSelez($id_ret);        
                    }          
                }
            }
            
            return 
    $str;
            
         
         } 
    il db e' semplice
    Id name ownerEl parent(id del padre) slave(0 = cartella e 1 = ramo figlio)

    (ho tralasciato i campi inutili come img...etc...)

    Il mio problema e' che quando seleziono una cartella che contiene altre sottocartelle , vengono chiamate dalla funzione piu' query e non so come applicare il LIMIT alle query in modo da avere un limite su tutti i risultati.

    esempio :

    Animali -->grossi
    | |->orso
    | |->tirannosauro
    |--->piccoli
    |->topo
    |->gatto

    se seleziono "grossi" non si sono problemi , la query viene chiamata 1 sola volta e restituisce 2 risultati
    menre pero' se seleziono "animali" ho 3 query.... La prima restituisce 2 risultati (grossi, piccoli) e poi ricorsivamente la seconda restituisce 2 (orso e tirannosauro) e l'altra 2 (topo e gatto).

    Come faccio a limitare i risultati quando seleziono "animali" ...vorrei uscissero solo 2 risultati a random .... e non come succede ora : orso - tirannosauro - topo - gatto.

    Spero di esser stato chiaro.... anche se ho dei dubbi...


    grazie a chi mi dedichera' un po di tempo..


    ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    devo farmi restituire tutto in un array? intendo un array di oggetti? e poi lavoro con quello?

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    se non hai tantissimi record puoi fare una megaselect e lavorare direttamente sul risultato complessivo, altrimenti metti un LIMIT solo all'ultima query che viene eseguita (che poi mi pare di capire è quella che lavora con salve=1)

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    .... ma come posso capire che e' l'ultima query ?

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    ma non è quella in cui slave=1? o può esserci ulteriore ricorsione? Mi sembra che tu abbia massimo due livelli... o no?

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.