Hi, I've tried a few forums to get help but most forums seem dead or have lazy helpers so I thought i'd try here 🙂
I am trying to convert an old pagination script to work with php5 or higher. I believe this script or similar has been discussed before on this forum but I thought I'd start a new topic. Not all of the script needs converting, only a few lines which contain mysql_ ect
This is the script i am working with but havnt included the config file but the info can be provided if needed.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Papermashup.com | PHP Pagination</title>
<link href="../style.css" rel="stylesheet" type="text/css" />

<style>
.paginate {
font-family:Arial, Helvetica, sans-serif;
	padding: 3px;
	margin: 3px;
}

.paginate a {
	padding:2px 5px 2px 5px;
	margin:2px;
	border:1px solid #999;
	text-decoration:none;
	color: #666;
}
.paginate a:hover, .paginate a:active {
	border: 1px solid #999;
	color: #000;
}
.paginate span.current {
    margin: 2px;
	padding: 2px 5px 2px 5px;
		border: 1px solid #999;

	font-weight: bold;
	background-color: #999;
	color: #FFF;
}
.paginate span.disabled {
	padding:2px 5px 2px 5px;
	margin:2px;
	border:1px solid #eee;
	color:#DDD;
}

li{
	padding:4px;
	margin-bottom:3px;
	background-color:#FCC;
	list-style:none;}

ul{margin:6px;
padding:0px;}	

</style>
</head>
<body>
<?php
require('includes/config.php');


$targetpage = 'pagination.php'; 	
$limit = 10; 

$stmt = $db->prepare("SELECT COUNT(*) as num FROM members");
$stmt->bindParam(':members', $q, PDO::PARAM_INT);
$stmt->execute();
$total_pages = $stmt->fetchColumn(0);

$stages = 3;
$page = (isset($_GET["page"])) ? (int)$_GET["page"] : 1;
if($page){
	$start = ($page - 1) * $limit; 
}else{
	$start = 0;	
	}	

// Get page data
$query1 = "SELECT * FROM members 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['username'].'</li>';
		}
	?>
</ul>
</body>
</html>

the error i am getting is this: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\pagination.php on line 188

the url I am testing it on is this: http://www.finchkeeper.com/pagination.php

