|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.01.2012, 03:24 | #1 |
Форумчанин
Регистрация: 22.12.2010
Сообщений: 109
|
[php, mysql] Обработка регистра букв
Есть скрипт, который обрабатывает добавление данных в БД. Перед добавлением в БД идет проверка на наличие такой же записи, если запись есть, то блочим выполнение скрипта, если записи нет добавляем. Скрипт работает на 75% наверное, т.к. он данные добавляет, если есть совпадения то останавливает скрипт. Но если например в БД есть запись "Php" а в форму ввести "php" то скрипт сделает все правильно до if`ki т.е. если смотреть вывод каждой переменной пошагово, то запрос выберет правильную строку и все отлично, но if`ka не сделает своего дела, и создаст еще одну запись но уже такого вида "php" что отличается уже введенной только регистром первой буквы, подскажите как сделать так, что бы соблюдался еще и регистр букв в этой if`ke
PHP код:
Я бы изменил мир, но бог не дает исходников (c)
И сказал мыслитель, напиши свою проблему на бумаге и ты увидишь свои ошибки. |
05.01.2012, 04:26 | #2 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 679
|
Для таких целей в самом mysql существует проверка на уникальность поля UNIQUE KEY
Если уж так любите php Код:
|
05.01.2012, 05:05 | #3 |
Форумчанин
Регистрация: 22.12.2010
Сообщений: 109
|
На сколько я понял функция strtolower($name) все буквы переведет в нижний регистр, что на мой взгляд делать в запросе SELECT глупо, т.к. такого не сделано в запросе INSERT. И буквы могут быть и большими, и тогда запрос опять будет работать не верно, точнее даже на запрос, а сравнение в if`ke, т.к. для php регистр букв играет значение.
Если сделать кодировку столбца utf8_bin, это помогает но на 50%. Т.е. слово "Php" и "php" будут разными, но и при выборке он будет учитывать регистр букв. А мне надо что бы "php" и "Php" или даже "PhP" означали одно и тоже, при этом что бы записывались в БД именно в том виде в котором указано. UNIQUE KEY - тут не совсем понял подразумевается уникальность ячейки, или уникальность строки(id - primary key). Если уникальность строки то получается пользователю надо будет помнить все id. А если уникальность ячейки, то "PHP" "php" "PhP" каждый является по своему уникальным.
Я бы изменил мир, но бог не дает исходников (c)
И сказал мыслитель, напиши свою проблему на бумаге и ты увидишь свои ошибки. Последний раз редактировалось Donatello; 05.01.2012 в 05:11. |
05.01.2012, 09:57 | #4 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,177
|
вопрос та какой?
|
05.01.2012, 15:52 | #5 |
Форумчанин
Регистрация: 22.12.2010
Сообщений: 109
|
Код:
Я бы изменил мир, но бог не дает исходников (c)
И сказал мыслитель, напиши свою проблему на бумаге и ты увидишь свои ошибки. |
05.01.2012, 15:56 | #6 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 679
|
Ну а я вам что написал???
Код:
P.S. Проверил UNIQUE KEY - не дает вставлять одинаковые строки в любом регистре ! Поэтому это самое корректное решение Последний раз редактировалось Cronos20; 05.01.2012 в 16:05. |
05.01.2012, 16:01 | #7 |
Форумчанин
Регистрация: 22.12.2010
Сообщений: 109
|
Вы мне написали запрос SELECT где все буквы переменной $name изменяются в нижний регистр. При таком запросе, если пользователь введет "Php"(как прописано в БД), а запрос переделает все в нижний, эта ифка пропустит "Php" и будет 2 одинаковые записи с разными id вот и все. А мне нужно что бы в любом случае вносилось и считывалось в том регистре в котором введет пользователь в бд, а сравнивалось независимо от регистра или я что то упустил в вашем запросе?
Я бы изменил мир, но бог не дает исходников (c)
И сказал мыслитель, напиши свою проблему на бумаге и ты увидишь свои ошибки. |
05.01.2012, 16:27 | #8 |
Форумчанин
Регистрация: 22.12.2010
Сообщений: 109
|
Кажись понял про что ты говоришь сейчас попробую спасибо за ответ
Я бы изменил мир, но бог не дает исходников (c)
И сказал мыслитель, напиши свою проблему на бумаге и ты увидишь свои ошибки. |
05.01.2012, 16:43 | #10 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 679
|
Я еще раз повторяю, с точки зрения хранения данных, правильным будет поставить на поле `name` UNIQUE KEY и сразу делать insert в базу, при этом отлавливая ошибку вставки, и в этом случае показывать сообщение пользователю !!!! тчк
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Изменение регистра букв | frantic150 | Microsoft Office Excel | 11 | 30.08.2012 08:31 |
TopServer(PHP+MySQL+Apache+/etc), и обновление компонентов(в основном PHP) | Пепел Феникса | Софт | 2 | 05.11.2011 14:38 |
что не так с php кдом или с настройками MySQL+PHP | Jimmi | Помощь студентам | 2 | 27.12.2010 09:03 |
Изменение регистра букв | VladimirAleks | Общие вопросы Delphi | 4 | 27.10.2009 19:27 |
Автоматическое исправление регистра букв | apomin | Microsoft Office Word | 6 | 07.12.2008 00:29 |