- Home
- Categorie
- Coding e Sistemistica
- PHP
- Paginazione su righe e colonne
-
Paginazione su righe e colonne
Salve a tutti
Avrei bisogno di un impaginazione di dati su righe ecolonne, tipo una fotogallery...
Attualmente recupero i dati dal db ma li impagino semplicemente uno sotto l'altro!Come poter decidere su quante righe e su quante colonne impaginare i miei dati?
Attualmente uso queso codice per estrarre e impaginare:
[PHP]
<?php
require_once("config.php");
?>
<?php
if(!isset($_SESSION['login']))
{
echo 'Accesso riservato a soli utenti registrati.<br>';
echo '<a href="index.php">Effettua il login </a>';
exit;
// header('Location: index.php');
// exit;
}// esecuzione prima query
$count = mysql_query("SELECT COUNT(id) FROM foto_gallery");
$res_count = mysql_fetch_row($count);// numero totale di records
$tot_records = $res_count[0];// risultati per pagina(secondo parametro di LIMIT)
$per_page = 10;// numero totale di pagine
$tot_pages = ceil($tot_records / $per_page);// pagina corrente
$current_page = (!$_GET['page']) ? 1 : (int)$_GET['page'];// primo parametro di LIMIT
$primo = ($current_page - 1) * $per_page;require_once("header.php");
echo "<div align='center'>\n<table width='400' border='0' cellspacing='2' cellpadding='2'>\n";
// esecuzione seconda query con LIMIT
$query_limit = mysql_query("SELECT id, titolo_foto, categoria, urlimmagine FROM foto_gallery order by categoria ASC LIMIT $primo, $per_page ");
//echo $query_limit;
//exit();echo " <tr>\n ";
echo "<td bgcolor='black' width='100' height='22'><p>Azione</p></td>\n ";
echo "<td bgcolor='black' width='250' height='22'><p>Nome immaggine</p></td>\n ";
echo "<td bgcolor='black' width='300' height='22'><p>Categoria</p></td>\n ";
echo "</tr>\n";while($results = mysql_fetch_array($query_limit)) {
echo " <tr>\n ";
echo "<td width='70'><center><a title='Elimina' href='query_gallery.php?action=delete&id=" . $results['id'] . "&image=" . $results['urlimmagine'] . "'><img src='images/remove.jpg' alt='Elimina menu' border='0'></a></center></td>\n ";
echo "<td width='250'><p>" . $results['titolo_foto'] . "</p></td>\n ";
echo "<td width='300'><p>" . $results['categoria'] . "</p></td>\n ";
echo "</tr>\n";
}// includiamo uno dei files contenenti la paginazione, commentate l'altro ovviamente
//include("paginazione_1.php");
include("paginazione_2.php");// in questa cella inseriamo la paginazione
echo " <tr>\n <td colspan='5' height='50' valign='bottom' align='center'><a title='Aggiungi' href='upload_gallery.php'>Aggiungi immaggine</a><br>$paginazione</td>\n";echo " </tr>\n</table>\n</div>";
mysql_close();
?><br><br>
<center><a href="logout.php">Logout</a></center><br />[/PHP]
il file paginazione_2.php //serve solo a mostrare in che modo visulaizzare il tasto >>next e <<prew
[PHP]
<?php$paginazione = "Pagine totali: " . $tot_pages . "
[";
for($i = 1; $i <= $tot_pages; $i++) {
if($i == $current_page) {
$paginazione .= $i . " ";
} else {
$paginazione .= "<a href="?page=$i" title="Vai alla pagina $i">$i</a> ";
}
}
$paginazione .= "]";?>
[/PHP]Spero sia stato chiaro e che mi possiate aiutare...
Grazie
-
Ciao ora non riesco a passarti il codice ( se vuoi lo faccio questa sera) ma il procedimento è semplice:
Prima cosa decidi il numero di colonne.
Entri nel ciclo while e metti un contatore che vada da 1 al numero di colonne che hai scelto.
Dove hai il tag tr metti un controllo if, che controlli se il contatore è uguale al numero delle colonne da te deciso in tal caso devi creare una nuova riga e azzerare il contatore altrimenti incrementi solo il contatore senza creare la nuova riga.
Spero di essere stato chiaro.
-
Ciao christian82 e grazie per la risposta..
La funzione mi è chiara ma il codice nn tanto!
Con l'ASP me la cavo un po meglio, ma vorrei capire anche il php.Ora comunque provo a smanettare, ho trovato uno script che a differenza del mio non ha la gestione delle pagine ma ha l'impaginazione che forse serve a me!
Provo a fondere i 2...Vi posto il codice per srupolosità, se riesci cmq e hai un po di tempo ti aspetto!
A dopo per maggiori sviluppi!
-
@mcmmultimedia said:
Ops.. il codice
[php]
<?php
require_once("config.php");
//$albumId = $_GET['album'];
$albumId = "gallery";$query = "SELECT im_id, im_title, im_thumbnail FROM tbl_image WHERE im_album_id = $albumId ORDER BY im_title";
$result = mysql_query($query) or die('Error, list image failed. ' . mysql_error());
if (mysql_num_rows($result) == 0) {
echo "Nessuna immaggine";
} else {echo '<table width="700" border="0" cellspacing="1" cellpadding="2" align="center">'; // the image is listed in a table // here we specify how many columns // we want to show on each row $colsPerRow = 4; // width of each column in percent $colWidth = (int)(100/$colsPerRow); $i = 0; while ($row = mysql_fetch_assoc($result)) { if ($i % $colsPerRow == 0) { // start a new row echo '<tr>'; } echo '<td width="' . $colWidth . '%">' . '<a href="?page=image-detail&album=' . $albumId . '&image=' . $row['im_id'] . '">' . '<img src="viewImage.php?type=glthumbnail&name=' . $row['im_thumbnail'] . '" border="0">' . '<br>' . $row['im_title'] . '</a></td>'; if ($i % $colsPerRow == $colsPerRow - 1) { // start a new row echo '</tr>'; } $i += 1; } // print blank columns if ($i % $colsPerRow != 0) { while ($i++ % $colsPerRow != 0) { echo '<td width="' . $colWidth . '%"> </td>'; } echo '</tr>'; } echo '</table>';
}
?>[/php]Si potrebbe integrare con il mio ?
-
Ciao si il codice che ti serve è proprio questo.
[php]
<?php
require_once("config.php");
//$albumId = $_GET['album'];
$albumId = "gallery";$query = "SELECT im_id, im_title, im_thumbnail FROM tbl_image WHERE im_album_id = $albumId ORDER BY im_title";
$result = mysql_query($query) or die('Error, list image failed. ' . mysql_error());
if (mysql_num_rows($result) == 0) {
echo "Nessuna immaggine";
} else {
[/php]Fino qui c'è il codice sql che serve a estrarre le informazioni dal db.
[php]
echo '<table width="700" border="0" cellspacing="1" cellpadding="2" align="center">';// the image is listed in a table // here we specify how many columns // we want to show on each row $colsPerRow = 4; // width of each column in percent $colWidth = (int)(100/$colsPerRow); $i = 0;
[/php]Imposti delle variabili per il numero di colonne e in questo caso anche la larghezza.
[php]
while ($row = mysql_fetch_assoc($result)) {
if ($i % $colsPerRow == 0) {
// start a new row
echo '<tr>';
}
[/php]Qui ha eseguito il controllo per decidere se c'è bisogno di una nuova riga.
[php]
echo '<td width="' . $colWidth . '%">' .
'<a href="?page=image-detail&album=' . $albumId . '&image=' . $row['im_id'] . '">' .
'<img src="viewImage.php?type=glthumbnail&name=' . $row['im_thumbnail'] . '" border="0">' .
'<br>' . $row['im_title'] . '</a></td>';if ($i % $colsPerRow == $colsPerRow - 1) { // start a new row echo '</tr>'; } $i += 1; }
[/php]Inserisce il dato e alla fine esegue il comando per sapere se deve chiudere la riga. In più incrementa il contatore.
[php]
// print blank columns
if ($i % $colsPerRow != 0) {
while ($i++ % $colsPerRow != 0) {
echo '<td width="' . $colWidth . '%"> </td>';
}
echo '</tr>';
}echo '</table>';
}
?>
[/php]e qui finito l'inserimento di tutti i dati controlla se c'è bisogno di inserire delle colonne vuote per completare la riga.
Spero di essere stato utile, ciao.
-
Il problema di questo script e che non ha paginazione, ovvero la funzione che ti calcoli il numero delle immaggini e delle pagine da creare per la navigazione!
Il mio invece al contrario aveva la funzione dele pagine ma ordinava i record uno sotto l'altro semplicemente.
La mia domanda era:
Si possono fondere i 2 prendendo l'impaginazione delle immaggini dall'ultimo script postato e integrarci una paginazione del tipo:<<Prev 1,2,3,4 Next>>
??
-
Ciao mcmmultimedia,
Per la paginazione puoi prendere spunto da questo messaggio.