I would appreciate what help I can get with this, it would be great to have this topic marked as [solved]. thanks

    Is there a particular reason why you are mixing PDO and the (very deprecated) MySQL extension?

    It appears that $result is false, which means your query is failing. You should always check to ensure that your query was successful before moving on. Make sure the values of $start and $limit are what you are expecting. Also double-check that members is the correct table name.

      the reason why it is mixed with PDO and SQL is because ive been trying to convert it to PDO as it is an old script, everything seems ok until i reach this section below:

      // Get page data
          $query1 = "SELECT * FROM members LIMIT $start, $limit";
          $result = mysql_query($query1);

      i am not sure how to write the same thing in PDO. i have been testing it as i go along and i do have the PDO error reporting enabled in the config file.
      there seems to be just 2 small sections of that script that needs converting thats all but i need a little help.

            $stmt = $db->prepare("SELECT COUNT(*) as num FROM members");
            $stmt->bindParam(':members', $q, PDO::PARAM_INT);
        

        You don't have any parameters in that query - there's nothing to bind to. You might as well use [man]pdo.query[/man].

            $query1 = "SELECT * FROM members LIMIT $start, $limit";
            $result = mysql_query($query1);
        

        There aren't actually any parameters here either.

          its ok now i finally got the whole script working perfectly. below is the whole script but only missing the config.php file. I hope someone else in future can make some use of this script because i spent days on the internet looking for such a script in php5 or higher and found nothing but crappy simple ones. here is the finished scrip.

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml">
          <head>
          <title>Page</title>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
          <meta property="og:title" content="Page">
          <meta property="og:type" content="website">
          <meta property="og:url" content="http://www.finchkeeper.com/page.php">
          <meta property="og:image" content="http://www.finchkeeper.com/images/logo.jpg">
          <meta property="og:description" content="Have a problem with your finch, just looking for general information, want to look for documents for your finches or even want to read up on avian diseases then you have come to the right place because we have compiled links and information into neatly packed catagories. We have tried to organise the site to make your life easier and to save you a heap of time while also offering valuable information." />
          <!-- Open Graph Meta Tags by: www.MetaTagGenerator.org -->
          	<link href="css/grey.css" rel="stylesheet" type="text/css" />
              <style type="text/css">
                  .records {
                      width: 510px;
                      margin: 5px;
                      padding:2px 5px;
                      border:1px solid #B6B6B6;
                  }
          
              .record {
                  color: #474747;
                  margin: 5px 0;
                  padding: 3px 5px;
              	background:#E6E6E6;  
                  border: 1px solid #B6B6B6;
                  cursor: pointer;
                  letter-spacing: 2px;
              }
              .record:hover {
                  background:#D3D2D2;
              }
          
          
              .round {
              	-moz-border-radius:8px;
              	-khtml-border-radius: 8px;
              	-webkit-border-radius: 8px;
              	border-radius:8px;    
              }    
          
              p.createdBy{
                  padding:5px;
                  width: 510px;
              	font-size:15px;
              	text-align:center;
              }
              p.createdBy a {color: #666666;text-decoration: none;}        
          </style> 
          <link rel="stylesheet" type="text/css" href="style.css" />
          <!--[if lte IE 6]><link rel="stylesheet" type="text/css" href="ie.css" /><![endif]-->
          </head>
          <body>
          <?php require('includes/config.php'); ?>
          <!-- BEGIN wrapper -->
          <div id="wrapper">
            <!-- BEGIN header -->
             <?php include("navs/header.php"); ?>
            <!-- END header -->
            <?php
          //if not logged in redirect to login page
          if(!$user->is_logged_in()){ header('Location: login.php'); } 
          ?>
            <!-- BEGIN left sidebar -->
            <?php include("navs/leftnav.php"); ?>
            <!-- END left sidebar -->
          
            <!-- BEGIN content -->
            <div id="content">
              <div class="recent">
                <!-- begin post -->
                <div class="single">
                  <h2>Sample Page</h2>
          
          
          
          
          
          
          
          
            </div>
            <!-- end post -->
          </div>
          <!-- END recent posts  -->
            </div>
            <!-- END content -->
          <!-- BEGIN rightnav -->
             <?php include("navs/rightnav.php"); ?>
          <!-- END rightnav -->
          </div>
          <!-- END wrapper -->
          <!-- BEGIN footer -->
          <?php
          /* counter */
          //opens countlog.txt to read the number of hits
          $datei = fopen("hits/pdf.txt","r");
          $count = fgets($datei,1000);
          fclose($datei);
          $count=$count + 1 ;
          $counter = '<p class="r"><input type="button" value=" '.$count.' Hits"/></p>';
          include("navs/footer.php");
          echo "\n" ;
          // opens countlog.txt to change new hit number
          $datei = fopen("hits/pdf.txt","w");
          fwrite($datei, $count);
          fclose($datei);
          ?>
          <!-- END footer -->
          </body>
          </html>

          I really appreciate all the replies and help but i ended up getting a little help from a php facebook group, thanks again

            sorry i posted the wrong finished script, here is the actual script

            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
            <title>Papermashup.com | PHP Pagination</title>
            <link href="../style.css" rel="stylesheet" type="text/css" />
            <style>
            .paginate {
            font-family:Arial, Helvetica, sans-serif;
            	padding: 3px;
            	margin: 3px;
            }
            
            .paginate a {
            	padding:2px 5px 2px 5px;
            	margin:2px;
            	border:1px solid #999;
            	text-decoration:none;
            	color: #666;
            }
            
            .paginate a:hover, .paginate a:active {
            	border: 1px solid #999;
            	color: #000;
            }
            
            .paginate span.current {
                margin: 2px;
            	padding: 2px 5px 2px 5px;
            	border: 1px solid #999;
            	font-weight: bold;
            	background-color: #999;
            	color: #FFF;
            }
            
            .paginate span.disabled {
            	padding:2px 5px 2px 5px;
            	margin:2px;
            	border:1px solid #eee;
            	color:#DDD;
            }
            
            li {
            	padding:4px;
            	margin-bottom:3px;
            	background-color:#FCC;
            	list-style:none;
            }
            
            ul {
            	margin:6px;
            	padding:0px;
            }	
            </style>
            </head>
            <body>
            <br />
            <?php
            require('includes/config.php');
            	$targetpage = 'pagination.php'; 	
            	$limit = 3; 
            
            $stmt = $db->prepare("SELECT COUNT(*) as num FROM members");
            $stmt->bindParam(':members', $q, PDO::PARAM_INT);
            $stmt->execute();
            $total_pages = $stmt->fetchColumn(0);
            
            $stages = 3;
            $page = (isset($_GET["page"])) ? (int)$_GET["page"] : 1;
            if($page){
            	$start = ($page - 1) * $limit; 
            }else{
            	$start = 0;	
            	}	
            $sql = "SELECT * FROM members LIMIT $start, $limit";
            foreach ($db->query($sql) as $row) {
            }
            	// 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>";		
            }
             // pagination
             echo $paginate;
            ?>
            <ul>
            <?php 
            		foreach ($db->query($sql) as $row)
            		{
            		echo '<li>'.$row['username'].' '.$row['urank'].'</li>';
            
            	}
             echo $paginate;
            	?>
            </ul>
            </body>
            </html>

            Sorry i was unable to edit the last post to correct it. could an admin or moderator please mark this post as SOLVED thank you

              finchkeeper;11052007 wrote:

              could an admin or moderator please mark this post as SOLVED thank you

              You can do this - at the top of the thread click on thread tools and select mark as resolved.

                thanks for the tip, would it be possible to delete the script i posted before last? it posted it by mistake. the very last script was the one i was meant to post

                  Write a Reply...