Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Поиск совпадений по части слова в бд без учёта пробелов...

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
armancho7777777 Супермодератор
Отправлено: 10 Марта, 2012 - 05:57:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Всем привет!
Реализую autocomplete.
Выполняется поиск по части слова:
PHP:
скопировать код в буфер обмена
  1.  
  2. mysql_query("SELECT `name`, `data` FROM `table`
  3.               WHERE `name` LIKE '".mysql_real_escape_string($name)."%'");      
  4.  

А как осуществить тоже самое без учёта пробелов?
Т.е. пользователь ввёл например "терминатор3" а в БД есть запись "терминатор 3".

(Отредактировано автором: 10 Марта, 2012 - 06:00:22)

 
 Top
armancho7777777 Супермодератор
Отправлено: 10 Марта, 2012 - 10:17:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




И ещё, чтобы не создавать новую тему:
создал поле типа timestamp, но дата туда записывается в таком формате:
2012-03-10 17:11:22
и соответственно так и выводится.
Как это исправить?

(Отредактировано автором: 11 Марта, 2012 - 08:22:08)

 
 Top
EuGen Администратор
Отправлено: 11 Марта, 2012 - 16:05:48
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




armancho7777777
По поводу поиска:
Можно сделать таким запросом:
CODE (SQL):
скопировать код в буфер обмена
  1. "SELECT `name`, `data` FROM `table`
  2.              WHERE REPLACE(`name`, ' ', '') LIKE '".mysql_real_escape_string(str_replace(' ', '', $name))."%'"

По поводу даты:
"Исправить" имеется ввиду формат вывода?
http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]tion_date-format


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
armancho7777777 Супермодератор
Отправлено: 11 Марта, 2012 - 21:49:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Спасибо EuGen!
EuGen пишет:
имеется ввиду формат вывода?

И запись тоже.
Разве в поле типа timestamp не должно записываться дата в таком виде 1331495516 ?
 
 Top
dadli
Отправлено: 11 Марта, 2012 - 22:06:49
Post Id



Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Май 2011  
Откуда: тифилис


Помог: 5 раз(а)




armancho7777777


нет, timestamp формат такои же, какои для типа DATETIME
если хотите в том формате, котори ви сказали, сделаите поле типа INT и примерно такои запрос:
INSERT INTO tablica (vremia) VALUES(UNIX_TIMESTAMP())

(Отредактировано автором: 11 Марта, 2012 - 22:09:50)

 
 Top
armancho7777777 Супермодератор
Отправлено: 11 Марта, 2012 - 23:02:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




А в чём тогда разница между TIMESTAMP и DATETIME ?
 
 Top
dadli
Отправлено: 11 Марта, 2012 - 23:13:08
Post Id



Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Май 2011  
Откуда: тифилис


Помог: 5 раз(а)




armancho7777777

в виде (в формате) практически нет разници.
для TIMESTAMP, можно установить текуши время по умалчаню, при вставке данних, для DATETIME нет. один TIMESTAMP запис занимает 4 баит, DATETIME 8.
и еше есть какои то рзаници.
 
 Top
OrmaJever
Отправлено: 12 Марта, 2012 - 02:01:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




armancho7777777 пишет:
А в чём тогда разница между TIMESTAMP и DATETIME ?

timestamp хранит метку времени в секундах сначала эпохи unix. доступные значения с 1970 года по 2037, а datatime хранит время можно сказать строкой, поэтому доступные значения гораздо больше.
(Добавление)
Да кстате ещё timestamp обновляется сам при добавлении даных в базу на текущее время (примерно как id autoincrement), а datatime установится в 0


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
armancho7777777 Супермодератор
Отправлено: 12 Марта, 2012 - 08:22:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




OrmaJever пишет:
timestamp хранит метку времени в секундах

Вот именно, что она хранит ни метку времени в секундах, а как и datetime в таком виде 2012-03-10 17:11:22
OrmaJever пишет:
timestamp обновляется сам при добавлении даных в базу на текущее время (примерно как id autoincrement), а datatime установится в 0

Да нет, вот именно, что оба поля работаю одинакого, оба автоматом добавляют дату в таком виде 2012-03-10 17:11:22
 
 Top
snikers987
Отправлено: 12 Марта, 2012 - 08:31:33
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)






-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
EuGen Администратор
Отправлено: 12 Марта, 2012 - 09:00:50
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




armancho7777777
Отличия, разумеется, есть. Как минимум в том, что TIMESTAMP спообен хранить (в силу того, что метка времени есть обычное 32-разрядное целое) дату только в пределах от 1970-01-01 00:00:00 до 2037-12-31 23:59:59 (для DATETIME же такой интервал буде куда как шире - от 1000-01-01 00:00:00 до 9999-12-31 23:59:59)
Логически, DATETIME - это абсолютная метка времени, тогда как TIMESTAMP - относительная.
Еще одно отличие в том, что по-умолчанию, начиная с MySQL 5-й версии, данные типа TIMESTAMP конвертируются из текущей временной зоны в UTC.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Мелкий Супермодератор
Отправлено: 12 Марта, 2012 - 09:16:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




EuGen пишет:
для DATETIME же такой интервал буде куда как шире - от 1000-01-01 00:00:00

Оп. Действительно, так в мане и написано. А успешно хранящийся и не выдающих никаких варнингов 0998-04-01 10:54:49 - это внештатная фича, получается? На версии 5.1 точно воспроизводится.
(Добавление)
armancho7777777 пишет:
Вот именно, что она хранит ни метку времени в секундах, а как и datetime в таком виде 2012-03-10 17:11:22

Хранит - метку. Выводит - обычный Y-m-d H:i:s


-----
PostgreSQL DBA
 
 Top
armancho7777777 Супермодератор
Отправлено: 13 Марта, 2012 - 08:26:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Ясно)
Всем спасибо, кто ответил)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB