Малки и големи символи при търсене

bobonik

Registered
Имам следния проблем :
Имам търсачка която търси в база данни и извежда резултатите, но за да намериш нещо трябва задължително да го напишеш както е. Пример :
Ако в базата данни "Какво" е записано с главно "К" и в търсачката трябва да се търси така с главно. Искам просто каквото и да напишеш да ти излизат резултатите независимо дали са написани с главни или малки символи :)
 
Идея първа: даваш ни кода на търсачката и го мислим по него
Идея втора: прекарваш записите през strtolower(); както и низа за търсене, така че всичко да е с малки буквии така
 
Благодаря за бързия отговор :) . Ето кода:
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/>
<html xmlns="http://www.w3.org/1999/xhtml">

<?php
define('IN_VALID', true); 
include ("conf.php");


if(isset($_GET['page'])){
$page = (int)$_GET['page'];
}
else{
$page = 1;
}

if(isset($_GET['find'])){
$item = htmlspecialchars(mysql_real_escape_string(addslashes($_GET['find'])));
$rowsperpage = '3';


$startrow = ($page - 1) * $rowsperpage;
$host = "localhost";
$dbuser = "root";
$dbpass = "";
$db = "tutorials";
mysql_connect($host, $dbuser, $dbpass)or die(mysql_error());
mysql_select_db($db)or die(mysql_error());





$query = ("SELECT * FROM tutorials WHERE cat_id = '$id' AND is_validated = '1'title LIKE '%$item%' OR short_description LIKE '%$item%'  LIMIT $startrow, $rowsperpage");

$query = ("SELECT * FROM tutorials WHERE title LIKE '%$item%' OR short_description LIKE '%$item%'  LIMIT $startrow, $rowsperpage");
$result = mysql_query($query) or die('Не си избрал страница!');


while($row = mysql_fetch_array($result, MYSQL_ASSOC)){

$name = $row['submitter'];
echo' <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"500\">
<tr>
<td>Title:</td>
<td><b>'.$row['title'].'</b></td>
</tr>
<tr>
<td>Date Submitted:</td>
<td><b>'.$row['date_submitted'].'</b></td>
</tr>
<tr>
<td>Views:</td>
<td>'.$row['views'].'</td>
</tr>
<tr>
<td>Short Description:</td>
<td>'.$row['short_description'].'</td>
</tr>
<tr>
<td>Submitter:</td>
<td>'.$row['submitter'].'</td>
</tr>
<tr>
<td colspan="2"><center><b><a href="viewtutorial.php?action=viewtutorial&id='.$row['id'].'">View</a></b></center></td>
</tr>
<tr>
<td colspan="2"><hr /></td>
</tr>

</table>';

}





$name = htmlspecialchars($_POST['submitter']);
$title = mysql_real_escape_string(strip_tags($_POST['title']));
$category = mysql_real_escape_string(strip_tags($_POST['category']));
$tutorial = mysql_real_escape_string(strip_tags(($_POST['tutorial'])));
$short_description = mysql_real_escape_string(strip_tags($_POST['short_description']));
$email = mysql_real_escape_string(strip_tags($_POST['email']));
$show_email = mysql_real_escape_string($_POST['show_email']);
$name = mysql_real_escape_string($_POST['submitter']);
$date = date("m/d/Y");
$time = time();
$tutorial = nl2br($_POST['tutorial']); 

$query = "SELECT COUNT(id) AS redove FROM tutorials";
$result = mysql_query($query) or die('Не си избрал страница!');
$row2 = mysql_fetch_array($result, MYSQL_ASSOC);
$redove = $row2['redove'];
$lastpage = (ceil($redove/$rowsperpage));
$self = $_SERVER['PHP_SELF'];
$ns = '';





for($pageNum = 1; $pageNum <= $lastpage; $pageNum++) {
if ($pageNum == $page) {
$ns .= " $pageNum ";
}

else {
$ns .= " <a href=\"$self?page=$page\">$page</a> ";
}}



if ($page > 1) {
$pageNum = $page - 1;
$pr = " <a href='?page=$pageNum&find=$item'> [<] </a> ";
$one = " <a href='?page=1&find=$item'>[първа]</a>";
}	
else {
$pr = ' ';
}	
if ($page < $lastpage) {
$pageNum = $page + 1;
$sl = (" <a href='?page=$pageNum&find=$item'> [>] </a> ");
}
else {
$sl = '[>] ';
}






echo $one. $pr . $sl ;

}

else{
echo "Попълни формата!";
}
?>
<center>
<form action="" method="get">
<input type="text" name="find" size="50" />
<input type="submit" value="Търси" name="search" />
</form>
</center>
 
Попринцип LIKE прави така, че да няма разлика между малки и големи букви, но все пак може да ползваш онзи метод със strtolower();
 

Back
Горе