Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/54: Рейтинг темы: голосов - 54, средняя оценка - 4.63
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674

Поиск по первым буквам из формы!

24.11.2011, 23:47. Показов 10416. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть массив, в нём имена.

Надо чтобы "что-то" выводило те имена у которых начало на букву "А".

Как такое реализовать? Приготовил форму, пробовал некоторые ф-ии, но безуспешно, выводило все имена где есть буква "А", а надо только те, где начинается с буквы "А".

Собственно форма:

PHP
1
2
3
4
5
<?php
echo "<div id='defdiv'><form name='form1' method='post' action=''>
<p><input name='search' id='text' type='text' value='$_POST[search]' size='82' maxlength='255' autofocus></p>
</form></div>";
?>
Вот на чём остановился:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
include("blocks/menu.php");
echo "<h2 align='center'>$pagetitle</h2>";
 
echo "<div id='defdiv'><form name='form1' method='post' action=''>
<p><input name='search' id='text' type='text' value='$_POST[search]' size='82' maxlength='255' autofocus></p>
</form></div>";
 
if(isset($_POST['search']) and $_SESSION['ID'] == ""){
    $result = mysql_query("SELECT `id`,`login` FROM `users` WHERE `ban` = '0'");
    $row = mysql_fetch_array($result);
    
    if($row['id'] != ""){
        echo "<div id='defdiv'>";
        
        do{
            // Условие
        }
        while($row = mysql_fetch_array($result));
        
        echo "</div>";
    }
    else{
        echo "<div id='defdiv'><h5 align='center'>Поиск не возможен...</h5></div>";
    }
}
?>
Там в цикле есть коментарий "Условие", вот там должно быть то, что в цикле будет выводить найденые слова по первым буквам введенным в форму. Спасибо большое за "возможно" будущюю помощ.

Добавлено через 2 часа 57 минут
Ну помогите пожалуйста! =\

Добавлено через 1 час 41 минуту
Вы не можете помоч? Я уверен что это не сложно!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.11.2011, 23:47
Ответы с готовыми решениями:

Поиск слова по первым 5 буквам
Есть база слов, все слова разной длинны, находятся в текстовом документе на раб. столе. Я открываю свой софт и пишу(если слово 10 знаков...

Поиск по первым буквам слова
Добрый день. Подскажите пожалуйста код для поиска по первым буквам слова. В компонент tableView_5 выгружается информация из таблицы, и...

Поиск по первым буквам в StringGrid
Здравствуйте есть база данных StringGrid, есть поиск , но как сделать что бы искало по первым буквам не знаю.Пожалуйста посмотрите архив и...

16
48 / 48 / 2
Регистрация: 25.05.2011
Сообщений: 277
25.11.2011, 08:11
Давайте попробуем запрос разобрать для начала....там нет и намека на $_POST['search']
0
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
25.11.2011, 15:07  [ТС]
Цитата Сообщение от planod Посмотреть сообщение
Давайте попробуем запрос разобрать для начала....там нет и намека на $_POST['search']
Я его использовал на том месте где коментарий "Условие"!

-_-

Проблема в том, что я пытался делать. И к примеру есть 2 пользователя с логином: Administrator и Maksimchik. Введя к примеру букву "s", оно выберает и того, и другого. Тоесть оно выберает тех у кого найдена такая буква. А мне надо чтобы начинал искать по первой. И если в $_POST['search'] ввести "m", то должен отобразить только Maksimchik. А отображает и Administrator, потому что ясно что там тоже есть "m". Вот я не знаю как реализовать такое. Но я думаю о цикле и массиве букв. Некое получилось сделать, но только по самой первой и по одной букве.
0
135 / 135 / 29
Регистрация: 18.10.2011
Сообщений: 306
25.11.2011, 17:40
$str - Несколько первых символов в имени
locate(search,source) -функция мускула которая возвращает позицию первого вхождения строки search в строке source
SQL
1
2
3
SELECT *
FROM users
WHERE ban = 0 AND locate('{$str}',username)=1
Добавлено через 2 минуты
Если
PHP
1
$str = "Mak";
То в выдаче будут все пользователи, у которых нет бана и ник начинается с "Mak".
Если в базе 2 пользователя Administrator и Maksimchik.
Выдаст одну запись - пользователя Maksimchik.

Добавлено через 3 минуты
Вообще этот вопрос скорее к бд относится ) На пхп это можно реализовать выборкой всех записей где нет бана и выводом только тех у кого ник начинается на определенные символы. И о5 же в пхп есть функции для работы со строками и есть функции по определению первого вхождения подстроки в строку. Как вы так бан в гугле отхватили ?)

Добавлено через 1 минуту
И еще добавлю. Как - то не круто в виде с базой работать =)
1
6 / 6 / 0
Регистрация: 14.11.2011
Сообщений: 54
25.11.2011, 17:42
мне кажется что проще будет даже
SQL
1
2
3
SELECT *
FROM users
WHERE ban LIKE 'm%';
тогда выведет всех где начинается на m.
0
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
26.11.2011, 03:46  [ТС]
Цитата Сообщение от forgergg Посмотреть сообщение
locate('{$str}',username)
Я почитал немного, но не совсем понял, вот такой запрос сформулировал:

PHP
1
$result = mysql_query("SELECT `id`,`login` FROM `users` WHERE `ban` = '0' AND LOCATE('{$search}', `login`)");
Но если ввести одну букву "m" то выводит Administrator, Maksimchik. Что то близко, но не могу раздуплица.

Оно ищет сочетание, если написать "mi", выведет админа. Если "ma" то максимчика. Мне надо чтобы по первым выдавало. А у админа выходит "m" далеко не первая.
0
48 / 48 / 2
Регистрация: 25.05.2011
Сообщений: 277
26.11.2011, 04:10
у нас передается в php-обработчик переменная:
PHP
1
$_POST['search']
Условие поиска в таблице данных:
PHP
1
$search = $_POST['search']+"%"
подробнее про эту конструкцию тут
теперь сам sql-запрос:
SQL
1
"SELECT `id`,`login` FROM `users` WHERE (`ban` = '0') and (login like $search)"
P.S. в запросе мог немного напутать с кавычками, так как пишу все по памяти.
0
135 / 135 / 29
Регистрация: 18.10.2011
Сообщений: 306
26.11.2011, 04:29
Цитата Сообщение от Maksimchikfull Посмотреть сообщение
Я почитал немного, но не совсем понял, вот такой запрос сформулировал:
Неправильный вы запрос сформировали. Вот так надо :

PHP
1
$result = mysql_query("SELECT `id`,`login` FROM `users` WHERE `ban` = '0' AND LOCATE('{$search}', `login`)=1");
т.е.
SQL
1
locate(substr,str) = 1
Добавлено через 4 минуты
Или же через конструкцию LIKE
PHP
1
mysql_query("select id, login from users where ban = 0 and login like {$search}%")
как уже писали выше.
1
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
26.11.2011, 05:23  [ТС]
Цитата Сообщение от forgergg Посмотреть сообщение
Неправильный вы запрос сформировали. Вот так надо :

PHP
1
$result = mysql_query("SELECT `id`,`login` FROM `users` WHERE `ban` = '0' AND LOCATE('{$search}', `login`)=1");
т.е.
SQL
1
locate(substr,str) = 1
Добавлено через 4 минуты
Или же через конструкцию LIKE
PHP
1
mysql_query("select id, login from users where ban = 0 and login like {$search}%")
как уже писали выше.
LIKE не сработала. Была ошибка от mysql_fetch_array();

А вот LOCATE сработало на ура! Спасибо большое!

Добавлено через 2 минуты
forgergg, Но что означает то "...=1"?

Добавлено через 1 минуту
forgergg, И что означают скобочки "{" и "}"? То я сколько не пользоватлся, впервые встречаю.
0
48 / 48 / 2
Регистрация: 25.05.2011
Сообщений: 277
26.11.2011, 07:25
При использовании like поэксперементируйте с кавычками.
0
135 / 135 / 29
Регистрация: 18.10.2011
Сообщений: 306
26.11.2011, 16:01
Цитата Сообщение от Maksimchikfull Посмотреть сообщение
forgergg, Но что означает то "...=1"?
Я же писал, что Locate(substr,str) возвращает позицию первого вхождения подстроки в строку
Locate(substr,str) = 1 Означает, что substr должна находится в начале строки str, т.е. первый символ substr должен находится в строке str на 1ой позиции.
А на счет LIKE. В конце поисковой строки не должно быть слешей на конце, т.е. что бы не было таких ситуаций "adm\%" и само регулярное выражение должно быть в кавычках.
PHP
1
'{$search}%'
Цитата Сообщение от Maksimchikfull Посмотреть сообщение
И что означают скобочки "{" и "}"? То я сколько не пользоватлся, впервые встречаю.
Фигурные скобочки - это сложный синтаксис вставки в строку. {$} / Что бы интерпретатор нашел в строке свою конструкцию надо пере фигурной скобкой поставить знак доллара, а далее имя переменной/метода класса/свойства и пр. Вызов функций, кстати, немного отличается. {${имя_функции}} так же и константы.
0
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
27.11.2011, 06:45  [ТС]
Цитата Сообщение от forgergg Посмотреть сообщение
Я же писал, что Locate(substr,str) возвращает позицию первого вхождения подстроки в строку
Locate(substr,str) = 1 Означает, что substr должна находится в начале строки str, т.е. первый символ substr должен находится в строке str на 1ой позиции.
А на счет LIKE. В конце поисковой строки не должно быть слешей на конце, т.е. что бы не было таких ситуаций "adm\%" и само регулярное выражение должно быть в кавычках.
PHP
1
'{$search}%'

Фигурные скобочки - это сложный синтаксис вставки в строку. {$} / Что бы интерпретатор нашел в строке свою конструкцию надо пере фигурной скобкой поставить знак доллара, а далее имя переменной/метода класса/свойства и пр. Вызов функций, кстати, немного отличается. {${имя_функции}} так же и константы.
Спасибо!
0
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
26.12.2011, 02:53  [ТС]
Прошу поднять тему.

Теперь меня мучает более сильный вопрос!

Мне нужен поиск. Скажем вводим "Евгений Орлов" или "Орлов Евгений", и должно найти такового, или таких если не один. Буду очень признателен. То я совсем не понимаю как.
0
135 / 135 / 29
Регистрация: 18.10.2011
Сообщений: 306
26.12.2011, 08:55
Тоже самое только надо разделить поисковую строку на части и искать вхождение каждой части по отдельности тип
SQL
1
 WHERE name LIKE Евгений% AND LIKE Орлов%
На счет синтаксиса с лайк не уверен, но с Locate можно искать вхождения в строку поисковых конструкции и исходя из этого делать выводы.

Добавлено через 1 минуту
А вообще так-то это не есть гуд в одно поле загонять имя и фамилию. Надо разделить на несколько полей, т.е. отдельно Имя, отдельно Фамилия и может быть еще Отчество =/
0
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
26.12.2011, 09:06  [ТС]
Цитата Сообщение от forgergg Посмотреть сообщение
Тоже самое только надо разделить поисковую строку на части и искать вхождение каждой части по отдельности тип
SQL
1
 WHERE name LIKE Евгений% AND LIKE Орлов%
На счет синтаксиса с лайк не уверен, но с Locate можно искать вхождения в строку поисковых конструкции и исходя из этого делать выводы.

Добавлено через 1 минуту
А вообще так-то это не есть гуд в одно поле загонять имя и фамилию. Надо разделить на несколько полей, т.е. отдельно Имя, отдельно Фамилия и может быть еще Отчество =/
Отчество уже не надо. Так и есть! Разные полня(отдельные)...
0
135 / 135 / 29
Регистрация: 18.10.2011
Сообщений: 306
26.12.2011, 09:19
Цитата Сообщение от Maksimchikfull Посмотреть сообщение
Отчество уже не надо. Так и есть! Разные полня(отдельные)...
Тогда в чем проблема ?
SQL
1
SELECT * FROM users WHERE firstname LIKE '{$firstname}%' AND lastname LIKE '{$lastname}%'
Добавлено через 6 минут
А я кажется понял. Может сделать отдельное поле где будет конкатенация имени и фамилии ? (первое что в голову пришло =/ ) И потом по нему поиск делать. Хотя наверно можно в sql написать что-то на подобии locate(search,firstname+' '+lastname)
0
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
26.12.2011, 12:26  [ТС]
Цитата Сообщение от forgergg Посмотреть сообщение
Тогда в чем проблема ?
SQL
1
SELECT * FROM users WHERE firstname LIKE '{$firstname}%' AND lastname LIKE '{$lastname}%'
Добавлено через 6 минут
А я кажется понял. Может сделать отдельное поле где будет конкатенация имени и фамилии ? (первое что в голову пришло =/ ) И потом по нему поиск делать. Хотя наверно можно в sql написать что-то на подобии locate(search,firstname+' '+lastname)
Скажем я вставлю код.

От регистра зависит?

Я сейсас пишу заново сайт, и желательно знать на будущее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.12.2011, 12:26
Помогаю со студенческими работами здесь

Поиск записей в списке по первым буквам
всем привет... вопрос конечно глупый, но не тривиальный... на форме Главная есть список0 со следующим запросом SELECT...

Поиск по первым буквам в классе Dictionary
Привет всем! В общем есть пара вопросов: 1) как сделать поиск по первым словам в слове как на картинке 2) и чтобы результат поиска был...

Поиск имен в Dictionary по первым двум буквам
Задание такое: &quot;В отпуске Вася не тратил время зря, а заводил новые знакомства. Он знакомился с другими крутыми программистами,...

Как сделать поиск по первым буквам слов?
Делаю поиск по буквам. При вводе в эдит буквы &quot;в&quot; в таблице выводит и иванова, и петрова, и волкова. Как сделать чтобы начинало искать по...

Поиск файлов в директории по первым буквам их имен
Вообщем проблема вот в чем - Есть текстбокс который называется &quot;Поиск&quot;. Короче смысл такой же как и у эксплорера... банальный поиск файла в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru