【发布时间】:2016-07-07 22:52:50
【问题描述】:
我不知道这段代码有什么问题,但如果我使用 FULL JOIN,则 JOINed 表上的分页会连续。我的意思是,如果 JOINed 表的行数多于第一个表,则结果是空的 html 表,但页面很多。 如果我删除 JOINed 表,则结果是 5-6 行的普通表。但是当 JOIN 和表格变成 5-6 行的信息和 100 的空单元格时。 对此代码有什么建议吗?或者我必须使用其他代码?我不敢相信分页是如此痛苦,找不到好的工作代码。 先感谢您! 故障码如下:
{
/* Set the number of results to display on each page. */
$rowsPerPage = 20;
try
{
//$query = 'SELECT COUNT(*) FROM paerp.dbo.Truck';
// simple query
//$stmtcount = $pdo->query( $query );
//$rowcountall = $stmtcount;
/* Order target data by ID and select only items (by row number) to display on a given page.
The query asks for one "extra" row as an indicator that another page of data exists. */
$tsql = "SELECT * FROM
(SELECT ROW_NUMBER() OVER(ORDER BY d.id desc)
AS RowNumber, d.id as iddr, d.SqlInsertDate, d.PACourceNumber, d.ClientQuerydate, d.ClientName, d.SpeditorName, d.CourseType, d.Driver1, d.Driver2, d.TruckRegisteredNumber, d.TrailerRegisteredNumber, d.StartWorkingDay, d.LoadingAddress, d.UnloadingAddress, d.AgreedLoadingDay, d.ArrivalLoadingDay, d.DateTimeLoading, d.AgreedUnloadingDay, d.ArrivalUnloadingDay, d.DateTimeUnloading, d.PossitionAt8, d.PossitionAt15, d.NextLoading, d.PossitionNumber, d.ExportImport, d.LoadingCustoms, d.UnloadingCustoms, d.InvoiceNumber, d.StatusCource, d.StatusTruck, d.Notes, e.id, e.Names
FROM dbo.ClientQueries d
FULL JOIN dbo.Employee e ON d.Driver1 = e.id )
AS TEST
WHERE RowNumber BETWEEN ? AND ? + 1";
$sth = $pdo->prepare($tsql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
/* Determine which row numbers to display. */
if(isset($_GET['lowRowNum']) && isset($_GET['highRowNum']))
{
$lowRowNum = $_GET['lowRowNum'];
$highRowNum = $_GET['highRowNum'];
}
else
{
$lowRowNum = 1;
$highRowNum = $rowsPerPage;
}
/* Execute the query with parameter values. */
$sth->execute(array($lowRowNum, $highRowNum));
$numRows = $sth->rowCount();
if($numRows <= 0)
{
echo "No data returned.</br>";
}
else
{
echo '<h3>Преглед записи </h3>';
print("<table class='mytable'>
<tr class='headertb'>
<td class='bold'>SqlInsertDate</td>
<td class='bold'>PACourceNumber</td>
<td class='bold'>ClientQuerydate</td>
<td class='bold'>ClientName</td>
<td class='bold'>SpeditorName</td>
<td class='bold'>CourseType</td>
<td class='bold'>Driver</td>
<td class='bold'>Driver2</td>
<td class='bold'>TruckRegisteredNumber</td>
<td class='bold'>TrailerRegisteredNumber</td>
<td class='bold'>StartWorkingDay</td>
<td class='bold'>LoadingAddress</td>
<td class='bold'>UnloadingAddress</td>
<td class='bold'>AgreedLoadingDay</td>
<td class='bold'>DateTimeLoading</td>
<td class='bold'>DateTimeUnloading</td>
<td class='bold'>PossitionAt8</td>
<td class='bold'>PossitionAt15</td>
<td class='bold'>PossitionNumber</td>
<td class='bold'>StatusCource</td>
<td class='bold'>StatusTruck</td>
<td class='bold'>Notes</td>
<td class='bold'>Редакция</td>
</tr>");
/*Display all but the last of the rows in the result set.*/
for($i=0; $i<$numRows-1; $i++)
{
$row = $sth->fetch(PDO::FETCH_NUM);
print("<tr>
<td>$row[1]</td>
<td>$row[2]</td>
<td>$row[3]</td>
<td>$row[4]</td>
<td>$row[5]</td>
<td>$row[6]</td>
<td>$row[7]</td>
<td>$row[8]</td>
<td>$row[9]</td>
<td>$row[10]</td>
<td>$row[11]</td>
<td>$row[12]</td>
<td>$row[13]</td>
<td>$row[14]</td>
<td>$row[15]</td>
<td>$row[16]</td>
<td>$row[17]</td>
<td>$row[18]</td>
<td>$row[19]</td>
<td>$row[20]</td>
<td>$row[21]</td>
<td>$row[22]</td>
<td>$row[23]</td>
<td>$row[24]</td>
<td>$row[25]</td>
<td><a href=update.php?id=$row[1]>Редакция</a></td></tr>");
}
/*Display the last row in the result set if
there isn't another page of results.*/
if($numRows <=20)
{
$row = $sth->fetch(PDO::FETCH_NUM);
print("<tr>
<td>$row[1]</td>
<td>$row[2]</td>
<td>$row[3]</td>
<td>$row[4]</td>
<td>$row[5]</td>
<td>$row[6]</td>
<td>$row[7]</td>
<td>$row[8]</td>
<td>$row[9]</td>
<td>$row[10]</td>
<td>$row[11]</td>
<td>$row[12]</td>
<td>$row[13]</td>
<td>$row[14]</td>
<td>$row[15]</td>
<td>$row[16]</td>
<td>$row[17]</td>
<td>$row[18]</td>
<td>$row[19]</td>
<td>$row[20]</td>
<td>$row[21]</td>
<td>$row[22]</td>
<td>$row[23]</td>
<td>$row[24]</td>
<td>$row[25]</td>
<td><a href=update.php?id=$row[1]>Редакция</a></td>
</tr>");
}
print("</table></br></br>");
/* If there are previous results,
display the Previous Page link. */
if($lowRowNum > 1)
{
$prev_page_high = $lowRowNum - 1;
$prev_page_low = $prev_page_high - $rowsPerPage + 1;
$prevPage = "?lowRowNum=$prev_page_low&".
"highRowNum=$prev_page_high";
print("<a href=$prevPage><< Предишна страница</a>".
" ");
}
/* If there are more results, display the Next Page link.
We know there are more results if the query returned 11 rows. */
if($numRows >= 21)
{
$next_page_low = $highRowNum + 1;
$next_page_high = $next_page_low + $rowsPerPage - 1;
$nextPage = "?lowRowNum=$next_page_low&".
"highRowNum=$next_page_high";
print("<a href=$nextPage>Следваща страница >></a>");
}
}
}
catch(Exception $e)
{
die( print_r( $e->getMessage() ) );
}
}
【问题讨论】:
标签: php pdo pagination