• User Newbie

    Paginazione php

    Salve ragazzi, ho un problema con la paginazione, il codice attuale che funziona nelle mie pagine è il seguente:

    <?php

    $paginazione = "Pagine totali: " . "<strong>".$tot_pages . "</strong> <br />
    <br />
    ";
    for($i = 1; $i <= $tot_pages; $i++)
    {
    if($i == $current_page)
    {
    $paginazione .= "<strong>".$i . "</strong> ";
    }
    else {
    if($page < 10)
    {
    $uri=$_SERVER['REQUEST_URI'];
    $pagina=substr ($uri, -10, 10);
    if ($pagina!='index.html'){
    $uri2=substr_replace($uri, $i, -6, 1);
    $paginazione .= "<a href="$uri2" title="Vai alla pagina $i">$i</a> ";
    }
    else{
    $uri2=substr_replace($uri, $i, -12, 1);
    $paginazione .= "<a href="$uri2" title="Vai alla pagina $i">$i</a> ";
    }
    }
    else
    {
    $uri=$_SERVER['REQUEST_URI'];
    $pagina=substr ($uri, -10, 10);
    if ($pagina!='index.html'){
    $uri2=substr_replace($uri, $i, -7, 2);
    $paginazione .= "<a href="$uri2" title="Vai alla pagina $i">$i</a> ";
    }
    else{
    $uri2=substr_replace($uri, $i, -13, 2);
    $paginazione .= "<a href="$uri2" title="Vai alla pagina $i">$i</a> ";
    }
    }
    }
    }
    $paginazione .= "";
    ?>

    In pratica il risultato è
    Pagine totali: 6
    1 2 3 4 5 6

    mentre il cliente mi chiede di avere una cosa del genere:
    ** Pagine totali(6): 1 **2 3 successive >>

    e quando si fa click su "successive >>" dovrebbe stampare una cosa tipo

    Pagine totali(6): << precedenti 2 3 4 successive >>

    fino ad arrivare all'ultima pagina ed ottenere questo

    Pagine totali(6): << precedenti 4 5 6

    Come dovrei modificare il codice per ottenere il secondo esempio?
    Grazie anticipatamente.


  • User Attivo

    Tutto tratto da precedente post.
    Paginazione php,
    [PHP]

    <?php
    // definiamo una costante per la pagina corrente
    define("SELF", $_SERVER['PHP_SELF']);
    // definiamo la classe
    class Paging
    {
    // definiamo la pagina di partenza
    function paginaIniziale($max_row)
    {
    if ((!isset($_GET['p'])) || ($_GET['p'] == "1"))
    {
    $parti_da = 0;
    $_GET['p'] = 1;
    }else{
    $parti_da = ($_GET['p']-1) * $max_row;
    }
    return $parti_da;
    }
    // contiamo le pagine e stabiliamo quanti records devono essere impaginati
    function contaPagine($conta, $max_row)
    {
    $pgg = (($conta % $max_row) == 0) ? $conta / $max_row : floor($conta / $max_row) + 1;
    return $pgg;
    }
    // mostriamo l'elenco delle pagine
    function listaPagine($p_corrente, $pgg)
    {
    $listapgg = "";
    //tolto per fareapparire semlpre prima
    // if (($p_corrente != 1) && ($p_corrente))
    //{
    $listapgg .= " <a href="".SELF."?p=1">Prima</a> ";
    // }
    if (($p_corrente-1) > 0)
    {
    $listapgg .= "<a href="".SELF."?p=".($p_corrente-1).""><</a> ";
    }
    for ($i=1; $i<=$pgg; $i++)
    {
    if ($i == $p_corrente)
    {
    $listapgg .= "<b>".$i."</b>";
    }else{
    $listapgg .= "<a href="".SELF."?p=".$i."">".$i."</a>";
    }
    $listapgg .= " ";
    }
    if (($p_corrente+1) <= $pgg)
    {
    $listapgg .= "<a href="".SELF."?p=".($p_corrente+1)."">></a> ";
    }
    //tolto per fareapparire semlpre ultima
    // if (($p_corrente != $pgg) && ($pgg != 0))
    //{
    $listapgg .= "<a href="".SELF."?p=".$pgg."">Ultima</a> ";
    //}
    $listapgg .= "</td>\n";
    return $listapgg;
    }
    // permettiamo la navigazione per pagine precedenti e successive
    function precedenteSuccessiva($p_corrente, $pgg)
    {
    $impaginazione = "";
    if (($p_corrente-1) <= 0)
    {
    $impaginazione .= "Precedente";
    }else{
    $impaginazione .= "<a href="".SELF."?p=".($p_corrente-1)."">Pag. precedente</a>";
    }
    $impaginazione .= " | ";
    if (($p_corrente+1) > $pgg)
    {
    $impaginazione .= "Prossima";
    }else{
    $impaginazione .= "<a href="".SELF."?p=".($p_corrente+1)."">Prossima pag.</a>";
    }
    return $impaginazione;
    }
    }
    ?>

    [/PHP]

    Pagina.php,
    [PHP]

    <?php
    //includiamo il file della classe
    @require("paginazione.php");
    //connettiamoci a MySQL e selezioniamo il database
    class MySQL
    {
    function MySQL()
    {
    $this->host_name = "localhost";
    $this->user_name = "root";
    $this->password = "";
    $this->data_name = "uno";
    $this->link = @mysql_connect($this->host_name, $this->user_name, $this->password) or die (mysq_error());
    @mysql_select_db($this->data_name) or die (mysq_error());
    }
    }
    $data = new MySQL();

    // istanziamo la classe per l'impaginazione
    $p = new Paging;
    // numero massimo di risultati per pagina
    $max = 2;
    // identifichiamo la pagina da cui iniziare la numerazione
    $inizio = $p->paginaIniziale($max);
    // contiamo i records nel database
    $query_count = @mysql_query("SELECT * FROM articolo") or die (mysql_error());
    $count = @mysql_num_rows($query_count) or die (mysql_error());
    // troviamo il numero delle pagine che dovrà essere contato
    $pagine = $p->contaPagine($count, $max);
    // limitiamo la SELECT al numero di risultati per pagina
    $query = @mysql_query("SELECT * FROM articolo LIMIT ".$inizio.",".$max) or die (mysql_error());
    while($row = mysql_fetch_assoc($query)){
    $id=$row["id"];
    $nome=$row["nome"];
    echo ("
    <table border="1" width="200">
    <tr>
    <td width="126" align="center">$id</td>
    <td width="126" align="center">$nome</td>
    </tr>
    </table>
    ");

    }

    ?>
    <link href="css.css" rel="stylesheet" type="text/css" />

    <table width="259" border="0" class="css">
    <tr>
    <td colspan="2" align="center"><?php $lista = $p->listaPagine($_GET['p'], $pagine);
    echo $lista . "<br>"; ?></td>
    </tr>
    </table>
    <p>
    <?php
    //mostriamo le pagine
    //$lista = $p->listaPagine($_GET['p'], $pagine);
    //echo $lista . "<br>";
    //mostriamo il navigatore Precedente/Successiva
    //$navigatore = $p->precedenteSuccessiva($_GET['p'], $pagine);
    //echo $navigatore;
    ?>

    [/PHP]


  • User Attivo

    [..]

    Quindi sostituendo il mio codice con quello postato da te non funziona :arrabbiato:
    Aiutoooooooooooooooooooooooooooo


  • User Attivo

    Guarda che manca la connessione nello script.


  • User Attivo

    [..]
    Mi potresti aiutare gentilmente?
    Oppure volendo lasciare il mio e aggiungendo quello che manca cosa dovrei fare?
    Grazie


  • User Attivo

    Questa e' la connessione:
    [PHP]

    <?php
    $host = 'localhost';
    $user = 'root';
    $password = '';
    $database = 'uno';
    $db = mysql_connect($host, $user, $password)
    or die ("Impossibile connettersi al server $host");
    mysql_select_db($database, $db)
    or die ("Impossibile connettersi al database $database");
    ?>

    [/PHP]


  • User Newbie

    Ciao patatrac, la cosa che non capisco è che nel codice che ho attualmente non devo mettere i dati relativi a
    $host = 'localhost';
    $user = 'root';
    $password = '';
    $database = 'uno'
    ma funziona ugualmente, il secondo problema sono i link
    che lo script che mi consigli mi genera, vorrei lasciare quelli attuali che sono tipo:
    /tipologia-2.html
    /tipologia-3.html
    /tipologia-4.html
    /tipologia-5.html
    Ora per semplificarew il tutto ci sarebbe la possibilità di modificare il mio per avere lo stesso risultato.
    Grazie per l'aiuto dato. :wink3: