SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 01.05.2010 22:33:39

rt2517
Участник
Зарегистрирован: 01.05.2010
Сообщений: 7

настройка кодировки и сравнения

Здраствуйте, помогите пожалуйста  в работоспособности запроса.
Делаю запрос по названию (текстовое, уникальное),название пункта, по котором делается запрос, полностью совпадает с названием в БД (поле в БД - NazvaPunktu (VARCHAR(50)), но выводится сообщение о том что нет такого пункта в БД - "Ничего не найдено".
Форма ввода данных:

Код:

<title>Поиск</title>
<p><b>Введите название</b></p>
<form action="findname.php" method="post">
   <table align="left">
   <tr>
   <td>
   <div align="left">
   Назва пункту <input name="name1"><br>
   <br>
   <br><input type="submit"  value="Выполнить">
   </div>
   </td>
   </tr>
   </table>
</form>

Скрипт (findname.php):

Код:

<html>
<head>
<title>Поиск</title>
</head>
<body>
<?php
$name1 = $_GET['name1'];
$link = mysql_connect ('localhost', 'MyLogin', 'MyPass');
@mysql_query("SET NAMES 'cp1251'",$link);
if ( !$link ) die ("Error MySQL");
$db = "georv";
mysql_select_db ( $db ) or die ("Error $db");
$query = "SELECT * FROM Punkti WHERE NazvaPunktu = '$name1'";
$result = mysql_query ( $query );
$n = mysql_num_rows ( $result );
if ( $n == 0 ) echo "Ничего не найдено";
mysql_close ( $link );
?>
</body>
</html>

Код:

SHOW VARIABLES LIKE '%CHAR%'

character_set_client cp1251
character_set_connection cp1251
character_set_database cp1251
character_set_filesystem binary
character_set_results cp1251
character_set_server latin1
character_set_system utf8

Код:

SHOW VARIABLES LIKE '%COLL%'

collation_connection cp1251_general_ci
collation_database cp1251_general_ci
collation_server latin1_swedish_ci

Неактивен

 

#2 03.05.2010 22:31:18

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: настройка кодировки и сравнения

Несколько мыслей:

1. если в БД нету такой строки, то будет написано «Ничего не найдено»;
2. это вопрос по PHP (а вопросы по PHP принято задавать на webew.ru);
3. правильно использовать addslashes($_POST[]) вместо $_GET[].

Неактивен

 

#3 04.05.2010 08:23:12

rt2517
Участник
Зарегистрирован: 01.05.2010
Сообщений: 7

Re: настройка кодировки и сравнения

Спасибо за советы, вопрос с GET/POST уже решыл. Запрос работает. Проблема с кодировкой. Не работает с кирилицей...

Неактивен

 

#4 04.05.2010 14:27:20

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: настройка кодировки и сравнения

SET NAMES cp1251, а не SET NAMES 'cp1251'.

Неактивен

 

#5 04.05.2010 19:42:52

rt2517
Участник
Зарегистрирован: 01.05.2010
Сообщений: 7

Re: настройка кодировки и сравнения

всеровно не помагает, я так понимаю дело в ...
character_set_server latin1
collation_server latin1_swedish_ci

Неактивен

 

#6 04.05.2010 20:36:53

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: настройка кодировки и сравнения

Нет, это влияет на кодировки таблиц по умолчанию (кстати, в какой кодировке
создана Ваша таблица?), точнее — баз.

Неактивен

 

#7 05.05.2010 08:24:20

rt2517
Участник
Зарегистрирован: 01.05.2010
Сообщений: 7

Re: настройка кодировки и сравнения

cp1251_general_ci

Неактивен

 

#8 05.05.2010 14:02:27

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: настройка кодировки и сравнения

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

Неактивен

 

#9 05.05.2010 19:54:40

rt2517
Участник
Зарегистрирован: 01.05.2010
Сообщений: 7

Re: настройка кодировки и сравнения

SHOW VARIABLES LIKE '%CHAR%' i SHOW VARIABLES LIKE '%COLL%' я уже показывал выше
вот SHOW CREATE TABLE `Punkti`


CREATE TABLE `Punkti` (
 `NomerPoKatalogu` int(4) NOT NULL,
 `NazvaPunktu` varchar(50) NOT NULL,
 `TipPUNKTU` varchar(30) DEFAULT NULL,
 `TipCentra` varchar(30) DEFAULT NULL,
 `Klas` int(1) DEFAULT NULL,
 `AbscisaX63` float NOT NULL,
 `OrdinataY63` float NOT NULL,
 `Visota63` float DEFAULT NULL,
 `AbscisaX84` float NOT NULL,
 `OrdinataY84` float NOT NULL,
 `Visota84` float DEFAULT NULL,
 `GeografOpus` varchar(250) DEFAULT NULL,
 `VudPynkty` varchar(30) DEFAULT NULL,
 `HarPynkty` varchar(200) DEFAULT NULL,
 `StanPynkty` varchar(50) DEFAULT NULL,
 `VusotaSygnala` float DEFAULT NULL,
 PRIMARY KEY (`NomerPoKatalogu`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251
 

вот SHOW CREATE DATABASE `georv`

CREATE DATABASE `georv` /*!40100 DEFAULT CHARACTER SET cp1251 */
 

но простой запрос

Код:

$sql = "SELECT * FROM Punkti";

$result = mysql_query($sql);

echo "<table>\n";

while ($Line = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo "\t<tr>\n";
foreach($Line as $col_value)
{
echo "\t\t<td>$col_value</td>\n";
}
echo "\t</tr>\n";
}
echo "</table>\n";
mysql_free_result($result);

дает такой результат:

   
       
121     Archishun     Punkt triangulatsii     Nevstanovleniy     3     0     0     0     25     50     0     NULL     Piramida     Derev'yaniy     Zruynovana     0
123     Dubno     Punkt triangulatsii     Nevstanovleniy     2     0     0     0     0     0     0     NULL     Signal     Metaleviy     Ciluj     0
124     Mali Sadu     Punkt triangulatsii     Nevstanovleniy     3     0     0     0     0     0     0     NULL     Piramida     Derev'yaniy     Zruynovana     0
125     Povcha     Punkt triangulatsii     Nevstanovleniy     3     0     0     0     0     0     0     NULL     Piramida     Derev'yaniy     Zruynovana     0
126     Piratin     Punkt triangulatsii     Nevstanovleniy     2     0     0     0     25     51     0     NULL     Signal     Metaleviy     Ciluj     0
12122     а��БаНаО     б���АаНаГб�Лб����/td>     аНаЕаВб��АаНаОаВаЛаЕаНаИаЙ         0     0         0     0

Отредактированно rt2517 (05.05.2010 20:08:42)

Неактивен

 

#10 05.05.2010 21:41:39

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: настройка кодировки и сравнения

А Вы вставляете из какого клиента? Может, в базе данные битые?

Неактивен

 

#11 06.05.2010 01:45:30

rt2517
Участник
Зарегистрирован: 01.05.2010
Сообщений: 7

Re: настройка кодировки и сравнения

добавлял кирилицу в БД с помощю phpmyadmin

Неактивен

 

#12 06.05.2010 11:41:53

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: настройка кодировки и сравнения

Имеет смысл добавлять из работающего приложения (например, Вашего) wink

Неактивен

 

#13 06.05.2010 19:15:00

rt2517
Участник
Зарегистрирован: 01.05.2010
Сообщений: 7

Re: настройка кодировки и сравнения

через html форму и php скрит?

Неактивен

 

#14 06.05.2010 21:03:56

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: настройка кодировки и сравнения

Можно просто через сценарий PHP, без формы. Настроить phpMyAdmin — тяжелая
работа. Куда проще воспользоваться готовым нормальным клиентом или написать
свой небольшой сценарий.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson