Help needed on a small php code.

Discussion in 'PHP' started by baris22, Oct 24, 2008.

  1. #1
    Hello there. I found a very good pagination code. I am just trying to add

    
    
    $url_title=str_replace(array(" ","%","[","]",">","<"),'_',$row['title']);
    
    
    PHP:
    code to it so I can have proper urls. I could not find the solution.

    Can anyone help me.

    
    
    <?php
    
    	//connect to your database ** EDIT REQUIRED HERE **
    mysql_connect("localhost","root","pass"); //(host, username, password)
    
    //specify database ** EDIT REQUIRED HERE **
    mysql_select_db("d1") or die("Unable to select database"); //select which database we're using
    	
    	// How many adjacent pages should be shown on each side?
    	$adjacents = 3;
    	
    	/* 
    	   First get total number of rows in data table. 
    	   If you have a WHERE clause in your query, make sure you mirror it here.
    	*/
    	$query = "SELECT COUNT(*) as num FROM filedetails";
    	$total_pages = mysql_fetch_array(mysql_query($query));
    	$total_pages = $total_pages[num];
    	
    	/* Setup vars for query. */
    	$limit = 2; 								//how many items to show per page
    	if($page) 
    		$start = ($page - 1) * $limit; 			//first item to display on this page
    	else
    		$start = 0;								//if no page var is given, set start to 0
    	
    	/* Get data. */
    	$query = "SELECT id, title, description FROM filedetails LIMIT $start, $limit";
    	$portfolio = mysql_query($query);
    	
    	/* Setup page vars for display. */
    	if ($page == 0) $page = 1;					//if no page var is given, default to 1.
    	$prev = $page - 1;							//previous page is page - 1
    	$next = $page + 1;							//next page is page + 1
    	$lastpage = ceil($total_pages/$limit);		//lastpage is = total pages / items per page, rounded up.
    	$lpm1 = $lastpage - 1;						//last page minus 1
    	
    	/* 
    		Now we apply our rules and draw the pagination object. 
    		We're actually saving the code to a variable in case we want to draw it more than once.
    	*/
    	$pagination = "";
    	if($lastpage > 1)
    	{	
    		$pagination .= "<div class=\"pagination\">";
    		//previous button
    		if ($page > 1) 
    			$pagination.= "<a href=\"index.php?page=$prev\">« previous</a>";
    		else
    			$pagination.= "<span class=\"disabled\">« previous</span>";	
    		
    		//pages	
    		if ($lastpage < 7 + ($adjacents * 2))	//not enough pages to bother breaking it up
    		{	
    			for ($counter = 1; $counter <= $lastpage; $counter++)
    			{
    				if ($counter == $page)
    					$pagination.= "<span class=\"current\">$counter</span>";
    				else
    					$pagination.= "<a href=\"index.php?page=$counter\">$counter</a>";					
    			}
    		}
    		elseif($lastpage > 5 + ($adjacents * 2))	//enough pages to hide some
    		{
    			//close to beginning; only hide later pages
    			if($page < 1 + ($adjacents * 2))		
    			{
    				for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
    				{
    					if ($counter == $page)
    						$pagination.= "<span class=\"current\">$counter</span>";
    					else
    						$pagination.= "<a href=\"index.php?page=$counter\">$counter</a>";					
    				}
    				$pagination.= "...";
    				$pagination.= "<a href=\"index.php?page=$lpm1\">$lpm1</a>";
    				$pagination.= "<a href=\"index.php?page=$lastpage\">$lastpage</a>";		
    			}
    			//in middle; hide some front and some back
    			elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
    			{
    				$pagination.= "<a href=\"index.php?page=1\">1</a>";
    				$pagination.= "<a href=\"index.php?page=2\">2</a>";
    				$pagination.= "...";
    				for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
    				{
    					if ($counter == $page)
    						$pagination.= "<span class=\"current\">$counter</span>";
    					else
    						$pagination.= "<a href=\"index.php?page=$counter\">$counter</a>";					
    				}
    				$pagination.= "...";
    				$pagination.= "<a href=\"index.php?page=$lpm1\">$lpm1</a>";
    				$pagination.= "<a href=\"index.php?page=$lastpage\">$lastpage</a>";		
    			}
    			//close to end; only hide early pages
    			else
    			{
    				$pagination.= "<a href=\"index.php?page=1\">1</a>";
    				$pagination.= "<a href=\"index.php?page=2\">2</a>";
    				$pagination.= "...";
    				for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
    				{
    					if ($counter == $page)
    						$pagination.= "<span class=\"current\">$counter</span>";
    					else
    						$pagination.= "<a href=\"index.php?page=$counter\">$counter</a>";					
    				}
    			}
    		}
    		
    		//next button
    		if ($page < $counter - 1) 
    			$pagination.= "<a href=\"index.php?page=$next\">next »</a>";
    		else
    			$pagination.= "<span class=\"disabled\">next »</span>";
    		$pagination.= "</div>\n";		
    	}
    ?>
    
    <ul>
    		<?php
    		
    			while($item = mysql_fetch_array($portfolio))
    			{
    		?>
    			<li><a href="/links/<?=$item[id]?>/<?=$item[title]?>"><?=$item[title]?></a></li>
    		<?php
    			}
    		?>
    	</ul>
    
    <?=$pagination?>
    
    
    
    PHP:
    Thanks all
     
    baris22, Oct 24, 2008 IP
  2. baris22

    baris22 Active Member

    Messages:
    543
    Likes Received:
    4
    Best Answers:
    0
    Trophy Points:
    60
    #2
    I found out myself.

    Thanks
     
    baris22, Oct 24, 2008 IP
  3. salahsoftware

    salahsoftware Peon

    Messages:
    63
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #3
    thanks for sharing the code
     
    salahsoftware, Oct 24, 2008 IP
  4. baris22

    baris22 Active Member

    Messages:
    543
    Likes Received:
    4
    Best Answers:
    0
    Trophy Points:
    60
    #4
    this is the style.css for the code.

    
    div.pagination {
    	padding: 3px;
    	margin: 3px;
    }
    
    div.pagination a {
    	padding: 2px 5px 2px 5px;
    	margin: 2px;
    	border: 1px solid #AAAADD;
    	
    	text-decoration: none; /* no underline */
    	color: #000099;
    }
    div.pagination a:hover, div.pagination a:active {
    	border: 1px solid #000099;
    
    	color: #000;
    }
    div.pagination span.current {
    	padding: 2px 5px 2px 5px;
    	margin: 2px;
    		border: 1px solid #000099;
    		
    		font-weight: bold;
    		background-color: #000099;
    		color: #FFF;
    	}
    	div.pagination span.disabled {
    		padding: 2px 5px 2px 5px;
    		margin: 2px;
    		border: 1px solid #EEE;
    	
    		color: #DDD;
    	}
    	
    
    
    Code (markup):
    And this is the full code

    
    
    <?php
    
    	//connect to your database ** EDIT REQUIRED HERE **
    mysql_connect("localhost","root","pass"); //(host, username, password)
    
    //specify database ** EDIT REQUIRED HERE **
    mysql_select_db("d1") or die("Unable to select database"); //select which database we're using
    	
    	// How many adjacent pages should be shown on each side?
    	$adjacents = 3;
    	
    	/* 
    	   First get total number of rows in data table. 
    	   If you have a WHERE clause in your query, make sure you mirror it here.
    	*/
    	$query = "SELECT COUNT(*) as num FROM filedetails";
    	$total_pages = mysql_fetch_array(mysql_query($query));
    	$total_pages = $total_pages[num];
    	
    	/* Setup vars for query. */
    	$limit = 2; 								//how many items to show per page
    	if($page) 
    		$start = ($page - 1) * $limit; 			//first item to display on this page
    	else
    		$start = 0;								//if no page var is given, set start to 0
    	
    	/* Get data. */
    	$query = "SELECT id, title, description FROM filedetails LIMIT $start, $limit";
    	$portfolio = mysql_query($query);
    	
    	/* Setup page vars for display. */
    	if ($page == 0) $page = 1;					//if no page var is given, default to 1.
    	$prev = $page - 1;							//previous page is page - 1
    	$next = $page + 1;							//next page is page + 1
    	$lastpage = ceil($total_pages/$limit);		//lastpage is = total pages / items per page, rounded up.
    	$lpm1 = $lastpage - 1;						//last page minus 1
    	
    	/* 
    		Now we apply our rules and draw the pagination object. 
    		We're actually saving the code to a variable in case we want to draw it more than once.
    	*/
    	$pagination = "";
    	if($lastpage > 1)
    	{	
    		$pagination .= "<div class=\"pagination\">";
    		//previous button
    		if ($page > 1) 
    			$pagination.= "<a href=\"index.php?page=$prev\">« previous</a>";
    		else
    			$pagination.= "<span class=\"disabled\">« previous</span>";	
    		
    		//pages	
    		if ($lastpage < 7 + ($adjacents * 2))	//not enough pages to bother breaking it up
    		{	
    			for ($counter = 1; $counter <= $lastpage; $counter++)
    			{
    				if ($counter == $page)
    					$pagination.= "<span class=\"current\">$counter</span>";
    				else
    					$pagination.= "<a href=\"index.php?page=$counter\">$counter</a>";					
    			}
    		}
    		elseif($lastpage > 5 + ($adjacents * 2))	//enough pages to hide some
    		{
    			//close to beginning; only hide later pages
    			if($page < 1 + ($adjacents * 2))		
    			{
    				for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
    				{
    					if ($counter == $page)
    						$pagination.= "<span class=\"current\">$counter</span>";
    					else
    						$pagination.= "<a href=\"index.php?page=$counter\">$counter</a>";					
    				}
    				$pagination.= "...";
    				$pagination.= "<a href=\"index.php?page=$lpm1\">$lpm1</a>";
    				$pagination.= "<a href=\"index.php?page=$lastpage\">$lastpage</a>";		
    			}
    			//in middle; hide some front and some back
    			elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
    			{
    				$pagination.= "<a href=\"index.php?page=1\">1</a>";
    				$pagination.= "<a href=\"index.php?page=2\">2</a>";
    				$pagination.= "...";
    				for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
    				{
    					if ($counter == $page)
    						$pagination.= "<span class=\"current\">$counter</span>";
    					else
    						$pagination.= "<a href=\"index.php?page=$counter\">$counter</a>";					
    				}
    				$pagination.= "...";
    				$pagination.= "<a href=\"index.php?page=$lpm1\">$lpm1</a>";
    				$pagination.= "<a href=\"index.php?page=$lastpage\">$lastpage</a>";		
    			}
    			//close to end; only hide early pages
    			else
    			{
    				$pagination.= "<a href=\"index.php?page=1\">1</a>";
    				$pagination.= "<a href=\"index.php?page=2\">2</a>";
    				$pagination.= "...";
    				for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
    				{
    					if ($counter == $page)
    						$pagination.= "<span class=\"current\">$counter</span>";
    					else
    						$pagination.= "<a href=\"index.php?page=$counter\">$counter</a>";					
    				}
    			}
    		}
    		
    		//next button
    		if ($page < $counter - 1) 
    			$pagination.= "<a href=\"index.php?page=$next\">next »</a>";
    		else
    			$pagination.= "<span class=\"disabled\">next »</span>";
    		$pagination.= "</div>\n";		
    	}
    ?>
    <!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>Untitled Document</title>
    <link href="style.css" rel="stylesheet" type="text/css" />
    </head>
    
    <body>
    <ul>
    		<?php
    		
    			while($item = mysql_fetch_array($portfolio))
    			{
    			
    		$url_title=str_replace(array(" ","%","[","]",">","<"),'_',$item['title']);
    		?>
    			<li><a href="/links/<?=$item[id]?>/<?=$url_title?>.html"><?=$item[title]?></a></li>
    		<?php
    			}
    		?>
    	</ul>
    
    <?=$pagination?>
    </body>
    </html>
    
    
    PHP:
    And the output is like

    [​IMG]

    Thanks
     
    baris22, Oct 25, 2008 IP