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.