Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Impaginazione galleria

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    10

    Impaginazione galleria

    Ciao a tutti, sto realizzando una semplicissima galleria fotografica in php, in pratica mi sono fatto una pagina index dove vado a chiedere all'utente di inserire numero righe e colonne per scegliere quante foto visualizzare.


    Codice PHP:
    <html>
    <
    head>
    <
    link rel="shortcut icon" href="http://asnafa.altervista.org/Compito_Vacanze/favicon.ico" />
      <
    titleBanksy's Art Gallery </title>
    <h1> <center> <b> <font size ="7" color="yellow">Galleria d'
    arte Banksy </font> </b> </center> </h1
    </
    head>
    <
    body background="http://www.c4dzone.com/data/dow/images/Muro_mattoni.jpg">
    <
    br>
    <
    br>
    <
    br>


    <
    center>
    <
    div style="text-align: center">

    <
    form method="post" action="galleria.php">
      <
    b> <font size ="6" color="yellow"Inserire il numero delle righe: </font></b>
    <
    br>
    <
    input type="int" name="righe" size="20"> <br>
      <
    b><font size ="6" color="yellow">Inserire il numero delle colonne: </font></b>
    <
    br>
    <
    input type="int" name="colonne" size="20">
    <
    br>
    <
    input type="submit" value="GENERA">
      <
    input type="reset" value="CANCELLA">
    </
    center>
     </
    form>

    </
    div>


     </
    center>
     </
    body>
     </
    html
    Questa pagina mi rimanda ad una chiamata galleria.php

    Codice PHP:

    <?php


    $database
    ="ecc";
          
    $db=mysql_connect('''''');
          @
    mysql_select_db($database)
          or die( 
    "Impossibile selezionare il database.");



    echo 
    "<center>";
    echo 
    "<table>";


    $righe=$_POST['righe'];
    $colonne=$_POST['colonne'];
    $immagini_per_pagina=$righe*$colonne;


    $query "SELECT * FROM galleria ORDER By ID";
    $res mysql_query($query) or die (mysql_error());


    $n_img mysql_num_rows($res);


    if(
    $n_img >= ){
      
    $righe_da_fare=0;
      
    $limite_immagine=0;
      
    $immagini_aperte=0;

      while (
    $f=@mysql_fetch_array($res)){
        
    $righe_da_fare++;
        
    $ID $f['ID'];
        
    $descrizione stripslashes($f['Descrizione']);

        if(
    $limite_immagine<$immagini_per_pagina) {
      
          echo 
    "<td wIDth=\"33%\">\n";
          echo
    "<div align='center'>"
          
          
          
          echo 
    '<img width="200" height="160" style="cursor: -moz-zoom-in;"  img src="'.$f['link'].' " onclick="this.width=596;this.height=435;" ondblclick="this.width=200;this.height=160;"/>';
        


        echo
    "</div>";
          echo
    " <font size='4' color='yellow'>";
          echo
    "    <b>"  ;
          echo 
    "<br />" $descrizione;
          echo 
    "</b>";
          echo 
    "</font>";
          echo 
    "</td>\n";
          
    $immagini_aperte++;
        }
        
    $limite_immagine++;
     
        if (
    $righe_da_fare==$colonne){
          echo 
    "</tr><tr>\n";
          
    $righe_da_fare=0;
        }
      }
    }
    echo 
    "</table>";
    echo 
    "</center>";

    if(
    $immagini_aperte<$n_img) {
      echo
    "  <div style='text-align: right'>";
      echo 
    "<b>";
      echo 
    '<br><a href="#">SUCCESSIVE  </a>';
      echo
    " <br>";
      echo
    " <br>";
      echo
    " <a href='http://asnafa.altervista.org/Compito_Vacanze/index.php'> Torna alla Home  </a>";
      echo
    "</div> ";
      

      
    ?>
    Nel database ho 12 immagini, l'utente decide di vedere 4 immagini alla volta, quindi 2 righe e 2 colonne, come faccio a far avanzare la pagina in modo tale che vada a prendere le altre immagini?
    Voglio avere un bottone che mi permetta di andare avanti ed indietro, ovviamente arrivati all'ultima pagina deve tornare alla prima!

    In rete ho trovato questo, ma non riesco ad addattarlo
    Codice PHP:
    <?php



    //Conto quanti record sono presenti nella table
    $count mysql_query("SELECT COUNT(id) FROM tb_prova");
    $res_count mysql_fetch_row($count);
    $tot_records $res_count[0];

    //Risultati per pagina(secondo parametro di LIMIT)
    $ris_for_row 2;
    $ris_for_col 2;
    $ris_for_page $ris_for_row*$ris_for_col;

    //Function ceil arrotonda al primo valore interno pi�� alto
    $tot_pages ceil($tot_records $ris_for_page);

    //DEBUG
    echo "Tot records: ".$tot_records." Ris for page: ".$ris_for_page." Tot pages: ".$tot_pages;

    //Setto la pagina corrente
    if (!$_GET['page']) {
        
    $current_page 1;
    }
    else 
    $current_page $_GET['page'];

    //Setto var di sessione da usare nella pagina di paging
    $_SESSION['tot_pages']=$tot_pages;
    $_SESSION['current_page']=$current_page;

    //primo parametro di LIMIT
    $first_limit=($current_page-1)*$ris_for_page;

    echo 
    "<div align=\"center\">\n<table>\n";

    //Query con LIMIT
    $query_limit mysql_query("SELECT id, nome, descrizione FROM tb_prova LIMIT $first_limit$ris_for_page");

    //Scorro l'array fino in fondo
    $n=0;
    while (
    $n $tot_records) {
    echo 
    "<tr>";

    //A seconda della quantit�� di oggetti per riga, ciclo il fetch dei risultati all'interno di un ciclo for
    for ($i=0;$i<$ris_for_row;$i++) {
        
    $results mysql_fetch_assoc($query_limit);
        echo 
    "<td>";
        echo 
    "<a href=\"page.php?id=" $results['id'] . "\">" $results['nome'] . "</a>";
        echo 
    "</td>";
        echo 
    "<td>".$results['descrizione']."</td>";
        
    $n++;
    }

    echo 
    "</tr>\n";
    }

    echo 
    "</table></div>";

    //includo il file contenente la paginazione
    include("paging.php");

    echo 
    "<div align=\"center\">";
    echo 
    "".$paginazione;
    echo 
    "</div>";
    mysql_close();

    ?>

    Impaginazione


    Codice PHP:
    <!-- Pagina contenente il codice per la paginazione da richiamare -->
    <?php

    //Recupero le variabili settate nella pagina di "principale"
    $current_page=($_SESSION['current_page']);
    $tot_pages=($_SESSION['tot_pages']);

    //Se siamo nella prima pagina
    if ($current_page == 1) {
        
    $prev "<< prev";
    }
        else {
            
    $previous_page = ($current_page 1);
            
    $prev "<a href=\"page.php?page=$previous_page\" title=\"Previous\" TARGET=\"_parent\"><< prev</a>";
        }

    //Creo la lista   
    $list="[ ";
    for(
    $i 1$i <= $tot_pages$i++) {
            if(
    $i == $current_page) {
                    
    $list$list $i " ";
            }
            else {
                
    $list$list "<a href=\"page.php?page=$i\" title=\"Vai alla pagina $i\" TARGET=\"_parent\">$i</a> ";
            }
    }
    $list$list "]";

    //Se siamo nell'ultima pagina
    if($current_page == $tot_pages)
    $next "next >>";
            else
            {
                    
    $next_page = ($current_page 1);
                    
    $next "<a href=\"page.php?page=$next_page\" title=\"Next\" TARGET=\"_parent\">next >></a>";
            }

    //Compongo la stringa da mostrare
    $paginazione "$prev &nbsp&nbsp&nbsp $list &nbsp&nbsp&nbsp $next";
    ?>



    Grazie a tutti!

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    10
    Ciao, grazie per la risposta.
    Ho provato ad adattare il codice al mio, ma non ci sono riuscito, il risultato ottenuto non è quello sperato..

    Ecco cosa ho fatto, questa è galleria.php:
    Codice PHP:
          //Conto quanti record sono presenti nella table
    $count mysql_query("SELECT COUNT(ID) FROM galleria");
    $res_count mysql_fetch_row($count);
    $tot_records $res_count[0];


    //Risultati per pagina(secondo parametro di LIMIT)
    $ris_for_row=$_POST['righe'];
    $ris_for_col=$_POST['colonne'];
    $ris_for_page $ris_for_row*$ris_for_col;

    //Function ceil arrotonda al primo valore interno più alto
    $tot_pages ceil($tot_records $ris_for_page);
    //DEBUG
    echo "Tot records: ".$tot_records." Ris for page: ".$ris_for_page." Tot pages: ".$tot_pages;

    //Setto la pagina corrente
    if (!$_GET['page']) {
    $current_page 1;
    }
    else 
    $current_page $_GET['page'];

    //Setto var di sessione da usare nella pagina di paging
    $_SESSION['tot_pages']=$tot_pages;
    $_SESSION['current_page']=$current_page;

    //primo parametro di LIMIT
    $first_limit=($current_page-1)*$ris_for_page;



    //Query con LIMIT
    $query_limit mysql_query("SELECT ID, link, Descrizione FROM galleria LIMIT $first_limit$ris_for_page");

    //Scorro l'array fino in fondo
    $n=0;
    while (
    $n $tot_records) {
    echo 
    "<tr>";

    //A seconda della quantità di oggetti per riga, ciclo il fetch dei risultati all'interno di un ciclo for
    for ($i=0;$i<$ris_for_row;$i++) {
    $results mysql_fetch_assoc($query_limit);
    echo 
    "<td>";
    echo 
    "<a href=\"page.php?ID=" $results['ID'] . "\"></a>";
    echo 
    "<td wIDth=\"33%\">\n";

          echo
    "<div align='center'>"
          
          echo 
    '<img width="200" height="160" style="cursor: -moz-zoom-in;"  img src="'.$results['link'].' " onclick="this.width=596;this.height=435;" ondblclick="this.width=200;this.height=160;"/>';

        echo
    "</div>";
          echo
    " <font size='4' color='yellow'>";
          echo
    "    <b>"  ;
          echo 
    "<br />" .$results['Descrizione'];
          echo 
    "</b>";
          echo 
    "</font>";
          echo 
    "</td>\n";


    $n++;
    }

    echo 
    "</tr>\n";
    }


    //includo il file contenente la paginazione
    include("paginazione.php");

    echo 
    "<div align=\"center\">";
    echo 
    "".$paginazione;
    echo 
    "</div>";
    mysql_close();

    ?> 

    e questa paginazione.php
    Codice PHP:
    <?php

    //Recupero le variabili settate nella pagina di "principale"
    $current_page=($_SESSION['current_page']);
    $tot_pages=($_SESSION['tot_pages']);

    //Se siamo nella prima pagina
    if ($current_page == 1) {
    $prev "<< prev";
    }
       else {
    $previous_page = ($current_page 1);
           
    $prev "<a href=\"page.php?page=$previous_page\" title=\"Previous\" TARGET=\"_parent\"><< prev</a>";
       }

    //Creo la lista  
    $list="[ ";
    for(
    $i 1$i <= $tot_pages$i++) {
           if(
    $i == $current_page) {
                   
    $list$list $i " ";
           }
           else {
            
    $list$list "<a href=\"page.php?page=$i\" title=\"Vai alla pagina $i\" TARGET=\"_parent\">$i</a> ";
           }
    }
    $list$list "]";

    //Se siamo nell'ultima pagina
    if($current_page == $tot_pages)
    $next "next >>";
           else
           {
                   
    $next_page = ($current_page 1);
                   
    $next "<a href=\"page.php?page=$next_page\" title=\"Next\" TARGET=\"_parent\">next >></a>";
           }

    //Compongo la stringa da mostrare
    $paginazione "$prev &nbsp&nbsp&nbsp $list &nbsp&nbsp&nbsp $next";
    ?>
    Se vado ad inserire come numero righe e numero colonne 3, mi deve stampare 9 imamgini, e lo fa, solo che mi stampa altre 3 celle (cosa che non dovrebbe fare) anche perchè
    Tot records: 12 Ris for page: 9 Tot pages: 2

    quindi deve farmi 2 pagine, ma questo non avviene...

    Dove sbaglio?

    Grazie!

Tag per questa discussione

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.