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

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

24.11.2011, 23:47. Показов 10357. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru