За последние 24 часа нас посетили 19170 программистов и 1610 роботов. Сейчас ищут 1114 программистов ...

mysql не делает выборку на русском

Тема в разделе "MySQL", создана пользователем Padaboo, 7 мар 2010.

  1. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    отправляю ajax строку для формирования запроса
    [js]
    <script language="JavaScript">
    ...
    if(choose=='job'){
    spec=document.getElementById("serch").value;
    city=document.getElementById("cityy").value;
    money=document.getElementById("moneyy").value;
    serchvalue='?razdel='+choose+'&city='+city+'&money='+money+'&spec='+spec;
    }
    ...
    url = "serch.php" + serchvalue+"&pager="+pager;
    http.open("GET", url, false);
    http.onreadystatechange = updatePage;
    http.send(null);
    ...
    </script>
    [/js]
    принимаю в php:
    PHP:
    1. <?php
    2. //защита, перекодировка из utf-8 переданным ajax в cp1251
    3. function Neutralize($var){
    4. $var=mysql_escape_string(iconv("cp1251", "utf-8",$var));
    5. return $var;
    6. }
    7. $finish=5;
    8. //собираю запрос
    9. if($razdel=='job'){
    10. $city=Neutralize($_GET['city']);
    11. $money=Neutralize($_GET['money']);
    12. $spec=Neutralize($_GET['spec']);
    13. $query="SELECT * from `worker` WHERE spec='".$spec."' ";
    14. if($money!=''){ $query.="AND money='".$money."' "; }
    15. if($city!=''){ $query.="AND city='".$city."' "; }
    16. $query.=" LIMIT ".$pager.",".$finish;
    17. echo $query;
    18. }
    19. //формирую html
    20. function tables($row){
    21. $table='<table  style="margin-top:8px;background-color:#F5F5F5;border:1px dotted black"><tr><td style="width: 495px" WRAP=hard colspan="2">'.$row['spec'].' '.substr($row['dop'], 0, 100).'</td></tr><tr><td style="width:90%"><span class="text"></span></td>';
    22. $table=$table.'<td style="width:10%"></td></tr></table>';
    23. return $table;
    24. }
    25.  
    26. $link = mysql_connect("localhost","root","")
    27.          or die("Could not connect: " . mysql_error());
    28. mysql_query("SET NAMES 'cp1251';");
    29. mysql_query("SET CHARACTER SET 'cp1251';");
    30. mysql_query("SET SESSION collation_connection = 'cp1251_general_ci';");
    31. $db="sitedatabase";
    32. mysql_select_db($db)  or  die("Не  могу  открыть  $db:  ".mysql_error());
    33.  
    34. $result=mysql_query($query,$link);
    35. while($row = mysql_fetch_array($result)){
    36. echo tables($row);
    37. }  ?>
    кодировка сравнения бд, таблицы, колонок cp1251_general_ci
    в бд есть такие записи:
    [​IMG]
    почему не выводит результаты по русским запросам?((
     
  2. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    может наоборот iconv( "utf-8", "cp1251"
     
  3. Антошка

    Антошка Активный пользователь

    С нами с:
    7 мар 2010
    Сообщения:
    62
    Симпатии:
    0
    страницу в utf-8 базу тоже.
    после подкл. к базе в пхп пишем
    mysql_query("set character_set_client='utf8'",$db);
    mysql_query("set character_set_results='utf8'",$db);
    mysql_query("set collation_connection='utf8_bin'",$db);

    и далее - радуемся!
     
  4. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Костян
    PHP:
    1. function Neutralize($var){
    2. $var=mysql_escape_string(iconv("utf-8","cp1251",$var));
    3. return $var;
    4. }
    Notice: iconv() [function.iconv]: Detected an illegal character in input string in C:\wamp\www\project\serch.php on line 4
    SELECT * from `worker` WHERE spec='' LIMIT 0,5
    Антошка
    я бы хотел конечно узнать в чем же все таки дело)))
     
  5. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    Padaboo
    у тебя данные в какой кодировке приходят?
     
  6. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Костян
    вообще читал что если через XMLHttpRequest передавать , то данные передаются в utf-8...
    как то можно посмотреть кодировку в которой они в пхп скрипт приходят?
    ммм ну если не менять кодировку то там кракозябры... + вон query чё пишет spec='хз кто'
     
  7. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    в какой кодировке браузер отправить в той и приходят. iconv() ругалася что у тебя не utf-8 на входе.
     
  8. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    вернее не cp1251
     
  9. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Костян
    HTML:
    1. <meta http-equiv="Content-Type" content="text/html; charset=cp1251" />
    пытаюсь поставить в пхп скрипте просто echo пойманной переменный на русском язке, яваскрипт ругается что не удается завершить функцию
    вот на отдельной странице...
    вот так выглядит "хз кто" после передачи в пхп страницу
    %u0444%u044B%u0432
    %u0445%u0437 %u043A%u0442%u043E
     
  10. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    ты что будешь каждый раз новый вопрос задавать? Причём тут яваскрипт до пхп? и почитай вернюю тему в этом разделе может поможет, а то так и будешь хернёй заниматься.
     
  11. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Этот вопрос уже разбирался на форуме.
    Пользуйся поиском
     
  12. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Simpliest
    urldecode ()
    но возвращает всеравно урл код, при передаче из пхп в яваскрипт он обратно урл кодом становится?
     
  13. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    берешь и смотришь, самостоятельно
    PHP:
    1. <?php
    2. var_dump(json_encode(array('msg' => 'Привет')));
     
  14. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    урл кодом он становиться при urldecode обратной передаче
     
  15. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    не ставлю ни escape() в яваскрипте ни конвертирую ничего ни в какие кодировки получается вот такой запрос
    SELECT * from `worker` WHERE spec='�� LIMIT 0,5
     
  16. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
  17. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Luge
    воспользовался encodeURIComponent() как в примере для гет запроса
    спасибо, теперь SELECT * from `worker` WHERE spec='хз кто' LIMIT 0,5 , вроде все хорошо)
    только в базе не находит...странно...
     
  18. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    а я вот специально не скажу т.к. вопрос из разряда «попробуй и узнашь» :)
     
  19. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    поменял вcю кодировку на utf8 смотрю о5 квадратики... зашел в гугл хром, все нормально, в итоге оказалось что эксплорер закешировал мне результат с квадратиками АААААААААААА!!!!!!!!!!!!! ((((((((((((( :DDDDDD
     
  20. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    программисты не должны сдаваться!
     
  21. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Костян
    Это перевооружение.
     
  22. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    блин делал бы обычный пейджер уже давным давно сделал бы...нет надо было что то такое начать... :D
     
  23. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    тут надо выбирать делать или пробовать!
     
  24. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Костян
    у меня почти весь сайт сделан в режиме "пробовать" в таком случае, много чего применял в первый раз...
    зато теперь я умею XMLHttpRequest() использовать нормально)
    зы:
    [sql]$query="SELECT * from `site` WHERE (keyword='".$serch."') OR (keyword2='".$serch."') OR (keyword3='".$serch."') OR (keyword4='".$serch."') OR (keyword5='".$serch."')";[/sql]
    это тяжелый запрос будет? получается 5 раза таблицу пробежать надо будет?или 1?
     
  25. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    смотря как индексы стоят, если вообще не стоять то пять раз по всей таблице