Ti propongo di provare il codice qui sotto.
Devi modificare i dati per la connessione al database.
Devi importare la struttura e i dati usati nell'esempio. Provalo cosi com'è senza modificare nulla e studiane il funzionamento.
File test9336.php
Codice PHP:
<?php
//---- Connessione al DB
$conn = new mysqli("localhost","root","", "tests");
//---- N° dei record nella tabella
$query = "SELECT count(*) as num_records FROM tabella1";
$r = mysqli_query($conn,$query);
list($righe) = mysqli_fetch_array($r);
//---- N° dei record per pagina
$items_pagina = 5;
//---- N° di pagine
$num_pagine = ($righe % $items_pagina) == 0 ? $righe / $items_pagina : (int) ($righe / $items_pagina) + 1;
//---- Di default = pagina 1
$pagina = 1;
if (isset($_GET ['pag']))
{
//---- Testa se numerico
$temp = $_GET ['pag'];
if (is_numeric($temp))
{
if (($temp >= 1) && ($temp <= $num_pagine))
{
//---- N° di pagina trasmesso dal parametro
$pagina= $temp;
}
}
}
?>
<!-- --------------------- -->
<!-- Prima pagina -->
<!-- --------------------- -->
<a href="test9336.php?pag=1" title="Prima pagina"><<</a>
<!-- --------------------- -->
<!-- Pagina precedente -->
<!-- --------------------- --><?php
if ($pagina > 1)
{
$pag_prec = $pagina - 1;
}
else
{
$pag_prec = 1;
}?>
<a href="test9336.php?pag=<?php print $pag_prec;?>" title="Pagina precedente"><</a>
<!-- --------------------- -->
<!-- Pagine -->
<!-- --------------------- --><?php
//---- Creazioni dei link
for ($i=1;$i<=$num_pagine;$i++)
{?>
<a href="test9336.php?pag=<?php print $i;?>"><?php print $i;?></a> <?php
}?>
<!-- --------------------- -->
<!-- Pagina successiva -->
<!-- --------------------- --><?php
if ($pagina < $num_pagine) {
$pag_succ = $pagina + 1;
}
else
{
$pag_succ = $pagina;
}?>
<a href="test9336.php?pag=<?php print $pag_succ;?>" title="Pagina successiva">></a>
<!-- --------------------- -->
<!-- Ultima pagina -->
<!-- --------------------- -->
<a href="test9336.php?pag=<?php print $num_pagine;?>" title="Ultima pagina">>></a>
<br/>
<table>
<tr>
<td>Padre</td><td>Figlio</td>
</tr>
<?php
//---- Tabella con la pagina corrente
$primo_record = ($pagina - 1) * $items_pagina;
$query = "SELECT * FROM tabella1 order by padre limit $primo_record, $items_pagina";
$r = mysqli_query($conn,$query);
while (list($padre,$figlio) = mysqli_fetch_array($r))
{?>
<tr>
<td><?php print $padre;?></td><td><?php print $figlio;?></td>
</tr><?php
}?>
</table>
Struttura e dati della tabella tabella1
codice:
-- phpMyAdmin SQL Dump
-- version 4.7.0
-- https://www.phpmyadmin.net/
--
-- Hôte : 127.0.0.1
-- Généré le : jeu. 17 août 2017 à 17:51
-- Version du serveur : 5.7.17
-- Version de PHP : 7.1.3
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Base de données : `tests`
--
-- --------------------------------------------------------
--
-- Structure de la table `tabella1`
--
CREATE TABLE `tabella1` (
`padre` int(11) NOT NULL,
`figlio` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin;
--
-- Déchargement des données de la table `tabella1`
--
INSERT INTO `tabella1` (`padre`, `figlio`) VALUES
(1, 2),
(1, 3),
(1, 4),
(2, 21),
(2, 22),
(2, 23),
(3, 31),
(3, 32),
(4, 41),
(21, 220),
(21, 221),
(23, 230),
(23, 231),
(32, 320),
(32, 322),
(32, 323),
(231, 2310);
--
-- Index pour les tables déchargées
--
--
-- Index pour la table `tabella1`
--
ALTER TABLE `tabella1`
ADD UNIQUE KEY `padre` (`padre`,`figlio`);
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;