Jump to content

pagination doesn't work with mysql full text search


AdRock

Recommended Posts

I have been tearing my hair out all night with this problem and I can't see any logical explanation for it.

 

I have a pagination function that works perfectly normal unless I use a mysql full text search on it.

 

I have just tested it commenting out the SQL with the full text search and it works but as soon as i put the full text SQL back in it doesn't work.

 

I have viewed the source and the function is being called but it's not displaying the links. It just creates and empty <ul>

 

Here is the code in question

<?php
require_once('php/database/MySQL.php');
require_once('php/database/connection.php');

function pagination_one($total_pages,$page){ 

	// Global variable passed between the pages
	global $webpage; 

	// Maximum number of links per page.  If exceeded, google style pagination is generated
	$max_links = 10; 
	$h=1; 
	if($page>$max_links){ 
		$h=(($h+$page)-$max_links); 
	} 
	if($page>=1){ 
		$max_links = $max_links+($page-1); 
	} 
	if($max_links>$total_pages){ 
		$max_links=$total_pages+1; 
	} 
	echo '<div class="page_numbers"> 
	  <ul>'; 
	if($page>"1"){ 
		echo '<li class="current"><a href="'.$webpage.'.php?pagenum=1">First</a></li> 
			  <li class="current"><a href="'.$webpage.'.php?pagenum='.($page-1).'">Prev</a></li> '; 
	} 

	if($total_pages!=1){ 
		for ($i=$h;$i<$max_links;$i++){ 
			if($i==$page){ 
				echo '<li><a class="current">'.$i.'</a></li>'; 
			} 
			else{ 
				echo '<li><a href="'.$webpage.'.php?pagenum='.$i.'">'.$i.'</a> </li>'; 
			} 
		} 
	} 

	if(($page >="1")&&($page!=$total_pages)){ 
		echo '<li class="current"><a href="'.$webpage.'.php?pagenum='.($page+1).'">Next</a></li> 
			  <li class="current"><a href="'.$webpage.'.php?pagenum='.$total_pages.'">Last</a></li> '; 
	} 

	echo '</ul> </div>'; 
}

//if (!empty($_POST['keywords'])) $_SESSION['keywords'] = $_POST['keywords'];

//$keywords = strtolower($_SESSION['keywords']);
//$uckeywords = ucwords($_SESSION['keywords']);
$keywords = "festival";
$path = "test";
$webpage = basename($path); 

$db = & new MySQL($host,$dbUser,$dbPass,$dbName);

if (isset($keywords)) {
/*$count = "SELECT count(*),
		MATCH(eventname, location, postcode, additional) AGAINST('$keywords*' IN BOOLEAN MODE)
		as score FROM festivals WHERE MATCH(eventname, location, postcode, additional) 
		AGAINST('$keywords*' IN BOOLEAN MODE) group by festivalid";

$sql = "sELECT eventname, location, postcode, additional,
		MATCH(eventname, location, postcode, additional) AGAINST('$keywords*' IN BOOLEAN MODE)
		as score FROM festivals WHERE MATCH(eventname, location, postcode, additional) 
		AGAINST('$keywords*' IN BOOLEAN MODE)";*/

$count = "SELECT count(*) FROM festivals";

$sql = "sELECT eventname, location, postcode, additional FROM festivals";
}

// Perform a query getting back a MySQLResult object
$res = $db->query($count);

$result = $db->query($sql);

//get the number of rows in datatbase
$getresult = $result->size();

$numrows = $res->fetchrow();

if(isset($_GET['pagenum'])?$page = $_GET['pagenum']:$page = 1); 
$entries_per_page = 1;   

$total_pages = ceil($numrows[0]/$entries_per_page); 
$offset = (($page * $entries_per_page) - $entries_per_page);
				   						
$sql = "sELECT eventname, location, postcode, additional, 
    MATCH(eventname, location, postcode, additional) AGAINST('$keywords*' IN BOOLEAN MODE)
    as score FROM festivals WHERE MATCH(eventname, location, postcode, additional) 
    AGAINST('$keywords*' IN BOOLEAN MODE) order by score desc LIMIT $offset,$entries_per_page";
// Perform a query getting back a MySQLResult object
$result = $db->query($sql);

$err = $result->size();

if($err == 0) {
echo ("No matches met your criteria."); 
} else {

while ($row = $result->fetch()) {
	$eventname = html_entity_decode(ucwords($row['eventname'])); 
	$location = html_entity_decode($row['location']);
	$additional = html_entity_decode($row['additional']);

	$placeholders = array($keywords, $uckeywords);
	$vals = array("<span class='searchbold'>$keywords</span>", "<span class='searchbold'>$uckeywords</span>");
	$link = str_replace($placeholders, $vals, $eventname);
	$loc = str_replace($placeholders, $vals, $location);
	$add = str_replace($placeholders, $vals, $additional);

	echo "<p class='searchlink'><a href='festival.php?festival=".strtolower(str_replace(' ','-',$eventname))."'>".$link."</a>";
	echo " - ".$loc."</p>";

	echo "<p class='searchinfo'>".$add."</p>";
	echo "<p class='searchurl'>http://www.folktaskforce.com/festival.php?festival=".strtolower(str_replace(' ','-',$eventname))."</p>";
}
//or after the results
pagination_one($total_pages,$page);

}
echo "</div>";
?>

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.