отправляю 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: <?php //защита, перекодировка из utf-8 переданным ajax в cp1251 function Neutralize($var){ $var=mysql_escape_string(iconv("cp1251", "utf-8",$var)); return $var; } $finish=5; //собираю запрос if($razdel=='job'){ $city=Neutralize($_GET['city']); $money=Neutralize($_GET['money']); $spec=Neutralize($_GET['spec']); $query="SELECT * from `worker` WHERE spec='".$spec."' "; if($money!=''){ $query.="AND money='".$money."' "; } if($city!=''){ $query.="AND city='".$city."' "; } $query.=" LIMIT ".$pager.",".$finish; echo $query; } //формирую html function tables($row){ $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>'; $table=$table.'<td style="width:10%"></td></tr></table>'; return $table; } $link = mysql_connect("localhost","root","") or die("Could not connect: " . mysql_error()); mysql_query("SET NAMES 'cp1251';"); mysql_query("SET CHARACTER SET 'cp1251';"); mysql_query("SET SESSION collation_connection = 'cp1251_general_ci';"); $db="sitedatabase"; mysql_select_db($db) or die("Не могу открыть $db: ".mysql_error()); $result=mysql_query($query,$link); while($row = mysql_fetch_array($result)){ echo tables($row); } ?> кодировка сравнения бд, таблицы, колонок cp1251_general_ci в бд есть такие записи: почему не выводит результаты по русским запросам?((
страницу в 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); и далее - радуемся!
Костян PHP: function Neutralize($var){ $var=mysql_escape_string(iconv("utf-8","cp1251",$var)); return $var; } 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 Антошка я бы хотел конечно узнать в чем же все таки дело)))
Костян вообще читал что если через XMLHttpRequest передавать , то данные передаются в utf-8... как то можно посмотреть кодировку в которой они в пхп скрипт приходят? ммм ну если не менять кодировку то там кракозябры... + вон query чё пишет spec='хз кто'
Костян HTML: <meta http-equiv="Content-Type" content="text/html; charset=cp1251" /> пытаюсь поставить в пхп скрипте просто echo пойманной переменный на русском язке, яваскрипт ругается что не удается завершить функцию вот на отдельной странице... вот так выглядит "хз кто" после передачи в пхп страницу %u0444%u044B%u0432 %u0445%u0437 %u043A%u0442%u043E
ты что будешь каждый раз новый вопрос задавать? Причём тут яваскрипт до пхп? и почитай вернюю тему в этом разделе может поможет, а то так и будешь хернёй заниматься.
Simpliest urldecode () но возвращает всеравно урл код, при передаче из пхп в яваскрипт он обратно урл кодом становится?
не ставлю ни escape() в яваскрипте ни конвертирую ничего ни в какие кодировки получается вот такой запрос SELECT * from `worker` WHERE spec='�� LIMIT 0,5
Luge воспользовался encodeURIComponent() как в примере для гет запроса спасибо, теперь SELECT * from `worker` WHERE spec='хз кто' LIMIT 0,5 , вроде все хорошо) только в базе не находит...странно...
поменял вcю кодировку на utf8 смотрю о5 квадратики... зашел в гугл хром, все нормально, в итоге оказалось что эксплорер закешировал мне результат с квадратиками АААААААААААА!!!!!!!!!!!!! ((((((((((((( DDDDD
Костян у меня почти весь сайт сделан в режиме "пробовать" в таком случае, много чего применял в первый раз... зато теперь я умею XMLHttpRequest() использовать нормально) зы: [sql]$query="SELECT * from `site` WHERE (keyword='".$serch."') OR (keyword2='".$serch."') OR (keyword3='".$serch."') OR (keyword4='".$serch."') OR (keyword5='".$serch."')";[/sql] это тяжелый запрос будет? получается 5 раза таблицу пробежать надо будет?или 1?