Помощник
|
![]() |
![]() |
Сообщение
#1
|
||
![]() |
|
||
|
|||
![]() |
![]()
Сообщение
#2
|
![]() |
У тебя в фориче $value, а вставляешь ты в запрос $svalue, скорее всего поэтому.
Но я делал вот так однажды //=== search if( $_POST['action'] == 'search' ){ $search = $_POST['search']; $search = trim($search); // пробелы слева, справа $search = substr($search, 0, 20); // порезать $search = addslashes($search); // экранирование $search = htmlspecialchars($search); // тэги if( $search == '' OR strlen($search) < 2 ){ exit("Начните вводить запрос"); } $search = '*' . $search . '*'; $sql = "SELECT * FROM `users` WHERE MATCH(`soname`, `name`) AGAINST('$search' IN BOOLEAN MODE)"; $query = $db->query($sql); if( $db->num_rows($query) > 0){ while( $row = $db->get_row($query) ){ $html .= '<a href="/udata/'.$row['id'].'/">'.$row['soname'].' '.$row['name'].'</a>'; }// exit($html); }else{ exit("Нет результатов"); //exit($sql); } } Но у меня заточено под ajax, поэтому смотри на сам запрос. |
|
|
![]() |
![]()
Сообщение
#3
|
![]() |
почему между %% ничего нет? С кавычками в этих двух строках разберитесь: $sql_text .= 'first_name LIKE "%'.$svalue.'%" OR login LIKE "%'.$svalue.'%" or '; ... $sql_text = preg_replace('# or $#', '', $sql_text); Запрос - в двойных кавычках, строковые значения - в одинарных. В том числе и маркеры (%) должны быть заключены в одинарные кавычки, поскольку являются составляющими значения. Где-то так примерно должно выглядеть: $sql_text .= "first_name LIKE '%{$svalue}%' OR login LIKE '%{$svalue}%' or "; ... // то же самое и дальше А вообще, полнотекстовый поиск работает на порядок быстрее, благодаря использованию индексов, каковые не использует оператор LIKE. |
|
|
![]() |
![]()
Сообщение
#4
|
![]() |
почему между %% ничего нет? ответ однозначно в $value и $svalue будь внимательнее |
|
|
![]() |
Сообщение
#5
|
![]() |
С кавычками в этих двух строках разберитесь: спасибо, исправил. теперь вызываю этот метод на странице if (isset($_POST["search"])) { $f = $base->search(); //var_dump($f); $fs = mysql_fetch_assoc($f); //var_dump($fs); $city_name = $base->getOnce("kz_city","city_name",$fs["basic_city"]); $src = $us_info->selAva($fs["login"]); $text = "<div id='one_club'><img src=../party/".$src." class='float-left'> <p style='margin-left:20px; float:left'><a href='index.php?login=".$fs["login"]."' style='font-size:14px'>" .$fs["first_name"]."<br>".$fs["login"]."</a></p> <p style='margin-left:70%'><a href='clubs.php?c=".$fs["basic_city"]."' style='font-size:11px'>".$city_name."</a></p></div>"; echo $text; } но выводится только информация об одном пользователе. а на сайте с такой фамилией и именем их двое Но я делал вот так однажды $sql = "SELECT * FROM `users` WHERE MATCH(`soname`, `name`) AGAINST('$search' IN BOOLEAN MODE)"; А вообще, полнотекстовый поиск работает на порядок быстрее, благодаря использованию индексов, каковые не использует оператор LIKE. для этого в базе данных надо же индексировать эти данные? или не обязательно? |
|
|
![]() |
![]()
Сообщение
#6
|
![]() |
Смотрим что возвращает Ваш метод:
$sqlt = mysql_fetch_assoc($sql); return $sqlt; Итак, что? Правильно, 1 ряд результата запроса. Для того, чтобы вернуть все ряды, необходимо пройтись по результату в цикле... например так: $data = array(); while($sqlt = mysql_fetch_assoc($sql)){ $data[] = $sqlt; } return $data; // возвращаем массив всех результатов для этого в базе данных надо же индексировать эти данные? или не обязательно? Обязательно, поскольку полнотекстовый поиск в своей работе использует полнотекстовый индекс. Индексирование полей несколько замедляет изменение данных таблицы, но зато их выборка становится практически мгновенной даже на очень больших массивах данных... чего не скажешь о поиске оператором LIKE, который подходит для относительно небольших массивов данных и небольших текстовых полей (CHAR / VARCHAR). |
|
|
![]() |
Сообщение
#7
|
![]() |
тогда вывод информации нужно тоже в цикле выводить? во здесь
if (isset($_POST["search"])) все это в цикл загнать, да? |
|
|
![]() |
![]()
Сообщение
#8
|
![]() |
Информация из БД складывается в массив. Ну а затем эта информация из массива выводится на странице в нужном виде. Понятно, что для получения информацию из массива, нужно пройтись по этому массиву в цикле, выбирая один элемент за другим.
все это в цикл загнать, да? Не все, а только то, что попадает, насколько я понимаю, в переменную $f. Можно распечатать этот объект, чтобы понять как с ним работать: print_r($f);
|
|
|
![]() |
Сообщение
#9
|
![]() |
Не все, а только то, что попадает, насколько я понимаю, в переменную $f. Можно распечатать этот объект, чтобы понять как с ним работать: с помощью этой функции print_r($f); теперь попало все, что нужно, два массива с данными двух пользователей теперь вставил все в цикл if (isset($_POST["search"])) { $f = $base->search(); foreach ($f as $pep_info) { $i = 0; $city_name = $base->getOnce("kz_city","city_name",$f[$i]["basic_city"]); $src = $us_info->selAva($f[$i]["login"]); $text = "<div id='one_club'><img src=../party/".$src." class='float-left'> <p style='margin-left:20px; float:left'><a href='index.php?login=".$f[$i]["login"]."' style='font-size:14px'>" .$f[$i]["first_name"]."<br>".$f[$i]["login"]."</a></p> <p style='margin-left:70%'><a href='clubs.php?c=".$f[$i]["basic_city"]."' style='font-size:11px'>".$city_name."</a></p></div>"; echo $text; $i++; } выводится два блока div с информацией о пользователе, но информация только об одном в обоих. хотя в $f попал массив с двумя |
|
|
![]() |
Сообщение
#10
|
![]() |
а всё, исправил. счетчик $i надо было вне цикла задавать
|
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
![]() |
Плагин текстовых трансляций футбола или скрипт | 6 | WGN | 1458 | 9.4.2021, 12:07 автор: Nuzdin |
![]() |
Продам скрипт rtb exchange suite - система перепродажи трафика dsp/ssp в реальном времени. | 2 | buypushplatform | 629 | 5.4.2021, 13:40 автор: buypushplatform |
![]() |
Push-Platform.com - Скрипт рекламной сети Push уведомнений | 2 | buypushplatform | 525 | 5.4.2021, 13:34 автор: buypushplatform |
![]() |
Сделаю вам сайт или скрипт | 15 | littleАnt | 5888 | 22.3.2021, 0:45 автор: littleАnt |
![]() |
Скрипт для торговли на binance binance, крипта, криптоволюта, алгоритмическая торговля |
3 | Gallattam | 479 | 16.3.2021, 0:38 автор: Gallattam |
![]() |
Текстовая версия | Сейчас: 19.4.2021, 22:22 |