Paginazione

  • Creatore Discussione Creatore Discussione cherpy
  • Data di inizio Data di inizio

cherpy

Nuovo Utente
4 Dic 2004
6
0
0
Dalla guida di Claudio Garau per la galleria immagini vorrei fare una paginazione delle immagini stesse, qualcuno mi può dare una mano?
 
Paginazioni

I tutorial di Claudio Garau funzionano perfettamente. Io mi sto cimentando adesso con il php e ho difficoltà a visualizzare le immagini nel tutorial delle pagine. Mi spiego meglio la galleria funziona perfettamente e la paginazione anche, non riesco a usarle insieme. Grazie per la risposta
 
Questo il tutorial di Claudio Garau visibile a questo collegamento https://www.mrw.it/php/articoli/galleria-immagini-php-gd2-mysql_828.html queste due pagine di codice funzionano benissimo. Il problema è la paginazione seguendo il tutorial per la paginazione delle immagini non riesco a visualizzare le immagini nella pagina paginazione che allego sotto

primo file

<?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 = "";
if (($p_corrente != 1) && ($p_corrente))
{
$listapgg .= " <a href=\"".SELF."?p=1\">Prima pag.</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> ";
}
if (($p_corrente != $pgg) && ($pgg != 0))
{
$listapgg .= "<a href=\"".SELF."?p=".$pgg."\">Ultima pag.</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;
}
}
?>

secondo file

<?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 = "username";
$this->password = "password";
$this->data_name = "dbseodir";
$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 = 10;

// identifichiamo la pagina da cui iniziare la numerazione
$inizio = $p->paginaIniziale($max);

// contiamo i records nel database
$query_count = @mysql_query("SELECT * FROM sitezzz") 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 sitezzz LIMIT ".$inizio.",".$max) or die (mysql_error());

//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;
?>

funziona e conta il numero delle pagine ma non visualizza le immagini che cosa c'è da fare?
 
dovresti utilizzare la seconda select per estrarre i dati, ad es:
PHP:
$query = @mysql_query("SELECT * FROM sitezzz LIMIT ".$inizio.",".$max) or die (mysql_error());
while($r=mysql_fetch_array($query))
 {
 echo $r['nome_campo']; 
}
 
Incolonnamento immagini

Ciao Eliox
grazie per il grande aiuto che mi hai dato sono riuscito a far funzionare la galleria. Ora c'è un problema visualizzo tutte miniature e non riesco a incolonnarle per tre dammi un ulteriore aiuto.
Saluti Cherpy
 
Incolonnamento immagini

Ciao Eliox
ho guardato il tutorial e sinceramente non riesco a farlo funzionare io dopo i precedenti aiuti ho realizzato la pagina per la galleria e l'impaginazione come il codice che ti allego:

galleria.php

<?php
//includiamo il file della classe
@require("paginazione.php");
$path_img = 'files/';

//connettiamoci a MySQL e selezioniamo il database
include 'config_mysql.php';

// istanziamo la classe per l'impaginazione
$p = new Paging;

// numero massimo di risultati per pagina
$max = 3;

// identifichiamo la pagina da cui iniziare la numerazione
$inizio = $p->paginaIniziale($max);

// contiamo i records nel database
$query_count = @mysql_query("SELECT * FROM images") 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 images LIMIT ".$inizio.",".$max) or die (mysql_error());

while($f=mysql_fetch_array($query))
{
$righe++;
$id = $f['Id'];
$titolo = stripslashes($f['Titolo']);
$nome = stripslashes($f['Nome']);
$descrizione = stripslashes($f['Descrizione']);
echo "<td width=\"33%\">\n";
echo $titolo . "<br />";
echo "<a href=\"visualizza.php?id=" . $id . "\">";

// stampo la cella contenente l'immagine

echo "<img src=\"" . $path_img . "tb_" . $nome . "\" border=\"0\"></a>";
echo "<br />" . $descrizione;
echo "</td>\n";
}
echo"<br>";
//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;
?>

e questo il file che visualizza le immagini

visualizza.php

