Ciao a tutti sto cercando di fare una paginazione con PHP e SQL server, però ho dei problemi. Con Mysql si usa il limit, ed in mssq si può usare un top, però trovo dei problemi :
1) la prima pagina è vuota mentre dalla 2 in poi altre riesco a paginare con i dati estratti
2) Se uso una tabella tutto ok se voglio usare la query con delle inner join inizio ad avere dei problemi.
questo è il codice.
Query con una tabella però non riesco a visulizzare la prima pagina vengono fuori tutti i numeri per i records trovati, ma quando clicco sulla pagian 1, non mi tira fuori nessun dato:
select * from (
select top 10 emp_id,lname,fname from (
select top 30 emp_id,lname,fname
from employee
order by lname asc
) as newtbl order by lname desc
) as newtbl2 order by lname asc
Codice PHP:
<?
mssql_connect("APPLICATION", "sa", "samsung2004") or die("Connection Error");
mssql_select_db("SAMA2");
// exit;
// connessione al database
// esecuzione prima query
$count = mssql_query("SELECT COUNT(id) FROM persone");
$res_count = mssql_fetch_row($count);
// numero totale di records
$tot_records = $res_count[0];
// risultati per pagina(secondo parametro di LIMIT)
$per_page = 5;
// 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;
echo "<div align=\"center\">\n<table>\n";
// esecuzione seconda query con LIMIT
$query_limit = mssql_query("
SELECT * FROM( SELECT top $per_page id,descr1 from(
SELECT top $primo id, descr1
from persone
order by descr1 asc
) as newtbl order by descr1 desc
) as newtbl2 order by descr1 asc");
//echo $query_limit . "
";
//exit;
while($results = mssql_fetch_array($query_limit)) {
if(isset($results['id']))
{
$id= $results['id'];
}
if(isset($results['descr1']))
{
$descr = $results['descr1'];
}
echo " <tr>\n <td>";
echo "<a href=\"page.php?id=" . $id . "\">" . $descr . "</a>
";
echo "</td>\n </tr>\n";
}
// includiamo uno dei files contenenti la paginazione, commentate l'altro ovviamente
//include("paginazione1.php");
include("paginazione1.php");
// in questa cella inseriamo la paginazione
echo " <tr>\n <td height=\"50\" valign=\"bottom\" align=\"center\">$paginazione</td>\n";
echo " </tr>\n</table>\n</div>";
mssql_close();
?>
2) Se voglo usare un'altra tabella iniziano i guai questa è la query che vorrei usare con quel metodo:
SELECT PERSONE.*, CLIENTI.*
FROM PERSONE,CLIENTI
WHERE PERSONE.ID = CLIENTI.IDPERSONA AND ISCLI=-1
Grazie
Max