Jump to content

How to Beat the IFrame (what can I do in PHP to avoid it)


methosk

Recommended Posts

Well, I like using the Iframe cause its easy, quick, and usually works decently (even tho not the greatest, or even decent thing to do, it has always worked with effort), but I want to lose it, to use php or javascript (preferably PHP if possible, but JS if necessary, or Ajax, etc etc).

 

This is a version of my script using Iframe-

http://fivehyphen.com/1024/index.php?p=matches

 

Everything seems all right, but here is a similar version using -

http://fivehyphen.com/1024/index.php?p=roster

 

<?php
echo "Roster: <br>";
?>
<br>
<div>
<?php
include("roster2.php")
?>
</div>

 

<link href="style.css" rel="stylesheet" type="text/css">
<?php
/*
	Place code to connect to your DB here.
*/
mysql_connect("", "", "") or
    die("Could not connect: " . mysql_error());
mysql_select_db("");

$tbl_name="";		//your table name
// 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 $tbl_name";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages[num];

/* Setup vars for query. */
$targetpage = "roster2.php"; 	//your file name  (the name of this file)
$limit = 10; 								//how many items to show per page
$page = $_GET['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. */
$sql = "SELECT * FROM $tbl_name WHERE clan='1' ORDER by type<'0' LIMIT $start, $limit";
$result = mysql_query($sql);

/* 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=\"$targetpage?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=\"$targetpage?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=\"$targetpage?page=$counter\">$counter</a>";					
			}
			$pagination.= "...";
			$pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
			$pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";		
		}
		//in middle; hide some front and some back
		elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
		{
			$pagination.= "<a href=\"$targetpage?page=1\">1</a>";
			$pagination.= "<a href=\"$targetpage?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=\"$targetpage?page=$counter\">$counter</a>";					
			}
			$pagination.= "...";
			$pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
			$pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";		
		}
		//close to end; only hide early pages
		else
		{
			$pagination.= "<a href=\"$targetpage?page=1\">1</a>";
			$pagination.= "<a href=\"$targetpage?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=\"$targetpage?page=$counter\">$counter</a>";					
			}
		}
	}

	//next button
	if ($page < $counter - 1) 
		$pagination.= "<a href=\"$targetpage?page=$next\">next »</a>";
	else
		$pagination.= "<span class=\"disabled\">next »</span>";
	$pagination.= "</div>\n";		
}
?>

<?php

echo "<table border='1' align='center'><tr><td width='100'>Username:</td>
<td width='100'>First Name:</td>
<td width='100'>Last Name:</td>
<td width='100'>Gender:</td>
</tr></table>";

	while($row = mysql_fetch_array($result, MYSQL_ASSOC))
	{
echo "<table border='1' align='center'><tr><td width='100'> {$row['username']}  </td>" .
         "<td width='100'> {$row['first_name']}  </td>" . 
         "<td width='100'> {$row['last_name']}  </td>" .
"<td width='100'> {$row['gender']}  </td>" .
"</tr></table>";
	// Your while loop here

	}
?>
<table align="center" border="0">
<tr>
<td>
<?=$pagination?>
</td>
</tr>
</table>

 

 

Also, want to throw a shout out to RusselReal for helping me set up the Iframes properly in the first place, but my SEO wants me to avoid Iframes as much as possible :/

 

And, an advanced thanks to anyone who takes the time to help me out, thank you :)

Hi

 

Sounds like a job for Ajax. Set up a small ajax routine to retrieve the data for a particular page, and when that returns you put it into your certral div that you want to change.

 

If you want to avoid hammering your server as much you could have a div per page, and once populated with ajax, paging back to that page just hides the other pages and unhides the div for that page.

 

All the best

 

Keith

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.