Stufo di leggere sempre le stesse storie nelle guide faccio una domanda ben precisa: esiste un sistema per fare la paginazione di risultati da una pagina con form che richiama i risultati dentro se stessa?
Spiego meglio: la pagina ha un form che una volta compilato ed inviati i dati di ricerca si ricarica con i dati da db mysql.
Codice PHP:
//intestazioni pagina HTML
<?php
$ABIUser = $_GET['ABIUser'];
?>
<body>
//qui c'è il form HTML
<?php
if(isset($_POST['seriale_da']) || isset($_POST['abi_da']) || isset($_POST['cab_da']) || isset($_POST['importo_da']) || isset($_POST['data_lavorazione_da']) || isset($_POST['trattamento'])){
if (trim(htmlentities($_POST['seriale_da'])) != "" || trim(htmlentities($_POST['abi_da'])) != "" || trim(htmlentities($_POST['cab_da'])) != "" || trim(htmlentities($_POST['importo_da'])) != "" ||
trim(htmlentities($_POST['data_lavorazione_da'])) != "" || trim(htmlentities($_POST['trattamento']) != "")) {
$connect = apriDb(""); //funzione mia che si collega al db
$condizione = "";
//qui ci sono vari passaggi che controllano e settano la $condizione a seconda dei parametri inseriti nel form, questa condizione andrà ad essere eseguita con la query sottostante
$sql = "SELECT * FROM u".$ABIUser."
WHERE ".$condizione;
//echo "$sql
";
$result = interrogaDb(); //funzione mia che effettua la select sul db
$tot_record = mysql_num_rows($result);
echo '<span style="font-family: sans-serif; font-size:14px; margin-left: 200px;">Risultati trovati: '.$tot_record.'
';
//impostazione parametri per paginazione
$per_pagina = 100;
$tot_pagine = ceil($tot_record / $per_pagina);
$pagina_corrente = (!isset($_GET['pag'])) ? 1 : (int)$_GET['pag'];
$primo_record_pagina = ($pagina_corrente - 1) * $per_pagina;
$sql_limit = "SELECT * FROM u".$ABIUser."
WHERE ".$condizione."
LIMIT ".$primo_record_pagina.", ".$per_pagina;
$result_limit = interrogaDb($connect, $sql_limit, $Log);
if ($tot_record != 0) {
echo ' <table style="margin-left: 200px" border="1">';
//intestazione righe tabella risultati
$i = 0;
while($dati = mysql_fetch_array($result_limit)) {
//tabella con i risultati
$i++;
}
echo ' </table>
';
//paginazione a video
echo '<div id="paginazione">
<div style="font-family: sans-serif; font-size:14px; margin-left: 200px;">Pagine totali: '.$tot_pagine.'</div>';
$paginazione = '<div style="float: left; font-family: sans-serif; font-size:14px; margin-left: 100px;">';
$n = 2;
if($pagina_corrente == 1) //caso prima pagina
$paginazione .= '';
else{
$pag_precedente = ($pagina_corrente - 1);
$paginazione .= '[url="'.$_SERVER['PHP_SELF'].'?ABIUser='.$ABIUser.'&pag=1"]|< prima[/url]';
$paginazione .= ' [url="'.$_SERVER['PHP_SELF'].'?ABIUser='.$ABIUser.'&pag='.$pag_precedente.'"]<< precedente[/url]';
}
$paginazione .= '</div>
<div style="float: left; font-family: sans-serif; font-size:14px; margin-left: 200px;">';
for($i=1; $i<=$tot_pagine; $i++) { //pagine intermedie
if($i == $pagina_corrente)
$paginazione .= $i;
else
$paginazione .= ' - [url="'.$_SERVER['PHP_SELF'].'?ABIUser='.$ABIUser.'&pag='.$i.'"]'.$i.'[/url]';
}
$paginazione .= '</div>
<div style="float: left; font-family: sans-serif; font-size:14px; margin-left: 200px;">';
if($pagina_corrente == $tot_pagine) //caso ultima pagina
$paginazione .= '';
else{
$pag_successiva = ($pagina_corrente + 1);
$paginazione .= '[url="'.$_SERVER['PHP_SELF'].'?ABIUser='.$ABIUser.'&pag='.$pag_successiva.'"]successiva >>[/url]';
$paginazione .= ' [url="'.$_SERVER['PHP_SELF'].'?ABIUser='.$ABIUser.'&pag='.$tot_pagine.'"]ultima >|[/url]';
}
echo $paginazione.'</div>';
echo '</div></br>
';
}else{
echo '<span style="font-family: sans-serif; font-size:14px; margin-left: 200px;">Nessun dato disponibile</span>';
}
echo '
';
chiudiDb(); //mia funzione che chiude la connessione
}else{
echo '<span style="font-style:italic; color: #FF0000; font-size:16px; margin-left: 200px;"> Inserire almeno un campo per eseguire la ricerca </span>
';
}
}else if (isset($_GET['DataLav']) && isset($_GET['CodLav'])) {
if (htmlentities($_GET['DataLav']) != "" && htmlentities($_GET['CodLav']) != "") {
require_once("Comune.php");
//questo è un altro caso da cui si arriva tramite ricerca da un'altro form di ricerca presente in un'altra pagina e del quale vorrei per anch'esso funzionasse la paginazione
}
//funzioni varie di controllo della $condizione
Provando a fare una semplice paginazione, come quella qui mostrata (e che ho costruito tramite guide e svariati forum), chiaramente non funziona perchè la paginazione è presente e viene eseguita solo se sono settati i campi del form essendo dentro il cicli degli isset.
Ho provato a spostare la paginazione fuori e fare un altro else if con il $_GET che mi prenda un altro caso (oltre a quello già evidenziato a codice) dove mi passo la pagina ed altri dati che mi servono, ma il problema è che dovrei passarmi anche la $condizione (perchè altrimenti a pagina 2 non riuscirei a rieseguire la query) che è una stringa che tra le altre cose può essere anche piuttosto lunga, e che quindi non mi viene accettata.
Quindi la domanda nuovamente: esiste un sistema per fare la paginazione dentro una pagina che ha un form che già si autorichiama?