I recently decided to try out a simple PHP/MySQL pagination script I found online. After replacing all the required data and creating a connect.php file with my db information, I got a bunch of errors on the page with the script: here they are, in order:
Warning: include(connect.php) [function.include]: failed to open stream: No such file or directory in /homepages/9/d383324583/htdocs/news/index.php on line 115
Warning: include() [function.include]: Failed opening 'connect.php' for inclusion (include_path='.:/usr/lib/php5') in /homepages/9/d383324583/htdocs/news/index.php on line 115
Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2) in /homepages/9/d383324583/htdocs/news/index.php on line 122
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /homepages/9/d383324583/htdocs/news/index.php on line 122
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /homepages/9/d383324583/htdocs/news/index.php on line 122
Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2) in /homepages/9/d383324583/htdocs/news/index.php on line 135
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /homepages/9/d383324583/htdocs/news/index.php on line 135
Results
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /homepages/9/d383324583/htdocs/news/index.php on line 236
Warning: include(../includes/footer.php) [function.include]: failed to open stream: No such file or directory in /homepages/9/d383324583/htdocs/news/index.php on line 245
Warning: include() [function.include]: Failed opening '../includes/footer.php' for inclusion (include_path='.:/usr/lib/php5') in /homepages/9/d383324583/htdocs/news/index.php on line 245
What's strange here, is that the folder "d383324583" isn't my database name, although it's similarly formatted.
As for the pagination code itself, it's quite long, but mostly simple:
<?php
include('connect.php');
$tableName="news_pages";
$targetpage = "/news/index.php";
$limit = 10;
$query = "SELECT COUNT(*) as num FROM $tableName";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages[num];
$stages = 3;
$page = mysql_escape_string($_GET['page']);
if($page){
$start = ($page - 1) * $limit;
}else{
$start = 0;
}
// Get page data
$query1 = "SELECT * FROM $tableName LIMIT $start, $limit";
$result = mysql_query($query1);
// Initial page num setup
if ($page == 0){$page = 1;}
$prev = $page - 1;
$next = $page + 1;
$lastpage = ceil($total_pages/$limit);
$LastPagem1 = $lastpage - 1;
$paginate = '';
if($lastpage > 1)
{
$paginate .= "<div class='paginate'>";
// Previous
if ($page > 1){
$paginate.= "<a href='$targetpage?page=$prev'>previous</a>";
}else{
$paginate.= "<span class='disabled'>previous</span>"; }
// Pages
if ($lastpage < 7 + ($stages * 2)) // Not enough pages to breaking it up
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
}
elseif($lastpage > 5 + ($stages * 2)) // Enough pages to hide a few?
{
// Beginning only hide later pages
if($page < 1 + ($stages * 2))
{
for ($counter = 1; $counter < 4 + ($stages * 2); $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
$paginate.= "...";
$paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
$paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";
}
// Middle hide some front and some back
elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2))
{
$paginate.= "<a href='$targetpage?page=1'>1</a>";
$paginate.= "<a href='$targetpage?page=2'>2</a>";
$paginate.= "...";
for ($counter = $page - $stages; $counter <= $page + $stages; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
$paginate.= "...";
$paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
$paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";
}
// End only hide early pages
else
{
$paginate.= "<a href='$targetpage?page=1'>1</a>";
$paginate.= "<a href='$targetpage?page=2'>2</a>";
$paginate.= "...";
for ($counter = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
}
}
// Next
if ($page < $counter - 1){
$paginate.= "<a href='$targetpage?page=$next'>next</a>";
}else{
$paginate.= "<span class='disabled'>next</span>";
}
$paginate.= "</div>";
}
echo $total_pages.' Results';
// pagination
echo $paginate;
?>
<ul>
<?php
while($row = mysql_fetch_array($result))
{
echo '<li>'.$row['country'].'</li>';
}
?>
</ul>
<?php include '../includes/footer.php';?>
It is rather colossal, but once again, I gather that it's simple, unless you are, like me, a PHP novice.
If anyone can offer any advece, it would be greatly appreciated.