Nyt tarvittaisiin apua viisaammilta. Olen luonut SQL tietokannan henkilöistä johon suoritan alla olevalla scriptillä hakuja. Ongelma: jos hakusana sisältää ä tai ö merkin haku epäonnistuu. Esim hakusanalla päällikkö ei löydy tuloksia vaikka kanta on päällikköjä pullollaan. Kiitos.
<p>
<form action="henkhaku.php" method="post">
Syötä hakusana:<br />
<input type="text" name="keyword" size="20" maxlength="40" value="" /><br />
<input type="submit" value="Etsi">
</form>
</p>
<?php
// If the form has been submitted with supplied keyword
if (isset($_POST['keyword'])) {
include "mysql.class.php";
// Connect to server and select database
$mysqldb = new mysql("localhost","***","***","kanta");
$mysqldb->connect();
$mysqldb->select();
$keyword = $_POST['keyword'];
// Create the query
$mysqldb->query("SELECT *
FROM `kanta`.`employee`
WHERE `lastname` LIKE CONVERT( _utf8 '%$keyword%'
USING latin1 )
COLLATE latin1_general_ci
OR `firstname` LIKE CONVERT( _utf8 '%$keyword%'
USING latin1 )
COLLATE latin1_general_ci
OR `email` LIKE CONVERT( _utf8 '%$keyword%'
USING latin1 )
COLLATE latin1_general_ci");
// Output retrieved rows or display appropriate message
if ($mysqldb->numrows() > 0) {
while ($row = $mysqldb->fetchobject())
echo "$row->lastname, $row->firstname ($row->email)<br />";
} else {
echo "Henkilö puuttuu tietokannasta.";
}
}
?>Itellä ollut vastaavanlaisia ongelmia FULLTEXT-searchin kanssa, ei silloin riittänyt aika/mielenkiinto ratkaista ongelmaa, mutta jos jollakin tähän on ratkaisu se tulee kyllä tarpeeseen.
Entä jos lähestyy asiaa toisinpäin eli muutat hakusanan utf_8-formaattiin ennen hakua:
$keyword = utf8_encode($keyword);
Auttaisiko tällainen mitään?
Kiitos kasetti. Se oli siinä. Nyt toimii. Eli lisäsin $keywordiin uuden muutujan (alempi rivi).
$keyword = $_POST['keyword']; $keyword = utf8_encode($keyword);
No voi pe***, jos oli noin pienestä kiinni :) Minä jo kerkesin kokeilemaan kaikki tietokannan merkistökoodaukset yms. läpi, mutta ei tuollainen tullut mieleen. Täytyy itsekkin kokeilla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.