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

    Creazione classe Paginazione Javascript

    ciao ragazzi,non ho molta dimestichezza con le classi in Javascript,ho creato una classe di paginazione in PHP e ora avrei necessità di trasformarla in Javascript in quanto poi la dovrò richiamare da altri moduli presenti nella stessa pagina quindi volevo sapere come potevo fare..
    La paginazione che ho creato creerà una paginazione di record e di pagine,ossia se il numero di pagine visualizzate supera il numero massimo impostato apparirà un +x che mi visualizzerà le successive...

    La mia classe di paginazione è la seguente,partiamo dal file che la richiama:
    Codice PHP:
    <?php
        $per_page 
    $_GET['pPage']; // risultati per pagina(secondo parametro di LIMIT) 
        
    $maxPages $_GET['mxPage']; // numero di pagine da mostrare oltre il quale inserire il +X
        
        
    $current_page =(!isset($_GET['page'])) ? $pag $pag $_GET['page']; // pagina corrente 
        
        
    $myFunction $_GET['fTr']; // ricevo la funzione dove rimandare la paginazione effettuata(fTr=functionToRemand)


        
    $tot_records $res_count[0]; // numero totale di records (contati con una query)

        
    $p = new Paging// Creo un'istanza della classe Paging
        
        
    $primo $p -> firstLimit($current_page$per_page); // richiamo la funzione che mi recupera il primo LIMIT per la query
        
        //### ESTRAZIONE E STAMPA DEI RECORD ###
        
    include_once("_queryPaginateExtract.php");
        
    //######################################
        
        
    $tot_pages $p -> totalPages($tot_records$per_page); // recupero il numero totale di pagine
        
        
    $numPaginazioni $p -> numPaginazioni($tot_pages$maxPages); // recupero il numero di paginazioni delle pagine
        
        
    if($numPaginazioni <= 1){
            
    $paginazione $p -> singlePagination($tot_pages$current_page$myFunction);
        }
        else{
            
    $ricezionePgg $_GET['rpg'];
            if(
    $ricezionePgg == '' ){
                
    $ricezionePgg 1;
            }
            
    $paginazione $p -> multiplePagination($ricezionePgg$maxPages$tot_pages$current_page$myFunction);
        }
            
            
            
    $output.=" <tr>
                            <td align=\"left\">Pagina 
    $current_page / $tot_pages</td>
                            <td valign=\"bottom\" align=\"right\">
    $paginazione</td>
                      </tr>"
    ;
            echo
    "$output";
            
        
    ?>
    è tutto commentato,si dovrebbe capire abbastanza bene.... Ora passo alla classe di paginazione:

    Codice PHP:
    <?php
    class Paging
    {
        
    //recupero il LIMIT iniziale da cui partire per la query
        
    function firstLimit($current_page$per_page){
        
    $primo = ($current_page 1) * $per_page;
        return 
    $primo;
        }
        
        
    // conto il numero totale di pagine che mi si creano avendo in ingresso
        // il numero totale dei record e il numero di record da visualizzare ogni volta
        
    function totalPages($tot_records$per_page){
            
    $tot_pages ceil($tot_records $per_page); 
            return 
    $tot_pages;
        }
        
        
    //recupero il numero di paginazioni che escono fuori dove andare avanti
        
    function numPaginazioni($tot_pages$maxPages){
        
    // numero di paginazioni dove inserire il +10
        
    $numPaginazioni ceil($tot_pages $maxPages); 
        return 
    $numPaginazioni;
        }
        
        
    // se la paginazionerisulta essere singola richiamo questa funzione senza che si crei il +x -x
        
    function singlePagination($tot_pages$current_page$myFunction){
            
    $paginazione ' | ';
            
    // cicliamo le pagine
            
    for($i=1$i<=$tot_pages$i++){
                if(
    $i==$current_page)
                    
    $paginazione .="$i";
                else
                    
    $paginazione .= "<a href=\"#x\"  onclick=\"$myFunction($i,1);\">$i</a> ";
                    
    //$paginazione .= "<a href=\"?page=$i\" >$i</a> ";
                
    $paginazione .=' | ';
            }
            return 
    $paginazione;
        }
        
        
    // se la paginazione delle pagine risulta essere maggiore di quelle visualizzabili in una volta
        // richiamo questa funzione che mi crea i limiti del for
        
    function multiplePagination($ricezionePgg$maxPages$tot_pages$current_page$myFunction){
        
    $inizio = (($ricezionePgg $maxPages) - ($maxPages-1));
        
    $fine = ($ricezionePgg $maxPages);
            if(
    $fine >= $tot_pages)
                
    $fine $tot_pages;
        
            
    $paginazione ' | ';
            
    // cicliamo le pagine
            
    for($i=$inizio$i<=$fine$i++){
                if(
    $i==$current_page)
                    
    $paginazione .="$i";
                else
                    
    $paginazione .= "<a href=\"#\" onclick=\"$myFunction($i$ricezionePgg);\" >$i</a> ";
                
                
    $paginazione .=' | ';
            }
            
    // se non sono ancora arrivato alla pagina finale allora metto il +10
            
    if($i $tot_pages){
                
    $newRicezionePgg $ricezionePgg +1;
                
    $paginazione .= "<a href=\"#\" onclick=\"$myFunction($i$newRicezionePgg); \" >+$maxPages |</a> ";
            }
            if((
    $inizio $maxPages)>= 0){
                
    $newRicezionePgg $ricezionePgg -1;
                
    $pageToRemand = (($newRicezionePgg $maxPages) - ($maxPages-1));
                
    $paginazione .= "<a href=\"#\" onclick=\"$myFunction($pageToRemand$newRicezionePgg); \">-$maxPages |</a> ";
            }
            return 
    $paginazione;
        }
        
    }
    ?>

  2. #2
    Praticamente io in js volevo inviargli un array contenenti i record che devo paginare quindi posso evitare tutta la parte relativa alle query..

    Fondamentalmente richiamandolo da moduli diversi manderò degli array diversi quindi era per questo che dovevo creare una cosa valida per tutti...

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    se hai già scritto del codice js postalo, se non è cosi penso nessuno ti risponderà...

  4. #4
    cosa intendi per 'paginazione': sarà un mio limite ma non mi è chiaro.

  5. #5
    Praticamente dato un array contenente molti risultati vorrei visualizzarli suddividendoli in pagine.. Effettivamente nn ho scritto niente perché prima di iniziare volevo capire una linea guida da utilizzare per la trasformazione in classe js del mio codice php.. Non capisco se mi conviene direttamente utilizzare delle funzioni invece che una classe.. Grazie molte per il vostro interessamento!!!

  6. #6
    che significa in pagine?
    Un documento html è un documento solo - una "pagina".
    Cosa sarebbero queste pagine? layer, o intendi diversi documenti html autonomi? Non si capisce bene.

    ps come passare le array a javascript te lo ho già detto in passato - se non lo ricordi PHP Pass To Javascript Php Array Associative Array Or Matrix

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Probabilmente ho capito di cosa stai parlando(riguarda cio che mi avevi accennato in un pm tempo fa giusto?), certo che devi cercare di spiegarti un po meglio altrimenti è praticamente impossibile che gli altri capiscano la tua problematica.

    Cmq se ho capito bene quello che vuoi fare è:

    - effettuare una query sul db che recupera tutti i record interessati
    - mostrare nella pagina solo i primi n record
    - mettere sempre nella stessa pagina dei bottoni di "avanti" e "indietro" per presentare i prossimi/precedenti record

    Come ti avevo già detto non ti serve utilizzare gli array. Ti avevo anche suggerito di non utilizzare ajax se non fosse stato necessario un interazione con l'utente(e se non intendi effettuare un reload della pagina). Ma in questo caso c'è e sono appunto i due pulsanti di avanti e indietro. Quindi l'unica cosa che devi fare con javascript, (sempre se non vuoi che non si ricarichi la pagina, altrimenti non devi fare praticamente niente in js) è la chiamata ajax verso php che ti restituirà i precedenti/prossimi record della lista. Sempre nella stessa funzione andrai a posizionare i dati restituiti all'interno della pagina(tabella o div che sia). Nella parte php puoi tu decidere se effettuare ogni volta una query sul db per recuperare i record che ti interessano o effettuare una sola volta questa query e salvare i dati in memoria(sessione) per poi elaborarli ad ogni chiamata ajax.

  8. #8
    no volevo paginare degli elementi all'interno di un DIV almeno questa era la mia idea...
    volevo farlo senza utilizzare AJAX quindi senza nessuna chiamata asincrona verso un file php...

    praticamente io volevo fare che creavo un array javascript contenente degli elementi(e fin qui ok) e poi visualizzarli in un apposito DIV paginandoli... del tipo voglio vederne 4 e poi mettere il link per una nuova pagina se ce ne sono di piu..
    esempio io ho 5 elementi:

    elemento 1
    elemento 2
    elemento 3
    elemento 4

    pagina 1 -2

    cliccando su 2 mi visualizza

    elemento 5

  9. #9
    ho creato delle funzioni in base allo script php di paginazione che avevo scritto però mi trovo in difficoltà...
    codice:
    function Paginazione(per_page,maxPages,myFunction,currentPage,ricezionePgg)
    {
    	currentPage = '' ? 1 : currentPage;	
    	// ricavo il numero di record presenti
    	var totRecords = paginateArray.length;
    	// recupero il primo record da cui partire per l'estrazione
    	var primoRecord = FirstRecord(currentPage,per_page); // primo record da cui iniziare ad estrarre
    	var ultimoRecord = LastRecord(currentPage,per_page); // ultimo record della pagina
    	
    	var arrayResult='';
    	arrayResult += '<table align="center" width="650" >';
    	//**********************INIZIO ESTRAZIONE DEI RISULTATI**************************
    	if(myFunction == 'linkModule'){
    	// estraggo i risultati
    	for (var i=primoRecord; i<ultimoRecord && i<paginateArray.length; i++)
    	{
    		var Link = paginateArray[i]['Link'];
    		var Desc = paginateArray[i]['Descrizione'];
    		
    		arrayResult += '<tr align="center">';
    		arrayResult += '<td>';
    		arrayResult += Link+Desc;
    		arrayResult += '</td>';
    		arrayResult += '</tr>';
    	}
    	}
    	//**********************FINE ESTRAZIONE DEI RISULTATI**************************
    	
    	// recupero il numero totale di pagine in base al numero di record e il numero di record che si vogliono
    	// visualizzare per pagina
    	var totPages = TotalPages(totRecords,per_page); // numero totale di pagine
    	var numPaginazioni = NumPaginazioni(totPages,maxPages); // ricavo il numero di paginazioni di pagine
    	
    	arrayResult += '<tr><td>';
    	if(numPaginazioni <= 1){
    		var paginazione = SinglePagination(totPages,currentPage,myFunction);
    	}
    	else{
    		//if(ricezionePgg == '')
    		//	ricezionePgg = 1;
    		
    		var paginazione = MultiplePagination(ricezionePgg,maxPages,totPages,totPages,currentPage,myFunction);
    	}
    	
    	arrayResult += paginazione;
    	arrayResult += '</td></tr>';
    	arrayResult += '</table>';
    	document.getElementById("skLinkContent").innerHTML=arrayResult;
    	
    }
    
     function SinglePagination(totPages,currentPage,myFunction)
     {
    	 var paginazione = '|';
    	 for(var i=1; i<=totPages; i++){
    	 	if(i == currentPage){
    			paginazione += i;
    		}
    		else{
    			paginazione += ''+i+'';
    			//Paginazione(skLinkArray,4,3,linkModule,1,1);
    		}
    		paginazione += '|';
    	 }
    	 return paginazione;
     }
    io ho un "arrayPaginate" già creato e effettivamente quando richiamo la funzione mi
    visualizza solo il numero di record che gli ho chiesto alla funzione e mi crea le pagine nel modo giusto...però quando la funzione
    "SinglePagination" mi crea effettivamente i link con i numeri delle pagine,al click non mi richiama nuovamente la funzione per estrarmi i record della pagina successiva! eppure nell'onclick il richiamo mi sembra fatto bene...

  10. #10
    Ho risolto

    Che scemo avevo fatto un casino con le variabili!!!! ora lo devo solo rendere più universale...cercherò di inventarmi qualcosa!

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.