Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: ä ja ö +php +SQL

skydesign [16.03.2006 09:03:04]

#

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.";
      }
   }
?>

ajv [16.03.2006 09:56:20]

#

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.

kasetti [16.03.2006 10:43:20]

#

Entä jos lähestyy asiaa toisinpäin eli muutat hakusanan utf_8-formaattiin ennen hakua:

$keyword = utf8_encode($keyword);

Auttaisiko tällainen mitään?

skydesign [16.03.2006 11:24:26]

#

Kiitos kasetti. Se oli siinä. Nyt toimii. Eli lisäsin $keywordiin uuden muutujan (alempi rivi).

$keyword = $_POST['keyword'];
$keyword = utf8_encode($keyword);

ajv [16.03.2006 11:41:12]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta