PDA

View Full Version : [PHP] Aiuto su un Paging bastardo !!!!


race2
27-10-2003, 12:32
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 !!!

cionci
27-10-2003, 13:09
Su Acesse c'è SELECT TOP N...

race2
27-10-2003, 13:47
e quindi come organizzeresti un Paging ???

VICIUS
27-10-2003, 16:59
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 ;)

race2
28-10-2003, 16:27
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\">&nbsp&nbsp";}
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>";

cionci
29-10-2003, 00:52
"SELECT TOP ".$Rec_Pagina*$Pagina_Corrente."* FROM Tabella;"
E poi ti muovi avanti di ($Rec_Pagina*($Pagina_Corrente-1)) record...

cionci
29-10-2003, 00:53
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 !!!

race2
29-10-2003, 12:05
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\">&nbsp&nbsp";}
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>&nbsp] &nbsp";
}}
echo"
</td>
</tr>
</table>
";
?>

race2
29-10-2003, 12:16
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 ???

cionci
29-10-2003, 18:31
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 ?

race2
30-10-2003, 03:20
Si ma non so cosa vuole dire avere troppi driver !!!

cionci
30-10-2003, 08:04
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...

race2
30-10-2003, 13:15
e quindi com risolvo la cosa dei driver ???

cionci
30-10-2003, 14:09
Senza usare odbc_num_rows()...

cionci
30-10-2003, 14:21
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...

race2
30-10-2003, 17:53
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 !!!

cionci
30-10-2003, 19:31
$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...

race2
30-10-2003, 20:16
OK funziona grazie mille!!!!!

cionci
30-10-2003, 22:11
Di niente...