Är det någon här ute som kan guida en stackare på vägen mot att skapa en paging mot en Microsoft Access Db, jag kunde ju inte använda mig av en MySQL-baserad paging, eftersom Microsoft Access db inte stödjer LIMIT!!!
Plz. Hjälp!! :q
9 svar · 459 visningar · startad av Fredde Mannen
Är det någon här ute som kan guida en stackare på vägen mot att skapa en paging mot en Microsoft Access Db, jag kunde ju inte använda mig av en MySQL-baserad paging, eftersom Microsoft Access db inte stödjer LIMIT!!!
Plz. Hjälp!! :q
Jag skrev ihop följande, men har inte möjligheten att testa det... Säg gärna till om det fungerar, då lägger jag upp det under wF-Script. :)
<?php
define( "POSTS_PER_PAGE", 10 );
if( !isset( $_GET[ 'curPage' ] ) || $_GET[ 'curPage' ] == "" ) {
$curPage = 1;
}
else {
$curPage = ( int )$_GET[ 'curPage' ];
}
$adoConnection = new COM( "ADODB.Connection" );
$adoRecordset = new COM( "ADODB.Recordset" );
$adoConnection->open( "driver={Microsoft Access Driver (*.mdb); DBQ=C:\\Sökväg\\Till\\Databas.mdb" );
$adoRecordset->CursorLocation = 3;
$adoRecordset->CahcheSize = POSTS_PER_PAGE;
$adoRecordset->open( "SELECT name, email FROM tbl ORDER BY name ASC, email ASC", $adoConnection );
$adoRecordset->MoveFirst;
$adoRecordset->PageSize = POSTS_PER_PAGE;
$totalPages = $adoRecordset->PageCount;
$adoRecordset->AbsolutePage = $curPage;
echo "<html>\n<head>\n<title>Paging!</title>\n</head>\n<body>\n\n";
$counter = 0;
while( $adoRecordset->EOF != true AND counter < $adoRecordset->PageSize ) {
echo $adoRecordset->Fields( "name" ) . " - " . $adoRecordset->Fields( "email" ) . "<br />\n";
$counter++;
$adoRecordset->MoveNext
}
echo "<br />\n";
echo "Current page: " . $curPage . "<br />\n";
echo "Of totally: " . $totalPages . "<br />\n";
if( $curPage > 1 )
echo "<a href=\"" . $_SERVER[ 'PHP_SELF' ] . "?curPage=" . $curPage - 1 . "\">Föregående</a>";
echo " ";
if( ( ( int ) $curPage ) != ( ( int ) $totalPages ) )
echo "<a href=\"" . $_SERVER[ 'PHP_SELF' ] . "?curPage=" . $curPage + 1 . "\">Nästa</a>";
echo "\n<br />\n";
echo "</body>\n</html>";
?>
Du ser nog var du ska ändra i koden, så att det passar dig. ;)
Jepp det ska jag göra!!! :) tackar tackar!!!
Funkade inte, den gav felmeddelande:
Parse error: parse error, unexpected '}' in c:\inetpub\wwwroot\nya\default.php on line 38
Update:
<?php
define( "POSTS_PER_PAGE", 10 );
if( !isset( $_GET[ 'curPage' ] ) || $_GET[ 'curPage' ] == "" ) {
$curPage = 1;
}
else {
$curPage = ( int )$_GET[ 'curPage' ];
}
$adoConnection = new COM( "ADODB.Connection" );
$adoRecordset = new COM( "ADODB.Recordset" );
$adoConnection->open( "driver={Microsoft Access Driver (*.mdb)}; DBQ=C:\\Sökväg\\Till\\Databas.mdb" );
$adoRecordset->CursorLocation = 3;
$adoRecordset->CahcheSize = POSTS_PER_PAGE;
$adoRecordset->open( "SELECT name, email FROM tbl ORDER BY name ASC, email ASC", $adoConnection );
$adoRecordset->MoveFirst;
$adoRecordset->PageSize = POSTS_PER_PAGE;
$totalPages = $adoRecordset->PageCount;
$adoRecordset->AbsolutePage = $curPage;
echo "<html>\n<head>\n<title>Paging!</title>\n</head>\n<body>\n\n";
$counter = 0;
while( $adoRecordset->EOF != true && counter < $adoRecordset->PageSize ) {
echo $adoRecordset->Fields( "name" ) . " - " . $adoRecordset->Fields( "email" ) . "<br />\n";
$counter++;
$adoRecordset->MoveNext;
}
echo "<br />\n";
echo "Current page: " . $curPage . "<br />\n";
echo "Of totally: " . $totalPages . "<br />\n";
if( $curPage > 1 )
echo "<a href=\"" . $_SERVER[ 'PHP_SELF' ] . "?curPage=" . $curPage - 1 . "\">Föregående</a>";
echo "&nbsp; &nbsp; &nbsp; &nbsp;";
if( ( ( int ) $curPage ) != ( ( int ) $totalPages ) )
echo "<a href=\"" . $_SERVER[ 'PHP_SELF' ] . "?curPage=" . $curPage + 1 . "\">Nästa</a>";
echo "\n<br />\n";
echo "</body>\n</html>";
?>
errors!!!
Warning: Invoke() failed: Undantag inträffade. Source: Microsoft OLE DB Provider for ODBC Drivers Description: [Microsoft][Drivrutin för ODBC Microsoft Access]Allmänt fel Det går inte att öppna registernyckeln 'Temporary (volatile) Jet DSN for process 0x644 Thread 0x640 DBC 0xb6cb4c Jet'. in c:\inetpub\wwwroot\nya\default.php on line 16
Warning: Unable to lookup CahcheSize: Okänt namn. in c:\inetpub\wwwroot\nya\default.php on line 19
Warning: Invoke() failed: Undantag inträffade. Source: ADODB.Recordset Description: Åtgärden är inte tillåten på ett objekt som refererar till en stängd eller en ogiltig anslutning. in c:\inetpub\wwwroot\nya\default.php on line 20
Warning: PropGet() failed: Undantag inträffade. Source: ADODB.Recordset Description: Åtgärden är inte tillåten när objektet är stängt. in c:\inetpub\wwwroot\nya\default.php on line 24
Warning: PropPut() failed: Undantag inträffade. Source: ADODB.Recordset Description: Åtgärden är inte tillåten när objektet är stängt. in c:\inetpub\wwwroot\nya\default.php on line 26
Warning: PropGet() failed: Undantag inträffade. Source: ADODB.Recordset Description: Åtgärden är inte tillåten när objektet är stängt. in c:\inetpub\wwwroot\nya\default.php on line 32
Notice: Use of undefined constant counter - assumed 'counter' in c:\inetpub\wwwroot\nya\default.php on line 32
och så nåra hundara till... :stud
Jeeez... :o
Då testar vi igen:
<?php
define( "POSTS_PER_PAGE", 10 );
if( !isset( $_GET[ 'curPage' ] ) || $_GET[ 'curPage' ] == "" ) {
$curPage = 1;
}
else {
$curPage = ( int )$_GET[ 'curPage' ];
}
$adoConnection = new COM( "ADODB.Connection" );
$adoRecordset = new COM( "ADODB.Recordset" );
$adoConnection->open( "DSN=dinDSN" );
$adoRecordset->CursorLocation = 3;
$adoRecordset->CacheSize = POSTS_PER_PAGE;
$adoRecordset->open( "SELECT name, email FROM tbl ORDER BY name ASC, email ASC", $adoConnection, 3, 3 );
$adoRecordset->MoveFirst;
$adoRecordset->PageSize = POSTS_PER_PAGE;
$totalPages = $adoRecordset->PageCount;
$adoRecordset->AbsolutePage = $curPage;
echo "<html>\n<head>\n<title>Paging!</title>\n</head>\n<body>\n\n";
$counter = 0;
while( $adoRecordset->EOF != true && counter < $adoRecordset->PageSize ) {
echo $adoRecordset->Fields( "name" ) . " - " . $adoRecordset->Fields( "email" ) . "<br />\n";
$counter++;
$adoRecordset->MoveNext;
}
echo "<br />\n";
echo "Current page: " . $curPage . "<br />\n";
echo "Of totally: " . $totalPages . "<br />\n";
if( $curPage > 1 )
echo "<a href=\"" . $_SERVER[ 'PHP_SELF' ] . "?curPage=" . $curPage - 1 . "\">Föregående</a>";
echo " ";
if( ( ( int ) $curPage ) != ( ( int ) $totalPages ) )
echo "<a href=\"" . $_SERVER[ 'PHP_SELF' ] . "?curPage=" . $curPage + 1 . "\">Nästa</a>";
echo "\n<br />\n";
echo "</body>\n</html>";
?>
Till det här exemplet måste du dock ha en DSN för din databas.
Funkade en anningen bättre!!! =) Inga fel meddelanden ialla fall!!! tackar och bockar!!! :e
fick dock ordna till en grejj som inte funkade... det var nästa och föregående sida!!!
Vad var fel då? Fungerar det nu?
Felet och felet...
Felet, den skrev aldrig ut Nästa och föregående som länkar utan koden:
if( $curPage > 1 )
echo "<a href=\"" . $_SERVER[ 'PHP_SELF' ] . "?curPage=" . $curPage - 1 . "\">Föregående</a>";
echo " ";
if( ( ( int ) $curPage ) != ( ( int ) $totalPages ) )
echo "<a href=\"" . $_SERVER[ 'PHP_SELF' ] . "?curPage=" . $curPage + 1 . "\">Nästa</a>";
resulterade bara i :
1">Nästa
Så jag ändrade det till:
if( $curPage > 1 ) {
$page=$curPage - 1;
echo "<a href=\"default.php?curPage=" . $page . "\">Föregående</a>";
}
echo " ";
if( ( ( int ) $curPage ) != ( ( int ) $totalPages ) ) {
$page=$curPage + 1;
echo "<a href=\"default.php?curPage=" . $page . "\">Nästa</a>";
}
och vips så skrev den ut Nästa och Föregående....
Tack för all hjälp!!! :birp *skål*