<?php
if(isset($_GET['id'])){
@include 'config.php';

// apro la tabella
echo "<table><tr><td>";

// recupero dalla querystring l'ID dell'immagine da visualizzare
$id_vis = $_GET['id'];

// verifico la presenza dell'immagine sul DB
$query = "SELECT * FROM images WHERE Id = '$id_vis'";
$res = @mysql_query($query) or die (mysql_error());
$n_img = @mysql_num_rows($res);

// se l'id specificato esiste procedo con la visualizzazione
if($n_img == 1 )
{
// recupero i dati dell'immagine selezionata
$f = @mysql_fetch_array($res) or die (mysql_error());
$titolo = stripslashes($f['Titolo']);
$nome = stripslashes($f['Nome']);
$descrizione = stripslashes($f['Descrizione']);

// stampo a video l'imagine e le relative informazioni
echo $titolo . "<br />";
echo "<img src=\"" . $path_img . $nome . "\" border=\"0\">";
echo "<br />" . $descrizione . "<br><br>";

// estraggo dal DB il primo e l'ultimo ID
$sql_count = @mysql_query("SELECT MIN(Id) AS min, MAX(Id) AS max FROM images") or die (mysql_error());
$id_max = @mysql_fetch_array($sql_count) or die (mysql_error());
$min = $id_max['min'];
$max = $id_max['max'];

// calcolo e stampo il link per l'immagine precedente
if($_GET['id'] != $min){
$query_prev = @mysql_query("SELECT Id FROM images WHERE Id < '$id_vis' ORDER BY Id DESC LIMIT 1") or die (mysql_error());
$f_prev = @mysql_fetch_array($query_prev)or die (mysql_error());
$id_prev = $f_prev['Id'];
echo "<a href=\"visual.php?id=$id_prev\">&lt;&lt; Precedente</a>";
}

// calcolo e stampo il link per l'immagine successiva
if($_GET['id'] < $max){
$query_next = @mysql_query("SELECT Id FROM images WHERE Id > '$id_vis' ORDER BY Id ASC LIMIT 1") or die (mysql_error());
$f_next = @mysql_fetch_array($query_next)or die (mysql_error());
$id_next = $f_next['Id'];
echo "<a href=\"visual.php?id=$id_next\">Successiva &gt;&gt;</a>";
}
}else{
// stampo un errore se l'immagine non esiste
echo "Nessuna immagine inserita.";
}
// chiudo la tabella
echo "</td></tr></table>";
}
?>

il codice per l'incolonnamento dove lo metto?
Grazie per il tuo aiuto saluti Cherpy
 
paginazione per righe

Salve amici del forum senza di voi noi siamo niente in special modo io che in questo momento sono in tilt, praticamente non ci sto capendo nulla.
mettiamo a confronto questi due codici, dove il primo stampa a video incolonnati per tre le immagini
questo il codice
echo "<table>";

// recupero i dati dal DB
$query = "SELECT * FROM images ORDER By Id ";
$res = mysql_query($query) or die (mysql_error());

// numero delle immagini presenti nel DB
$n_img = mysql_num_rows($res);

// verifico che il DB ospiti almeno un'immagine
if($n_img >= 1 ){
// stabilisco il numero di riche e colonne della nostra tabella per l'impagninazione
$colonne = 3;
$righe=0;

// ciclo tutti i record recuperati attraverso la nostra query
while ($f=@mysql_fetch_array($res)){
$righe++;
$id = $f['Id'];
$titolo = stripslashes($f['Titolo']);
$nome = stripslashes($f['Nome']);
$descrizione = stripslashes($f['Descrizione']);

// stampo la cella contenente l'immagine
echo "<td width=\"33%\">\n";
echo $titolo . "<br />";
echo "<a href=\"visual.php?id=" . $id . "\">";
echo "<img src=\"" . $path_img . "tb_" . $nome . "\" border=\"0\"></a>";
echo "<br />" . $descrizione;
echo "</td>\n";

il secondo codice stampa le immagini 1 per colonna

secondo codice
@require("paginazione.php");
$path_img = 'files/';

include 'config_mysql.php';

// istanziamo la classe per l'impaginazione
$p = new Paging;

// numero massimo di risultati per pagina
$max = 6;

// identifichiamo la pagina da cui iniziare la numerazione
$inizio = $p->paginaIniziale($max);

// contiamo i records nel database
$query_count = @mysql_query("SELECT * FROM images") 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 images LIMIT ".$inizio.",".$max) or die (mysql_error());

while($f=mysql_fetch_array($query))
{
$righe++;
$id = $f['Id'];
$titolo = stripslashes($f['Titolo']);
$nome = stripslashes($f['Nome']);
$descrizione = stripslashes($f['Descrizione']);
echo "<td width=\"33%\">\n";
echo $titolo . "<br />";
echo "<a href=\"visual.php?id=" . $id . "\">";

// stampo la cella contenente l'immagine

echo "<img src=\"" . $path_img . "tb_" . $nome . "\" border=\"0\"></a>";
echo "<br />" . $descrizione;
echo "</td>\n";
}

la mia domanda è questa come utilizzare il primo codice nel secondo? per utilizzarlo nella paginazione
Grazie per la prossima risposta Cherpy
 

Discussioni simili