Hey all,
could use some help with a simple search script I've made:
<!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>Search database</title>
<link href="scripts/datatable.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="list-container">
<div class="categories">
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
Search:
<input type="text" name="term" />
<input type="submit" name="submit" value="Submit" />
</form>
</div>
<div class="letters">
<hr />
</div>
<div class="contents-container">
<?php
// database connection (move?)
mysql_connect ("localhost", "root","") or die (mysql_error());
mysql_select_db ("micardsample");
// mandatory for Greek language support
mysql_query("SET NAMES 'utf8'");
mysql_query("SET COLLATION_CONNECTION=utf8_general_ci");
if(isset($_POST['submit'])){
if(preg_match("/[\p{Greek}A-Za-z0-9]+/u", $_POST['term'])){
$term = strip_tags(trim($_POST['term']));
// query to select from category or company
$sql = mysql_query("SELECT * FROM companies WHERE category OR company LIKE '%$term%'");
// if results are zero and string length is lower than 2 go to else "No results"
if ( (mysql_num_rows($sql) > 0) and (strlen($term) >= 2) ){
while ($row = mysql_fetch_array($sql)){
?>
<div class="contents">
<div class="image-and-info">
<p class="info"><img src="<?php echo $row['imageurl']; ?>" align="left"/></p>
<p class="info"><?php echo $row['company']; ?></p>
<p class="info"><?php echo $row['category']; ?></p>
</div>
<p class="info"><a href="<?php echo $row['homeurl']; ?>" target="_new">Home site</a></p>
</div>
<?php
}
} else { echo "<p>Δεν βρέθηκαν αποτελέσματα.</p>";
}
} else { echo "<p>Εισάγετε όρο αναζήτησης.</p>";
}
}
?>
</div>
</div>
</body>
</html>
So, it works fine if a user inputs 2 or more characters but when using Greek characters it seems like strlen recognizes even 1 characters as larger than 2. Why's that happening?