Ciao ragazzi, alla fine ho cambiato script per l'invio e la paginazione dei dati nella stessa pagina.
Ora lo script che ho fatto funziona a metà... ho il problema della paginazione che appare prima di iniziare la ricerca e non mi tira fuori "La ricerca non ha prodotto nessun risultato" se non sono presenti dati.
Probabilmente per tutto sbaglio la posizione della seconda parte dello scrip
Codice PHP:
<?php
function crea_url($url_base, $pagina) {
if(strpos($url_base,'?') === false) {
return $url_base . '?pag=' . $pagina;
} else {
return $url_base . '&pag=' . $pagina;
}
}
function crea_link($url_base, $pagina_corrente, $numero_pagina) {
if($pagina_corrente == $numero_pagina) {
return "[$numero_pagina]";
} else {
return '[url="' . crea_url($url_base, $numero_pagina) . '"]' . $numero_pagina . '[/url]';
}
}
// funzione che crea i link alle pagine dei risultati
function paginazione($tot_pagine, $url_base, $pagina_corrente, $pagine_vicine) {
$link_paginazione = "Pagine: ";
// link alla pagina precedente
if($pagina_corrente != 1) {
$link_paginazione .= '[url="' . crea_url($url_base, $pagina_corrente - 1) . '"]«[/url] ';
}
// mostriamo sempre il link alla prima pagina
$link_paginazione .= crea_link($url_base, $pagina_corrente, 1);
// se il prossimo link non è alla seconda pagina aggiungo dei puntini ...
// oppure la sola pagina mancante
if($pagina_corrente - $pagine_vicine > 2) {
if($pagina_corrente - $pagine_vicine == 3) {
$link_paginazione .= " " . crea_link($url_base, $pagina_corrente, 2);
} else {
$link_paginazione .= " ... ";
}
}
// creo i link alla pagina corrente ed a quelle ad essa vicine
for($i = $pagina_corrente - $pagine_vicine; $i <= $pagina_corrente + $pagine_vicine; $i++) {
// se tra quelle vicine c'è la prima pagina (già riportata)
if($i < 2) continue;
// se tra quelle vicine c'è l'ultima pagina (che mostrerò con le prossime istruzioni)
if($i > $tot_pagine - 1) continue;
$link_paginazione .= " " . crea_link($url_base, $pagina_corrente, $i);
}
// se il precedente link non era alla penultima pagina aggiungo dei puntini ...
// oppure la sola pagina mancante
if($pagina_corrente + $pagine_vicine < $tot_pagine - 1) {
if($pagina_corrente + $pagine_vicine == $tot_pagine - 2) {
$link_paginazione .= " " . crea_link($url_base, $pagina_corrente, $tot_pagine - 1) . " ";
} else {
$link_paginazione .= " ... ";
}
}
// mostriamo il link all'ultima pagina se questa non coincide con la prima
if($tot_pagine != 1) {
$link_paginazione .= " " . crea_link($url_base, $pagina_corrente, $tot_pagine);
}
// link alla pagina successiva
if($pagina_corrente != $tot_pagine) {
$link_paginazione .= ' [url="' . crea_url($url_base, $pagina_corrente + 1) . '"]»[/url]';
}
return $link_paginazione;
}
//--------------------------------------------------------------------
// SCRIPT PAGINAZIONE DATI
$DB_host = 'localhost';
$DB_user = 'root';
$DB_password = '';
$DB_name = 'test2';
$righe_per_pagina = 3;
$url_base = "index.php";
$pagine_vicine = 1;
// ----------------------------------------------------------------
// C O N N E S S I O N E A L D A T A B A S E
$link = mysql_connect($DB_host, $DB_user, $DB_password);
if (!$link) {
die ('Non riesco a connettermi: ' . mysql_error());
}
$db_selected = mysql_select_db($DB_name, $link);
if (!$db_selected) {
die ("Errore nella selezione del database: " . mysql_error());
}
// ----------------------------------------------------------------
// C A L C O L O D E L N U M E R O D I P A G I N E
// ricavo il numero totale di record
$query = "SELECT COUNT(*) FROM scheda";
$result = mysql_query($query);
// record complessivi
$tot_righe = mysql_result($result,0);
// totale pagine
$tot_pagine = ceil($tot_righe / $righe_per_pagina);
// ----------------------------------------------------------------
// P A G I N A C O R R E N T E
$pagina_corrente = isset($_GET['pag']) ? (int)$_GET['pag'] : 1;
// se la pagina corrente è minore di 1
if($pagina_corrente < 1) {
header('location: ' . $url_base);
exit();
}
// se la pagina corrente è maggiore dell'ultima pagina
if($pagina_corrente > $tot_pagine) {
header('location: ' . crea_url($url_base, $tot_pagine));
exit();
}
// ----------------------------------------------------------------
// E S T R A Z I O N E D E I R E C O R D
// calcolo la prima riga da estrarre con la query
$prima_riga = ($pagina_corrente - 1) * $righe_per_pagina;
session_start();
if(isset($_GET["regioni"])){
$_SESSION['regioni']=$_GET["regioni"];
}
$query = "SELECT * FROM scheda WHERE regione = '{$_SESSION['regioni']}' LIMIT $prima_riga, $righe_per_pagina";
$result = mysql_query($query);
if (!$result) {
die("Errore nella query $query: " . mysql_error());
}
$elenco_comuni = array();
while ($row = mysql_fetch_assoc($result)) {
$elenco_comuni[] = $row;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Elenco Comuni Italiani</title>
</head>
<body>
<form action="index.php" method="GET">
Regioni: <input type="text" id="regioni" name="regioni" />
<input type="submit" id="cerca" name="cerca" value="Cerca"/>
</form>
<?php
if ($tot_pagine == 0)
{
echo "La ricerca non ha prodotto nessun risultato";
}
else
{
foreach($elenco_comuni as $riga) //while($r = mysql_fetch_array($data)) {
{
echo $riga['struttura'];
}
// creazione dei link di paginazione
$link_paginazione = paginazione($tot_pagine, $url_base, $pagina_corrente, $pagine_vicine);
//this is the pagination link
echo "echo $link_paginazione";
}
?>
</body>
</html>