Pagina 19 di 22 primaprima ... 9 17 18 19 20 21 ... ultimoultimo
Visualizzazione dei risultati da 181 a 190 su 217
  1. #181
    Salve ragazzi. Di nuovo qui. In particolare questo messaggio è per andr3a. Come saprete ho provato a rifare la classe di andr3a e ci sono riuscito. Inserendola in uno script, però, mi sono accorto che con i dati inviati via post fa non pochi casini con le categorie. Allora ho provato a riadattare la classe di andr3a per utilizzare il metodo post invece che l'attule get (in realtà ho riadattato l'"interfaccia" più che la classe). Risultato? Anche la classe di andr3a ha fatto casini. Le cose sono due: o sono io che mi sono incasinato oppure la classe ha qualcosa che non va. Pertanto qualcuno potrebbe adattare la classe per utilizzare il metodo post? In questo modo potrei capire dove sta il problema. In particolare quando aggiungo una categoria ne aggiunge due invece di una. La cosa strana è che è come se il metodo venisse richiamato due volte perchè i dati dei flag sx e dx sono corretti. Quindi ho provato ad inserire un echo all'interno del metodo ma la stringa di controllo viene stampata un'unica volta. In pratica il metodo viene eseguito una volta ma il agisce come se vienisse richiamato due volte! Io mi sto incasinando! Mi dareste una mano? Grazie mille! Ciao!

  2. #182
    la classe non si basa ne su GET ne su POST, la classe prende dei parametri in ingresso e lavora su quelli, quindi il problema e' dei parametri di ingresso alla classe ... un intero e' un intero, un nome e' un nome, che questi siano passati da POST, GET, COOKIES, SESSION , non cambia niente ai fini della classe.

    Se la tua interfaccia in get va bene e quella in POST no, significa che sbagli a parsare i valori per quella in post
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #183
    Non lo so andr3a! Il fatto è che anche ricreando la classe con il solo mtodo addNode non funziona. Sto provando di tutto veramente! La query viene eseguita due volte. Il fatto è che solo la query di inserimento del nodo nella tabella tree viene eseguita due volte! Le altre no! Ma il metodo viene richiamato una volta e la pagina non viene ricaricata (ho fatto moltissime prove a riguardo).
    Cmq continuerò a fare prove e ti farò sapere.

  4. #184
    Io avrei una altro paio di domande:

    1. La funzione getNode restituisce il percorso ad un nodo, ma in modo non ordinato. Non servirebbe un ORDER BY tree.sx ASC all'interno della query?

    2. Volendo selezionare solo X livelli di sottorecord (ad esempio figli, o figli e nipoti, e così via) che tipo di condizione bisogna porre sugli indici?

    3. C'è un modo per estrarre il numero di figli di un record? (dx-sx-1)/2 conta tutti i sottorecord...

  5. #185
    la classe fa la gestione delle aggiunte, eliminazioni e spostamenti dei nodi e relativi sottonodi se presenti, tutte le query che vuoi te le fai per conto tuo, non e' lo scopo della classe ... ognuno potrebbe avere piu' tabelle correlate in modo diverso, ognuno potrebbe avere esigenze diverse ... come ti prendi tutte le info per mostrare la gerarchia ti fai per i fatti tuoi la differenza -1 di sx e dx ed eccoti il totale dei sottonodi per totale o per nodo

    il getNode e' solo un di piu' probabilmente non utilissimo, appunto perche' ognuno puo' avere necessita' di sapere cose diverse, la query usata nel file di esempio, se hai l' id del nodo, ti permette di sapere anche sx e dx di quello ... insomma non penso ci siano "metodi universali" , mentre gli spostamenti, con questa classe, sono universali


    Originariamente inviato da scitrek
    2. Volendo selezionare solo X livelli di sottorecord (ad esempio figli, o figli e nipoti, e così via) che tipo di condizione bisogna porre sugli indici?
    WHERE sx >= la sx del nodo che ti interessa
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #186
    Chiedo scusa, ma temo di non aver capito... Io intendevo la possibilità di selezionare solo i figli di un determinato ramo, oppure solo figli e nipoti, e così via, come sarebbe un

    SELECT * FROM tab WHERE parent_id = X

    per l'ALM...

    In secundis chiedevo se era possibile contare il numero dei soli figli anzichè il numero di tutti i sottonodi...

  7. #187
    Il parametro node è l'id del nodo da cui vuoi partire mentre deep, se impostato, limita l'estrazione altrimenti estrae tutto. Ciao!

  8. #188
    Scusa mircov, ma a cosa ti riferivi?

  9. #189
    Devo aver combinato qualche casino! Credevo di aver postato il metodo che serviva a te ma evidentemente mi sbagliavo. Cmq eccolo: lo devi adattare alla classe di andr3a però! Ciao!

    Codice PHP:
    function getUnformattedTree($node $deep false)
                    {
                       
    // Esegue il casting di node
                       
    $node = (int)$node;
                       
                       
    // Definizione della clausola where
                       
    $where "";
                       
                       
    // Se viene passato l'id di un nodo
                       // imposto $where per mostrare solo
                       // quel nodo
                       
    if ($node != 0)
                         {
                            
    // Ottengo i flag dx e sx del nodo
                            
    $flags $this->_getProperties($node);
                            
                            
    // Costruisco la clausola WHERE
                            
    $where "WHERE " $this->_prefix "tree.sx >= {$flags['sx']}
                                        AND " 
    $this->_prefix "tree.dx <= {$flags['dx']}";
                         } 
    // END if $node != 0
                       
                       
    $query "SELECT " $this->_prefix "details.id AS id,
                                        " 
    $this->_prefix "tree.sx AS sx,
                                        " 
    $this->_prefix "tree.dx AS dx,
                                        " 
    $this->_prefix "details.name AS name
                                   FROM " 
    $this->_prefix "tree
                              LEFT JOIN " 
    $this->_prefix "details ON " $this->_prefix "details.node = " $this->_prefix "tree.id
                               
    $where
                               ORDER BY " 
    $this->_prefix "tree.sx ASC";
                       
                       
    // Esecuzione della query
                       // e restituzione del risultato
                       
    $result mysql_query($query) or die (mysql_error());
                       
                       
    // Costruisco l'array da esportare
                       
    $i 0// Contatore dell'indice dell'array
                       
    $lastSx 1// Ultimo valore del flag sx
                       
    $tab 0// numero di ripetizioni del carattere di indentazione
                       
    while ($row mysql_fetch_array($result))
                            {
                               
    /* Inizio procedimento di indentazione */
                               
                               // Assegnazione più casting della variabile $sx
                               
    $sx = (int)$row['sx'];
                               
                               if ( 
    $sx === ( $lastSx ) )
                                 {
                                    
    $tab++;
                                 }
                               else if ( 
    $sx > ( $lastSx ) && $tab >= ( $sx - ( $lastSx ) ) )
                                 {
                                    
    $tab -= $sx - ( $lastSx );
                                 }
                               
    /* Fine procedimento di indentazione */
                               
                               // Controllo se si deve limitare la profondità
                               
    if ($deep !== false)
                                 {
                                    
    // Casting di $deep
                                    
    $deep = (int)$deep;
                                    
                                    
    // Sottraggo 1 a deep
                                    //$deep = $deep -1;
                                    // Bisogna limitare la profondità
                                    
    if ($tab '0' && $tab <= $deep)
                                      {
                                         
    $export[$i]['id'] = $row['id'];
                                         
    $export[$i]['name'] = $row['name'];
                                         
    $export[$i]['sx'] = $row['sx'];
                                         
    $export[$i]['dx'] = $row['dx'];
                                         
    $export[$i]['isLeaf'] = $this->_isLeaf$row['sx'] , $row['dx'] );
                                         
    $export[$i]['level'] = $tab;
                                         
    $i++;
                                      }
                                 }
                               else
                                 {
                                    
    // Non bisogna limitare la profondità
                                    // Assegnazione dei valori all'array da esportare
                                    
    $export[$i]['id'] = $row['id'];
                                    
    $export[$i]['name'] = $row['name'];
                                    
    $export[$i]['sx'] = $row['sx'];
                                    
    $export[$i]['dx'] = $row['dx'];
                                    
    $export[$i]['isLeaf'] = $this->_isLeaf$row['sx'] , $row['dx'] );
                                    
    $export[$i]['level'] = $tab;
                                    
    $i++;
                                 }
                               
                               
                               
    $lastSx $row['sx'];
                            }
                        return 
    $export;
                    } 
    // End getUnformattedTree() 

  10. #190
    Ah, ma tu comunque estrai tutti i record e poi lavori selezionando solo quelli che ti interessano...

    Io volevo sapere se c'è un modo per selezionare solo N livelli di sottorecord, e di ottenere il loro numero senza estrarli...

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.