Jump to content

Recommended Posts

first, my columns are set correctly, one is text, one is mediumtext.

 

i've tweaked the code below to meet my needs, but the search is case sensitive.  i would like a case insensitive search.  can someone please tell me how to do this?

 

<?php 

  require_once("config.php");

  $testquery = TRUE;
  $skip = FALSE; 
  $lowlevel = $hlevel + 1;

  $var = @$_GET['q'];
        if (ereg("^\042?[A-z0-9+. -*<>()~]*[']?[A-z0-9+. -*<>()~]*\042?$",$var)) {
        $var1 = ereg_replace("\045","percent",$var);
  	    $trimmed = trim($var1); 
    	} else {
        $trimmed = "Invalid search term entered.";
        $testquery = FALSE;
        }
$display = stripslashes($trimmed);
    
if ($trimmed == "" | !isset($var))
  {
  echo "<h" . $hlevel . ">Error! No valid search term was entered.</h" . $hlevel . ">";
  $skip = TRUE;
  }

if (ereg(" AND | and | And | aND | AnD | anD ",$trimmed,$matches)) {
$burst = $matches[0];
$terms = explode($burst,$trimmed);
$boolean = TRUE;
$split = "AND"; 
} elseif (ereg(" OR | or | Or | oR ",$trimmed, $matches)) {
$burst = $matches[0];
$terms = explode($burst,$trimmed);
$boolean = TRUE;
$split = "OR"; 
} 
if ($skip != TRUE) {
if (!defined('DB_USER')) {
include("mysql_connect.php");
} 

if (($boolean == TRUE) && ($split == "OR")) {
$query = "SELECT $db_fields FROM $db_table WHERE
MATCH($db_fields) AGAINST ('$terms[0] $terms[1] $terms[2] $terms[3] $terms[4] $terms[5]' IN BOOLEAN MODE)
ORDER BY $sort_order"; 
} elseif (($boolean == TRUE) && ($split == "AND")) { 
$query = "SELECT $db_fields FROM $db_table WHERE
MATCH($db_fields) AGAINST ('+$terms[0] +$terms[1] +$terms[2] +$terms[3] +$terms[4] +$terms[5]' IN BOOLEAN MODE)
ORDER BY $sort_order"; 
} else { 
$query = "SELECT $db_fields FROM $db_table WHERE MATCH($db_fields) AGAINST ('$trimmed' IN BOOLEAN MODE)
ORDER BY $sort_order"; 
}

$sub_query = "SELECT $db_id FROM $db_table 
WHERE $db_id LIKE \"in8valis1d\"";  
if ($testquery == FALSE) { 
$numresults = 0;
$numrows = 0; 
} else {
$numresults=mysql_query($query);
$numrows=mysql_num_rows($numresults);
}
if ($numrows == 0)
  {
  echo "<h" . $hlevel . ">Your search returned no results.</h" . $hlevel . ">";
  echo "<p>You searched for: "" . $display . ""</p>";
  }

  if (empty($s)) {
  $s=0;
  }
if ($testquery != FALSE) {
  $query .= " limit $s,$limit";
  $result = mysql_query($query) or die("Couldn't execute query");
} else {
  $query .= " limit $s,$limit";
  $result = mysql_query($sub_query) or die("Couldn't execute query");
  }
if ($numrows != 0) {
echo "<h" . $hlevel . ">Results of your search:</h" . $hlevel . ">\n";
}
echo "<p>You searched for: "<strong>" . $display . "</strong>"</p>\n\n";

echo "<h" . $lowlevel . ">Search Results</h" . $lowlevel . ">\n\n<dl id='searchresults'>\n";
          
$count = 1 + $s ;

  while ($row = mysql_fetch_array($result)) { 
  $title = $row[$db_title];
  $id = $row[$db_id];		

if ($db_blurb == TRUE) {
  $blurb = substr($row[$db_content],0,$blurb_length) . ' . . .'; 
  $blurb1 = strip_tags($blurb);
} else {
$blurb = "";
}  
  $section = $row[$db_category];

echo "<dt>$count. <a href='IssueDetails.php?ID=$id'>$title $section</a></dt>\n";
            if ($db_blurb == TRUE) {
            echo "<p>$blurb1</p>\n";
            }
  $count++ ;
  }
$currPage = (($s/$limit) + 1);

echo "</dl>\n\n";

  if ($s>=1) { 
  $prevs=($s-$limit);
  print "<p class='jdprevious'><a href=\"$PHP_SELF?s=$prevs&q=$var\">← Previous Page</a></p>\n";
  }
  $pages=intval($numrows/$limit);
  if ($numrows%$limit) {
  $pages++;
  }
  if ($numrows == 0) {
  echo '';
  } elseif (!((($s+$limit)/$limit)==$pages) && $pages!=1) {
  $news=$s+$limit;
  echo "<p class='jdnext'><a href=\"$PHP_SELF?s=$news&q=$var\">Next Page →</a></p>\n";
  }
$a = $s + ($limit) ;
  if ($a > $numrows) { $a = $numrows ; }
  $b = $s + 1 ;
if ($numrows != 0) {
echo "<p class='jdresults'>Results $b to $a of $numrows.</p>\n";
} else {
echo "<p>Sorry, your search produced no results.</p>\n";
} 
}

?>

 

hello, thanks for taking the time to help me out.

 

so i've tried taking out the IN BOOLEAN MODE and i get an error.  the error results in a couple of lines below in.....

 

error

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in

 

line of code error occurs

$numrows=mysql_num_rows($numresults);

 

so, my question then becomes, i would i write the following line of code without the IN BOOLEAN MODE part?

 

$query = "SELECT $db_fields FROM $db_table WHERE MATCH($db_fields) AGAINST ('$trimmed' IN BOOLEAN MODE) ORDER BY $sort_order";

is the reason you want case insensitive because the data in the database is in different cases, or is it because the search could be in a different case?

 

If it is because the search is in a different case couldn't you just use something like

$str = "Mary Had A Little Lamb and She LOVED It So";
$str = strtolower($str);
echo $str; // Prints mary had a little lamb and she loved it so

 

 

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.