0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 72
1

Не работает поиск в БД, если искать русские символы.

15.02.2014, 10:49. Показов 891. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем помогите плз с таким вопросом: Имеется поисковая форма(search.html). В ней пользователь может выбрать тип поиска(по автору, по названию, по ISBN). B затем вводит само значение поиска. То есть например получается "по автору" и "Майкл". После щелчка "найти" вызывается сценарий "results.php". В ней осуществляется запрос к БД и вывод результата запроса. Проблема в том, что ввожу имя существующего в БД автора(русскими буквами). Запрос выводит 0 строк. Потом зашел в БД и поменял имя автора(написал англ буквами). Сценарий сразу заработал и вывел все книги этого автора. Вопрос: почему php-сценарий не может найти руссконаписанные слова в БД.
это код search.html
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<html>
<head>
  <title>Магазин "Буквофил" – Поиск в каталоге</title>
</head>
 
<body>
  <h1>Магазин "Буквофил" - Поиск в каталоге</h1>
  <form action="results.php" method="post">
    Выберите тип поиска:
 
    <select name="searchtype">
      <option value="author">По автору</option>
      <option value="title">По названию</option>
      <option value="isbn">По ISBN</option>
    </select>
    
 
    Введите информацию для поиска:
 
    <input type="text" name="searchterm" size="40" />
    
 
    <input type="submit" name="submit" value="Найти" />
  </form>
 
</body>
</html>
А это results.php
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<html>
<head>
  <title>Магазин "Буквофил" – Результаты поиска</title>
</head>
<body>
<h1>Магазин "Буквофил" - Результаты поиска</h1>
<?php
  // создание коротких имен переменных
  $searchtype = $_POST['searchtype'];
  $searchterm = trim($_POST['searchterm']);
 
  if (!$searchtype || !$searchterm) {
     echo 'Вы не ввели параметры поиска. Вернитесь' .
          ' на предыдущую страницу и повторите ввод.';
     exit;
  }
 
  if (!get_magic_quotes_gpc()) {
    $searchtype = addslashes($searchtype);
    $searchterm = addslashes($searchterm);
  }
 
  @ $db = new mysqli('localhost', 'books', 'glormanutd', 'books');
  $errn = mysqli_connect_errno();
  if (mysqli_connect_errno()) {
     echo 'Ошибка: Не удалось установить соединение' . 
          ' с базой данных. Повторите попытку позже.';
     exit;
  }
 
  $query = "select * from books where ".$searchtype." like '%".$searchterm."%'";
  $result = mysqli_query($db, $query);
  $num_results = $result->num_rows;
  echo "<p>Найдено книг: ".$num_results."</p>";
 
  for ($i = 0; $i < $num_results; $i++) {
     $row = $result->fetch_assoc();
     echo "<p><strong>".($i+1).". Название: ";
     echo htmlspecialchars (stripslashes($row['title']));
     echo "</strong>
Автор: ";
     echo stripslashes($row['author']);
     echo "
ISBN: ";
     echo stripslashes($row['isbn']);
     echo "
Цена: ";
     echo stripslashes($row['price']);
     echo "</p>";
  }
 
  $result->free();
  $db->close();
?>
 
</body>
</html>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.02.2014, 10:49
Ответы с готовыми решениями:

Как в C# искать русские символы?
data_href=&quot;Привет&quot; if (data_href.Contains(&quot;Привет&quot;) { } как такое реализовать*??

Не отправляет письмо если имя компьютера содержит русские символы
Всем доброго времени. Есть тривиальный код отправки письма на С# var mail = new...

Fopen не видит файл, если в его пути содержатся русские символы
Здравствуйте! Столкнулся с очень неприятной проблемой. Моя программа получает путь к нужному...

Если в A есть латинские буквы, то упорядочить символы B в алфавитном порядке; в остальных случаях продублировать русские
Задание: Если в A есть латинские буквы, то упорядочить символы B в алфавитном порядке; в остальных...

2
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
15.02.2014, 14:23 2
Попробуйте после подключения к БД выполнить такие запросы:
SQL
1
SET NAMES 'ваша кодировка'
и
SQL
1
SET CHARACTER SET 'ваша кодировка'
"ваша кодировка" - это кодировка файла, в котором скрипт.
0
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
15.02.2014, 14:24 3
видимо, проблема в кодировке
0
15.02.2014, 14:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.02.2014, 14:24
Помогаю со студенческими работами здесь

В директории сохранения файла русские символы заменяются на непонятные символы
При сохранении файл через диалоговое окно русские символы заменяются на непонятные тем самым Window...

Широкие символы wchar_t wstring не хотят принимать русские символы
Собственно вопрос в шапке, вот примеры: std::wstring str = L&quot;блин комом&quot;; и такое: wchar_t...

Поиск и копирование в папку если в ее имя содержит определенные символы
Привет ребятки, помогите пожалуйста автоматизировать скрипт для обновления терминалов, а их порядка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru