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

    [php] paginazione non funziona

    ciao,
    non sono riuscito ancora a risolvere il problema della paginazione che in locale funziona mentre sul server no...
    in pratica cosa succede: quando uso una condizione nel motore di ricerca la funzione mi restituisce il numero di record trovati, ad esempio 20 su 50 e mi crea correttamente il numero di pagine. quando però clicco sulla pagina 2, mi perde il filtro e mi elenca tutti i 50 record presenti nel DB.
    La cosa strana è che in locale mi funziona perfettamente!

    le due differenze che ho notato tra localhost e il server è che sul server avevo register_globals in on.
    Ho fatto modificare la configurazione all'hoster, ma il problema persiste.
    la seconda differenza è che in locale php gira su windows, mentre sul server ho linux.

    non so più cosa fare...illuminatemi vi prego

    la funzione per la paginazione:
    Codice PHP:
    function paging($query,$x_pag=10,$num_links=5)
    {
        
    //conteggio i record presenti
        
    $resource =  mysql_query($query);
        if(!
    $resource) { echo 'Si è verificato un errore con la query inserita.
     L\'errore restituito è: [i]'
    mysql_error(),'[/i]'; exit; }
        
    $righe mysql_num_rows($resource);
        if (
    $righe == 0){ return false; } //non ci sono record

        
    echo "<div class=\"risultato\">\n

    Sono stati trovati <span class=\"col_res\">"
    .$righe."</span> risultati</p></div>\n<table class=\"tabella\">\n";

        
    //calcolo il numero di pagine necessarie per visualizzare i dati
        
    $numpages ceil($righe/$x_pag);

        
    //ottengo il numero della pagina corrente, se manca lo imposto ad 1
        
    $pag = isset($_GET['pag'])? $_GET['pag'] : 1;

        
    //imposto il primo estremo del limit
        
    $da = ($pag-1) * $x_pag;

        
    //appendo il limit alla query originaria
        
    $query .= " LIMIT $da,$x_pag";

        
    //gesisco la propagazione della query string ricopiandola tutta in una variabile che appenderò ai link
        
    $querystring '';
        foreach(
    $_GET as $k => $v)
            {
                if (
    $k != 'pag'//escludo la variabile usata dalla paginazione ^_^
                    
    $querystring .= "&".$k."=".$v;
            }

        
    //inizializzo una stringa vuota in cui appenderò l'output del menu'
        
    $menu '';

        
    //SERIE DI CONDIZIONALI IN CASCATA PER COSTRUIRE IL MENU'

        //se il numero di pagine necessarie è minore del massimo numerodi link richiesto, allora li stampo tutti senza problemi...
        
    if($numpages <= $num_links)
            {
                if(
    $numpages )//...a meno che non basti la sola pagina corrente
                    
    {
                        for (
    $pagina 1$pagina <= $numpages$pagina++)
                            {
                                if (
    $pagina == $pag)
                                    
    $menu .= "<span class=\"pag_selected\"> $pagina </span> ";
                                else
                                    
    $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
                            }
                    }
            }

        
    //se la pag corrente è tra le prime $num_links/2 --> stampo i primi $nun_links link
        
    else if($pag <= ceil($num_links/2))
            {
                for (
    $pagina=1$pagina<=$num_links$pagina++)
                    {
                        if (
    $pagina == $pag)
                            
    $menu .= "<span class=\"pag_selected\"> $pagina </span> ";
                        else
                            
    $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
                    }
                
    //link diretto all'ultima pagina
                
    $menu .= "<a class=\"pag_link\" href=\"?pag={$numpages}{$querystring}\" title=\"Vai all'ultima pagina\"> >> </a> ";
            }

        
    //se la pag corrente è tra le ultime $num_links/2 --> stampo gli ultimi $nun_links link
        
    else if($pag > ($numpages-ceil($num_links/2)))
            {
                
    //link diretto alla prima pagina
                
    $menu .= "<a class=\"pag_link\" href=\"?pag=1{$querystring}\" title=\"Vai alla prima pagina\"> << </a> ";

                for (
    $pagina=$numpages-$num_links+1$pagina<=$numpages$pagina++)
                    {
                        if (
    $pagina == $pag)
                            
    $menu .= "<span class=\"pag_selected\"> $pagina </span> ";
                        else
                            
    $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
                    }
            }

        
    //Altrimenti la pagina corrente è una delle pagine centrali --> stampo i $nun_links/2 link prima ed $nun_links/2 link dopo
        
    else
            {
                
    //link diretto alla prima pagina
                
    $menu .= "<a class=\"pag_link\" href=\"?pag=1{$querystring}\" title=\"Vai alla prima pagina\"> << </a> ";

                for (
    $pagina $pag-ceil($num_links/2-1); $pagina <= $pag+ceil($num_links/2-1); $pagina++)
                    {
                        if (
    $pagina == $pag)
                            
    $menu .= "<span class=\"pag_selected\"> $pagina </span> ";
                        else
                            
    $menu .= "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> ";
                    }

                
    //link diretto all'ultima pagina
                
    $menu .= "<a class=\"pag_link\" href=\"?pag={$numpages}{$querystring}\" title=\"Vai all'ultima pagina\"> >> </a> ";
            }

     
    //restituisco il risultato della query, e l'output del menu'
     
    return array(mysql_query($query),$menu);

    vi ringrazio

  2. #2
    L'unica cosa che mi viene in mente è che linux è case sensitive, io a volte ho avuto problemi con i nomi delle variabili e i nomi delle tabelle del db (controlla le maiuscole/minuscole) prova a controllare queste cose altrimenti non posso far altro che consigliarti di seguire il link che ho in firma

  3. #3

    una volta eseguita la query ( che non può non funzionare ) passo tutto alla funzione e ci pensa lei a fare il tutto...
    è come se la propagazione della query string non funzionasse, anche se me la visualizza in modo corretto....

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.