Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2015, 14:23   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Вопрос Поиск по имени в БД

Доброго времени суток!
Пишу PHP для поиска пользователей. С IP и ID всё просто
PHP код:
<?php
include "dbconnect.php";
// Проверка на пустоту
if (empty($_POST['search'])) {
    die; 
}
switch (
$_POST['type']) {
    case 
0:
        
// Поиск по имени
        
break; // Дальше по коду не идём
    
case 1:
        
// Поиск по IP-адресу
        
$query "SELECT * FROM `users` WHERE `ip_address` = '".mysql_real_escape_string($_POST['search'])."'";
        
$result mysql_query($query) or die ("ERROR: ".mysql_error());
        
$row mysql_fetch_array($result);
        if (empty(
$row)) {
            die;
        } else {
            echo 
$row['uid'].'~'.$row['status'].'~'.$row['nick'].'~'.$row['admin_status'].'!end-name'// Выводим данные
        
}
        break;  
// Дальше по коду не идём
    
case 2:
        
// Поиск по ID
        
$query "SELECT * FROM `users` WHERE `uid` = '".mysql_real_escape_string($_POST['search'])."'";
        
$result mysql_query($query) or die ("ERROR: ".mysql_error());
        
$row mysql_fetch_array($result);
        if (empty(
$row)) {
            die;
        } else {
            echo 
$row['uid'].'~'.$row['status'].'~'.$row['nick'].'~'.$row['admin_status'].'!end-name'// Выводим данные
        
}
}
?>
застрял на реализации поиска по имени.
Например в базе есть имя Алексей, то это имя нам должно быть отправлено, если мы будем его искать по одной букве а или А.
Shouldercannon вне форума Ответить с цитированием
Старый 04.03.2015, 15:34   #2
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Цитата:
Например в базе есть имя Алексей, то это имя нам должно быть отправлено, если мы будем его искать по одной букве а или А.
Если поле не binary
Код:
SELECT * FROM `users` WHERE `name` LIKE 'а%';
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 04.03.2015, 15:35   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

Код:
name LIKE %name%
ADSoft вне форума Ответить с цитированием
Старый 04.03.2015, 16:24   #4
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Код:
		$query = "SELECT * FROM `users` WHERE `nick` = '".mysql_real_escape_string($_POST['search'])."'";
		$result = mysql_query($query) or die ("ERROR: ".mysql_error());
		$row = mysql_fetch_array($result);
		if (empty($row)) {
			die;
		} else {	
			//while ($row = mysql_fetch_array($result)) // Берём результаты из каждой строки
			echo $row['uid'].'~'.$row['status'].'~'.$row['nick'].'~'.$row['admin_status'].'!end-name'; // Выводим данные
		}
= и LIKE работают одинаково. Выводят результат только если есть точное совпадение
Shouldercannon вне форума Ответить с цитированием
Старый 04.03.2015, 16:29   #5
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
= и LIKE работают одинаково. Выводят результат только если есть точное совпадение
Это не так, не забываем про %.
PHP код:
$query "SELECT * FROM `users` 
          WHERE `nick` LIKE '"
.mysql_real_escape_string($_POST['search'])."%'"
Andkorol вне форума Ответить с цитированием
Старый 04.03.2015, 16:29   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Выводят результат только если есть точное совпадение
если неправильно указать условия отбора. (не задать маску %)
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 04.03.2015, 16:40   #7
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Понял. Другая проблема. Записей много, но вывести можно нормально только одну
Код:
echo $row['uid'].'~'.$row['status'].'~'.$row['nick'].'~'.$row['admin_status'].'!end-name';
если сделать так
Код:
while ($row = mysql_fetch_array($result)) // Берём результаты из каждой строки
			echo $row['uid'].'~'.$row['status'].'~'.$row['nick'].'~'.$row['admin_status'].'!end-name';
Приходит пустота
Shouldercannon вне форума Ответить с цитированием
Старый 04.03.2015, 17:49   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

PHP код:
$query "SELECT * FROM `users` 
          WHERE `nick` LIKE '"
.mysql_real_escape_string($_POST['search'])."%'"
$result mysql_query($query) or die ("ERROR: ".mysql_error());
if(
mysql_num_rows($result) > 0){
    while(
$row mysql_fetch_array($result)){
        echo 
$row['uid'].'~'.$row['status'].'~'.$row['nick'].'~'.$row['admin_status'].'!end-name';
    }
}
else{
    die(
'Results not found!');

Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск компонента по имени Aleksandr Microsoft Office Excel 1 24.09.2014 18:51
Поиск папки по имени в директории artemavd Общие вопросы Delphi 4 06.08.2010 08:18
Поиск файла по имени zallza Общие вопросы Delphi 2 14.04.2010 06:56
Поиск компонентов по имени AHTuKiLLeR Общие вопросы Delphi 7 02.06.2009 07:56
TTreeView поиск по имени Родион Компоненты Delphi 6 05.05.2008 14:07