mi rincresce che tu abbandoni ed io non ho snobbato il to script riscrivendolo,
ma consentimi una spiegazione un po' più approfondita,
----------
dimenticando per un momento lo script, iniziamo dalla logica,
si devono compiere 3 attività distinte
1) raccogliere le date per estrarre i record dal db con un form
2) ottenute e verificate le date, calcolare i parametri della paginazione e gestire la prima pagina
3) gestire la paginazione
così ho letto nello script che hai pubblicato, riprendendo lo stesso, ho semplificato,
1) raccogliere le date per estrarre i record dal db con un form
2) ottenute e verificate le date, calcolare i parametri della paginazione
3) gestire la paginazione
queste attività ci dicono che dovremmo creare 3 script semplificando la logica di controllo
oppure ne possiamo creare 1 solo però gestendo correttamente la sequenza delle attività
PHP:
if ( empty($_POST['cerca']) and empty($_GET['pag']) )
{
// ho appena avviato lo script php, devo visualizzare il form -----------------------
.....
}
else
{
if ( !empty($_POST['cerca']) )
{
// ho cliccato il bottone "cerca" -----------------------------------------------
.....
}
else
{
// sto rientrando dalla pagina precedente ---------------------------------------
.....
}
}
----------
quando uno script (html, php, asp.net, ....) viene eseguito, produce un output HTML
questo HTML viene inviato al client ed il server "DIMENTICA TUTTO", non trattiene nessun valore ....
quindi se bisogna far "dialogare" degli script, (semplificando) lo si può fare con le variabili
$_POST e $_GET che ritornano i valori del form e inseriti nel URL,
$_SESSION impostando i valori nello script che li genera in modo da mantenerli disponibili alla sessione di lavoro specifica
questa situazione vale sia nel caso di 3 script, sia nel caso di uno script unico con le 3 attività
----------
perchè non ho cercato l'errore nello script che hai pubblicato ?
perchè mi sembra manchi la logica di controllo
quindi ho ripreso lo script pubblicato e con copia incolla ho strutturato la logica
(non curandomi di qualche errore "ortografico")
----------
gli effetti visivi nel funzionamento dello script unico come lo hai / l' ho impostato,
quando viene eseguito per la prima volta, si ottiene il form,
cliccando il bottone (con o senza date) la seconda attività non produce risultato visivo ma richiama
la paginazione che gestisce la visualizzazione dei records
inserendo delle date, viene ristretto il campo di azione della ricerca
come vedi lo script funziona, ed i valori vengono passati alle diverse attività con $_SESSION
prova a leggere lo script e cerca di capire la logica ed il funzionamento, è un buon esempio per costruirne altri
in particolare creando uno script unico, si può riutilizzare parte del codice (vedi function VisualizzaForm )
se hai dubbi, domande o ti servano chiarimenti, chiedi !
at salut
PHP:
<?php
session_start();
if ( empty($_POST['cerca']) and empty($_GET['pag']) )
{
// ho appena avviato lo script php, devo visualizzare il form -----------------
VisualizzaForm();
}
else
{
if ( !empty($_POST['cerca']) )
{
// ho cliccato il bottone "cerca" -----------------------------------------------
$da = $_POST['da']; if ( empty($da) ) $da="1970-01-01";
$a = $_POST['a']; if ( empty($a) ) $a ="9999-01-01";
include ("connessione.php");
// conto le righe presenti all'interno della tabella
$all_rows = mysql_num_rows(mysql_query( "SELECT * FROM `".$tabella."` WHERE data BETWEEN '".$da."' AND '".$a."'" );
// Creo una variabile dove imposto il numero di record da mostrare in ogni pagina
$x_pag = 5;
// definisco il numero totale di pagine
$all_pages = ceil($all_rows / $x_pag);
// salvo le variabili per il prossimo giro
$_SESSION['da'] = $da;
$_SESSION['a'] = $a;
$_SESSION['all_rows'] = $all_rows;
$_SESSION['x_pag'] = $x_pag;
$_SESSION['all_pages'] = $all_pages;
// avvio il primo giro
header( 'Location: '.basename($_SERVER['PHP_SELF'])."?pag=1" );
die;
}
else
{
// sto rientrando dalla pagina precedente ---------------------------------------
// Recupero il numero della pagina corrente
$pag = $_GET['pag'];
// riprendo le variabili salvate
$da = $_SESSION['da'];
$a = $_SESSION['a'];
$all_rows = $_SESSION['all_rows'];
$x_pag = $_SESSION['x_pag'];
$all_pages = $_SESSION['all_pages'];
// Calcolo da quale record iniziare
$first = ($pag - 1) * $x_pag;
include ("connessione.php");
//Utilizzando LIMIT per partire da $first e contare fino a $x_pag
$query = mysql_query( "SELECT * FROM `".$tabella."` WHERE data BETWEEN '".$da."' AND '".$a."' LIMIT ".$first.", ".$x_pag );
VisualizzaForm();
echo "<br />"
. "I giorni lavorati tra il <b>$da</b> e il <b>$a</b> "
. "sono <b>$all_rows</b> visibili in <b>$all_pages</b> pagine"
. "<br /> <br />";
//creo la parte della tabella con l'intestazione
echo "<table border=1 cellpadding=0 cellspacing=0 width=50%>"
. "<tr><th>Data</th><th>Quando</th><th>Ore</th><th>Ore straor.</th><th>Permesso</th><th>Ore permesso</th>";
//intabello i dati che estraggo alternando i colori
$flag_colore=0;
while ($riga = $query->fetch())
{
if($flag_colore==0)
{
echo "<tr bgcolor=\"CCFFFF\">";
$flag_colore=1;
}
else
{
echo "<tr bgcolor=\"E4E4E4\">";
$flag_colore=0;
}
echo "<td ALIGN='center'>$riga[1]</td>"
. "<td ALIGN='center'>$riga[2]</td>"
. "<td ALIGN='center'>$riga[3]</td>"
. "<td ALIGN='center'>$riga[4]</td>"
. "<td ALIGN='center'>$riga[5]</td>"
. "<td ALIGN='center'>$riga[6]</td>";
}
echo "</table>";
echo "<br />";
//visualizzo i link per andare avanti e indietro tra le diverse pagine
if ($all_pages > 1)
{
if ($pag > 1)
{
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag - 1) . "\">";
echo "<-- Indietro</a> ";
}
echo " $pag di $all_pages ";
if ($all_pages > $pag)
{
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag + 1) . "\">";
echo " Avanti --></a>";
}
}
}
}
function VisualizzaForm()
{
?>
<html>
<head>
<title>Cerca</title>
<body>
<strong>Ricerca per data:</strong>
<form method="post" action="cerca.php">
<td>Da: </td>
<input type="date" name="da" size="40" maxlength="300">
<td>A: </td>
<input type="date" name="a" size="40" maxlength="300">
<input type="submit" name="cerca" value="Cerca" />
</form>
</body>
</head>
</html>
<?php
}
?>
ps
ho usato una tabella esistente nel mio db per le prove,
quindi i dati visualizzati non corrispondono ai tuoi ma non mi sembra fondamentale
quando usi "select *" e fai riferimento al dato con "$riga[1]" ricorda che se una persona dovesse cambiare la struttura della tabella (cosa possibile in un'organizzazione), i tuoi script perdono il posizionamento, con visualizzazioni errate