View Full Version : [PHP] Aiuto su un Paging bastardo !!!!
Devo fare un Paging per un catalogo in PHP e ACCESS, ma devo inserire un "paging" nella pagina, com eposso fare con PHP + ACCESS ???
Io lo so fare solamente con PHP + MySQL e non e' fattibile in quel modo perche' ACCESS non accettail "LIMIT $a,$b".
Mi date un punto di partensa oppure dove posso vedere uno gia fatto per poi adattarlo al mio !!!
Su Acesse c'è SELECT TOP N...
e quindi come organizzeresti un Paging ???
Originariamente inviato da race2
e quindi come organizzeresti un Paging ???
puoi usare: ... TOP $elementi_per_pagina * $numero_pagine ... per selezionare i record.
poi una volta letti i record parti a leggere le righe dalla ($elementi_per_pagina * ($numero pagine - 1)) + 1
ciao ;)
Scusami ma io non conosco Access e mi sto perdendo nella Stringa SQL, mi puoi fare un esempio???
io in php faccio cosi
$Rec_Pagina=10;
if(!isset($Start))$Start=0;
$sSql="SELECT * FROM Tabella LIMIT $Start,$Rec_Pagina";
$sSql_Count="SELECT * FROM Tabella";
include("includes/conn_open.php");
$oComm=mysql_query($sSql,$oConn);
$oCommTot=mysql_query($sSql_Count,$oConn);
$Num_Prodotti=mysql_numrows($oCommTot);
$Numero_Pagine=ceil($Num_Prodotti/$Rec_Pagina);
$Pagina_Corrente=ceil(($Start/$Rec_Pagina)+1);
include("includes/conn_close.php");
//paging
echo"<br><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td style=\"font-size:10px; font-family:Arial; font-weight:bold; color:#000000\" align=\"center\">";
if($Numero_Pagine>1){echo"Pagine <img align=\"absmiddle\" src=\"ico/plp.gif\">  ";}
if($Numero_Pagine>1){
for($Pagina = 1; $Pagina <= $Numero_Pagine; $Pagina++){
echo"[ <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> ]  ";
}}
echo"</td></tr></table>";
"SELECT TOP ".$Rec_Pagina*$Pagina_Corrente."* FROM Tabella;"
E poi ti muovi avanti di ($Rec_Pagina*($Pagina_Corrente-1)) record...
Comuqnue mi spieghi come fai a connetterti ad Access con questo codice ? Stai usando la libreria PHP per MySQL...non ti puoi connettere ad Access in quel modo...
Devi usare la libreria ODBC !!!
Hai ragione ti ho postato un paging di un altra cosa:
<?
$Rec_Pagina=10;
if(!isset($Start))$Start=0;
include("includes/conn_open.php");
$sSql="SELECT * FROM Tabella LIMIT $Start,$Rec_Pagina";
$sSql_Count="SELECT * FROM Tabella";
$oComm=odbc_exec($oConn,$sSql);
$oComm_Count=odbc_exec($oConn,$sSql_Count);
$Num_Prodotti=odbc_num_rows($oComm_Count);
$Numero_Pagine=ceil($Num_Prodotti/$Rec_Pagina);
$Pagina_Corrente=ceil(($Start/$Rec_Pagina)+1);
while(odbc_fetch_row($oComm))
{
$Risultato_1=odbc_result($oComm,"Campo_1");
$Risultato_2=odbc_result($oComm,"Campo_2");
$Risultato_3=odbc_result($oComm,"Campo_3");
//
//qui' HTML che visulaizza il Catalogo
//
}
include("includes/conn_close.php");
//paging
echo"
<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td style=\"font-size:10px; font-family:Arial; font-weight:bold; color:#000000\" align=\"center\">
";
if($Numero_Pagine>1){echo"Pagine <img align=\"absmiddle\" src=\"ico/plp.gif\">  ";}
if($Numero_Pagine>1){
for($Pagina = 1; $Pagina <= $Numero_Pagine; $Pagina++){
echo"[ <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> ]  ";
}}
echo"
</td>
</tr>
</table>
";
?>
Scusami ma perceh mi da come valore di ritorno -1 su "odbc_num_rows()" ???
ho trovato questo:
Using odbc_num_rows() to determine the number of rows available after a SELECT will return -1 with many drivers.
cosa significa ???
Signifca che con molti driver non puoi usare odbc_num_rows() per determinare il numero di righe nel risultato...
Ti torna come uso SELECT TOP ?
Si ma non so cosa vuole dire avere troppi driver !!!
Non hai "troppi driver"...con "molti driver" è inteso come come "molti driver sul totale dei driver odbc esistenti" e non come "con molti driver installati"...
In pratica con diversi driver odbc esistenti odbc_num_rows() non è supportata e ritorna -1...
e quindi com risolvo la cosa dei driver ???
Senza usare odbc_num_rows()...
Ho visto che fai una SELECT solo per contare gli elementi...
Basta sostituire a
$sSql_Count="SELECT * FROM Tabella";
queta query
$sSql_Count="SELECT Count(*) As NumProdotti FROM Tabella";
e poi controllare il contenuto del campo NumProdotti...
Originariamente inviato da cionci
"SELECT TOP ".$Rec_Pagina*$Pagina_Corrente."* FROM Tabella;"
E poi ti muovi avanti di ($Rec_Pagina*($Pagina_Corrente-1)) record...
OK funziona tutto ma ora coma faccio per andare avanti e non visualizzare i primi risultati ???
se clicco nel paging mi visualizza in 3 pagina pure i risultati delle prime 2 !!!
$contatore = 0;
while(odbc_fetch_row($oComm))
{
if(++$contatore <= ($Rec_Pagina*($Pagina_Corrente-1)))
continue;
In questo modo salti la visualizzazione fino ai record interessati...
OK funziona grazie mille!!!!!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.