Hi,
I am working on a project where I am using a MySQL database. I have made an input field that is working as a search field in the database. It works nicely.
My problem is, that the search field does not accept the special danish characters, æ,ø,å, Æ, Ø, Å.
My database is made with the UTF-8 charset, and I have put in alle the right tages (I think) in the code, listed, below.
I am searching for ideas on how to make this work right with danish characters.
Thanks in advance.
<?php mysql_connect("mysql31.unoeuro.com", "", "", "genealogiskforum_dk_db4") or die("Error connecting to database: ".mysql_error()); /* first is location of the mysql server, usually localhost second - your username third is your password if connection fails it will stop loading the page and display an error */ mysql_select_db("genealogiskforum_dk_db4") or die(mysql_error()); /* the name of database we'are working in */ mysql_set_charset('utf-8'); ?> Search results <?php $query = $_GET['query']; // gets value sent over search form$min_length = 1;
// you can set minimum length of the query if you want
if(strlen($query) >= $min_length){ // if query length is more or equal minimum length then
$query = htmlspecialchars($query);
// changes characters used in html to their equivalents, for example: < to >
$query = mysql_real_escape_string($query);
// makes sure nobody uses SQL injection
$raw_results = mysql_query("SELECT * FROM sogne
WHERE (`Sogn` LIKE '%".$query."%') OR (`sogne_id` LIKE '%".$query."%')") or die(mysql_error());
// * means that it selects all fields, you can also write: `id`, `title`, `text`
// articles is the name of our table
// '%$query%' is what we're looking for, % means anything, for example if $query is Hello
// it will match "hello", "Hello man", "gogohello", if you want exact match use `title`='$query'
// or if you want to match just full word so "gogohello" is out use '% $query %' ...OR ... '$query %' ... OR ... '% $query'
if(mysql_num_rows($raw_results) > 0){ // if one or more rows are returned do following
while($results = mysql_fetch_array($raw_results)){
// $results = mysql_fetch_array($raw_results) puts data from database into array, while it's valid it does the loop
echo "<p>".$results['Sogn']."</p>";
// posts results gotten from database(title and text) you can also show id ($results['id'])
}
}
else{ // if there is no matching rows do following
echo "No results";
}
}
else{ // if query length is less than minimum
echo "Minimum length is ".$min_length;
}
?>