PDA

View Full Version : [PHP] Sostituire il LIMIT su ACCESS !!!


race2
02-10-2003, 19:21
Devo usare ACCESS come Database per il mio catalogo ho la necessita' di fare un Paging come posso fare ???

con MySQL + PHP faccio cosi:


<?
// Risultati visualizzati per pagina
$Rec_Pagina=10;
if(!isset($Start))$Start=0;

// Estrazione Dati e conteggio righe totali nella tabella
include("includes/conn_open.php");
$oComm=mysql_query("SELECT * FROM Articoli LIMIT $Start,$Rec_Pagina",$oConn);
$oCommTot=mysql_query("SELECT * FROM Articoli",$oConn);
$Num_Prodotti=mysql_numrows($oCommTot);
$Numero_Pagine=ceil($Num_Prodotti/$Rec_Pagina);
$Pagina_Corrente=ceil(($Start/$Rec_Pagina)+1);
while($oRead=mysql_fetch_array($oComm))
{
$Codice=$oRead["Codice_Articolo"];
$Nome=$oRead["Nome_Articolo"];
-----------
------
--
}
include("includes/conn_close.php");

// paging
echo"<br><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td style=\"font-size:12px; font-family:Arial; font-weight:bold; color:#000000\" align=\"center\">";

if($Numero_Pagine>1)
{
for($Pagina=1;$Pagina<=$Numero_Pagine;$Pagina++)
{
echo"[&nbsp;<a href=?Start=";
echo(($Pagina-1)*$Rec_Pagina);
echo">";
if($Pagina==$Pagina_Corrente)
{
echo"<font color=\"#cc0000\">$Pagina</font>";}else{echo"<font color=\"#000000\">$Pagina</font>";
}
echo"</a>&nbsp]&nbsp;&nbsp";
}
}

echo"</td></tr></table>";
// paging
?>


Su ACCESS non posso usare il LIMIT , cosa posso usare ???

VICIUS
02-10-2003, 19:55
in access la LIMIT si chiama TOP. che seleziona i primi n elementi di una query. funziona piu o meno cosi:
select top 10 * from table

purtroppo non ti so aiutare di piu perchè non l'ho mai usata.

ciao ;)

cionci
02-10-2003, 21:00
include("includes/conn_close.php");
Lo sai che esistono anche le funzioni invece di includere il codice in questo modo ? Metti tutto in un include solo e poi richiami le varie funzioni direttametne da codice...

Devi usare una connessione ODBC ad Access... Le funzioni le trovi sull'help...

race2
03-10-2003, 04:34
Non capisco cosa vuoi dire in risposta alla mia domanda !!!

cionci
03-10-2003, 07:30
Dico che devi usare le funzioni odbc di php per Accedere ad Access, la risposta al tuo problema di query ti era già stata data sopra...

race2
03-10-2003, 13:18
Non mi e' stata data perche come dice sopra posso solo decidere quante righe vedere partendo sempre dalla 0 in poi,

ma se io con un click vado da 0 a 10 come faccio poi a ripartire da 10 a 20 e da 20 a 30 e cosi via ???

cionci
03-10-2003, 20:08
Avanzi di N righe fino a quella che ti interessa... Dal punto di vista della complessità della query non cambia niente perchè comunque anche la limit deve calcolare i risultati precedenti...

race2
06-10-2003, 15:03
"SELECT TOP 10 * FROM MyTable"

forse sono io che non capisco ma mi potresti fare un esempio pratico di come fai per:

al primo click voglio estrarre le righe dalla 0 alla 10,
al secondo click voglio estrarre le righe dalla 10 alla 20,
al terso click voglio estrarre le righe dalla 200 alla 30,
e cosi via.........

io so l'ultima riga che ho conteggiato ogni click,
ma sulla stringa SQL come faccio a dirgli di ripartire dalla righa 'n' alla 'm' ???

"SELECT ??? * FROM MyTable" .........., bo!

cionci
06-10-2003, 17:49
N = numero di righe per pagine
K = numero attuale della pagina

"SELECT TOP ".($N*$K)." * FROM Pippo;"

Ora quando vai a visualizzare i risultati non parti dalla prima riga a visualizzarli, ma dalla riga ($N*$K)+1...per le righe precedenti fai avanzare solamente il recordset...