[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск пользователя по сайту
EndoCrinolog
Создал сайт. Создал форму, базу данных. Осуществляю расширенный поиск. Уже готовы сортировка по id, нику, последнему визиту, полу. НО! Возникла проблема. При поиске по профессии (русский язык) и городе (тоже русский язык) phpMyAdmin выдает результат (например, один из сформированных запросов: SELECT * FROM users WHERE ext_place LIKE '%то%' AND ext_work LIKE '%ст%' ORDER BY unix DESC) - 2 результата, мой query-запрос - 0 строк. В чем проблема? В русском языке?
Игорь_Vasinsky
а в PMA этот запрос что возвращает?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
EndoCrinolog
Я говорю - как раз 2 результата, которые соответсвуют запросу. А вот mysql_query - 0 строк. Вот самодельный трейс
Цитата
query = "SELECT * FROM users WHERE ext_place LIKE '%то%' AND ext_work LIKE '%ст%' ORDER BY unix DESC"
Результатов = "0"


Вот скрин pma
Valick
EndoCrinolog, в скрипте после соединения с БД какую кодировку указываете?


_____________
Стимулятор ~yoomoney - 41001303250491
EndoCrinolog
не указал...
Вот код:

$dbh = "localhost";
$dbd = "_______";
$dbu = "_______";
$dbp = "_______";

$dbc = mysql_connect($dbh,$dbu,$dbp);

if (!$dbc){
msg("error","Невозможно подключиться к серверу ".$dbh);
} else {

$dbb = mysql_select_db($dbd);

if (!$dbb) {

msg("error","Невозможно соединиться с базой данных ".$dbd);

}

}


Куда вставить и что?
EndoCrinolog
Исправил код, но по нулям...
$dbh = "localhost";
$dbd = "_____";
$dbu = "___";
$dbp = "___";

$dbc = mysql_connect($dbh,$dbu,$dbp);

if (!$dbc){
msg("error","Невозможно подключиться к серверу ".$dbh);
} else {

$dbb = mysql_select_db($dbd);
if (!$dbb) {
msg("error","Невозможно соединиться с базой данных ".$dbd);
}

mysql_query ("SET NAMES utf8");
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");

}
Valick
а кодировка БД точно utf8? сам файл скрипта в кодировке utf8 без bom?
что говорит mysql_error(), после запроса?
кстати почему в приведенном коде не указали сам запрос и то как он формируется?

_____________
Стимулятор ~yoomoney - 41001303250491
EndoCrinolog
Я то-могу, но Вы ужаснетесь... я Вам прислал строку запроса, которая формируется при исполнении кода. $query - конечная строка, которую я прислал. Например, если я введу возраст от 20 до 40 и пол только женский, запрос станет таким (трейс страницы):
Цитата
query = "SELECT * FROM users WHERE ext_year>='1972' AND ext_year<='1994' AND ext_sex LIKE '%female%' ORDER BY unix DESC"
Результатов = "2"

PMA в этом случае также работает. Тоже выводит 2 результата..
Я предполагаю, что это всё-таки связано с конфликтом с русским языком.
А вот насчет bom - я не уверен и, если честно, не знаю, что это.
И что нужно сделать, чтобы было "с bom" или "без bom"?
EndoCrinolog
Кстати, mysql ошибок не выдает. На странице выдается, что $rows=mysql_num_rows($result) равен 0
EndoCrinolog
Файл сортировки
$ms = $_GET['ms'];
$td = $_GET['td'];

switch($ms){
case "id":
$str1 = "ID";
break;
case "log":
$str1 = "Ник";
break;
case "unix":
$str1 = "Последний визит";
break;
case "balls":
$str1 = "Баллы";
break;
default:
$ms = "unix";
$str1 = "Последний визит";
break;
}

switch($td){
case "ASC":
$str2 = "возрастание";
break;
case "DESC":
$str2 = "убывание";
break;
default:
$td = "DESC";
$str2 = "убывание";
break;
}

$str_sort = $str1.", ".$str2;

$sorter = " ORDER BY ".$ms." ".$td;


Файл, который генерирует строку $query

$info = "";

$withnick = $_GET['withnick'];
$withperdata = $_GET['withperdata'];
$withclub = $_GET['withclub'];

if ($withnick){ // wn
//trace("По нику");

$nick = $_GET['nick'];
if ($nick != ""){
if ($info == ""){
$info = " WHERE log LIKE '%".$nick."%'";
} else {
$info .= " AND log LIKE '%".$nick."%'";
}
$str3 = ", ник \"".$nick."\"";
}

}
// wn

if ($withperdata){ // wpd
//trace("По перс. данным");

$pd_year_min = $_GET['pd_year_min'];
$pd_year_max = $_GET['pd_year_max'];
$pd_town = $_GET['pd_town'];
$pd_work = $_GET['pd_work'];

if ($pd_year_min && $pd_year_max){ // max min
if ($pd_year_min>0 && $pd_year_min<$pd_year_max){ // if max min
$nowYear = date("Y");
$minYear = $nowYear-$pd_year_max-1;
$maxYear = $nowYear-$pd_year_min+1;
if ($minYear){ // min
if ($info == ""){
$info = " WHERE ext_year>='$minYear'";
} else {
$info .= " AND ext_year>='$minYear'";
}
$str5 = ", возраст>=".$pd_year_min;
} // min
if ($minYear){ // max
if ($info == ""){
$info = " WHERE ext_year<='$maxYear'";
} else {
$info .= " AND ext_year<='$maxYear'";
}
$str6 = ", возраст<=".$pd_year_max;
} // max
} // if max min
} // max min



if ($pd_town != ""){ // город
if ($info == ""){
$info = " WHERE ext_place LIKE '%".$pd_town."%'";
} else {
$info .= " AND ext_place LIKE '%".$pd_town."%'";
}
$str7 = ", город \"".$pd_town."\"";

} // город


if ($pd_work != ""){

if ($info == ""){
$info = " WHERE ext_work LIKE '%".$pd_work."%'";
} else {
$info .= " AND ext_work LIKE '%".$pd_work."%'";
}
$str8 = ", профессия \"".$pd_work."\"";

}

}
// wpd

if ($withclub){ // wc
//trace("По клуб. данным");

$pc_theme = $_GET['pc_theme'];
$pc_site = $_GET['pc_site'];
$pc_lvl = $_GET['pc_lvl'];


if ($pc_site != ""){ // сайт

if ($info == ""){
$info = " WHERE site_url LIKE '%".$pc_site."%'";
} else {
$info .= " AND site_url LIKE '%".$pc_site."%'";
}
$str9 = ", сайт \"".$pc_site."\"";

} // сайт





} // wc


$sex = $_GET['sex'];

if ($sex){
if ($sex == "male"){
$str4 = ", мужской";
} else
if
($sex == "female"){
$str4 = ", женский";
}

if ($info == ""){
$info = " WHERE ext_sex LIKE '%".$sex."%'";
} else {
$info .= " AND ext_sex LIKE '%".$sex."%'";
}
}


Всё это include'ируется в один файл, где сливаются в общем запросе:
$query = "SELECT * FROM users".$info.$sorter;


Вся эта байда РАБОТАЕТ. Запрос query генерируется корректно. Вот, я ввел в Город "то", а в профессию "ст".
Вот query, который генерирует данный код:
Цитата
SELECT * FROM users WHERE ext_place LIKE '%то%' AND ext_work LIKE '%ст%' ORDER BY unix DESC


В результате PMA выдает 2 строки:
Юзер 1 - город "Тольятти". профессия "Студент"
Юзер 2 - город "Тольятти", профессия "Медсестра".

Мой же код:
$query = "SELECT * FROM users".$info.$sorter;
$result = mq($query);
$rows = rmnr($result);

говорит, что ничего не найдено
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.