Php odbc pagenation probléma

Php odbc pagenation probléma
2014-02-28T14:33:21+01:00
2014-02-28T14:44:51+01:00
2022-11-30T15:47:28+01:00
csepcsavo
Sziasztok!


Minap akartam egy hírek oldalt készíteni neten találtam egy jó pagenation-t mysql-hez szépen müködik na most ezt át szeretném szerkeszteni Microsoft SQL Server-re


Remélem tudtok segíteni :)

De van egy kicsi bökkenő átírok mindent és egy problémát dob ki.

Warning: odbc_execute(): SQL error: [Microsoft][SQL Server Native Client 10.0][SQL Server]Executing SQL directly; no cursor., SQL state 01000 in SQLExecute in C:\xampp\htdocs\codeddesign2\pages\home.php on line 114

a forrás így nézne ki:
<?php $sql = odbc_exec($sqlServ,"SELECT id, tartalom, datum, szerkeszto, img, title FROM CMS.dbo.news ORDER BY datum DESC"); $nr = odbc_num_rows($sql); if (isset($_GET['pn'])) { $pn = preg_replace('#[^0-9]#i', '', $_GET['pn']); } else { $pn = 1; } $itemsPerPage = 3; $lastPage = ceil($nr / $itemsPerPage); if ($pn < 1) { $pn = 1; } else if ($pn > $lastPage) { $pn = $lastPage; } $centerPages = ""; $sub1 = $pn - 1; $sub2 = $pn - 2; $add1 = $pn + 1; $add2 = $pn + 2; if ($pn == 1) { $centerPages .= '<li><a class="active" >' . $pn . '</a></li>'; $centerPages .= '<li><a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add1 . '">' . $add1 . '</a></li>'; } else if ($pn == $lastPage) { $centerPages .= '<li><a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub1 . '">' . $sub1 . '</a></li>'; $centerPages .= '<li><a class="active" >' . $pn . '</a></li>'; } else if ($pn > 2 && $pn < ($lastPage - 1)) { $centerPages .= '<li><a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub2 . '">' . $sub2 . '</a></li>'; $centerPages .= '<li><a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub1 . '">' . $sub1 . '</a></li>'; $centerPages .= '<li><a class="active" >' . $pn . '</a></li>'; $centerPages .= '<li><a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add1 . '">' . $add1 . '</a></li>'; $centerPages .= '<li><a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add2 . '">' . $add2 . '</a></li>'; } else if ($pn > 1 && $pn < $lastPage) { $centerPages .= '<li><a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $sub1 . '">' . $sub1 . '</a></li>'; $centerPages .= '<li><a class="active" >' . $pn . '</a></li>'; $centerPages .= '<li><a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $add1 . '">' . $add1 . '</a></li>'; } $limit = ($pn - 1) * $itemsPerPage; $query = 'SELECT * FROM CMS.dbo.news ORDER BY datum DESC LIMIT '.$limit.', '.$itemsPerPage.''; $sql123 =odbc_prepare($sqlServ, $query); $sql2 =odbc_execute($sql123); $paginationDisplay = ""; if ($lastPage != "1"){ $paginationDisplay .= ''; if ($pn != 1) { $previous = $pn - 1; $paginationDisplay .= '<li><a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $previous . '"><img alt="alt_example" src="images/left_pager.jpg" border="0"/></a></li> '; } $paginationDisplay .= '' . $centerPages . ''; if ($pn != $lastPage) { $nextPage = $pn + 1; $paginationDisplay .= '<li><a href="' . $_SERVER['PHP_SELF'] . '?pn=' . $nextPage . '"><img alt="alt_example" src="images/right_pager.jpg" border="0"/></a></li> '; } } $outputList = ''; while($row = odbc_fetch_array($sql2)){ $id = $row["id"]; $title = $row["title"]; $tartalom = $row["tartalom"]; $modified = $row["datum"]; $szerkeszto = $row["szerkeszto"]; $img = $row["img"]; $outputList .='<li> <div class="image"><img alt="alt_example" src="images/media/full/'.$img.'.jpg" /></div> <div class="info"> <div class="comments"> 0 </div> <h3>' .$title. '</h3> <div class="date_n_author">'.$modified.' by '.$szerkeszto.'</div> <p>' . $tartalom . '</p> </div></li>'; } ?> <?php print "$outputList"; ?>
Mutasd a teljes hozzászólást!

  • Van egy rossz hírem: T-SQL-ben (MS féle SQL változat) nem létezik a LIMIT. Tehát ez a query:
    $query = 'SELECT * FROM CMS.dbo.news ORDER BY datum DESC LIMIT '.$limit.', '.$itemsPerPage.'';
    nem fog soha lefutni.

    SQL Server verziótól függően vagy megoldod trükkösen: ld. itt vagy 2012 esetén (ha jól tudom, abban vezették be) használhatsz offset-t.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd