Список форумов Шадринский форум -> Программирование -> PHP, PERL, HTML, CSS etc -> Полезные вещички
Начать новую тему   Ответить на тему   вывод темы на печать

Полезные вещички

Автор
Сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2005.05.14 09:19.25
Ответить с цитатой
> Задача состоит в следующем - недопустить одинаковых логинов в базе MySQL.

Объявите поле `login` уникальным индексом, и задача решится сама собой.
Запускаете запрос:

INSERT IGNORE INTO `company` SET `login` = 'name'

Потом вызываете mysql_affected_rows(). Если возвращает 1, все в порядке, новый логин добавлен. Если возвращает 0, то такой логин уже существует.
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Мишаня_:-)
Запомнил кнопки...


Пол: Пол:Муж.
Зарегистрирован: 12.12.2004
Сообщения: 265


Статус: Offline
СообщениеДобавлено: 2005.05.15 21:26.47
Ответить с цитатой
просто и оригинально... давай побольше таких полезных мелочушек...
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Brain
Писатель


Пол: Пол:Муж.
Зарегистрирован: 01.12.2004
Сообщения: 357


Статус: Offline
СообщениеДобавлено: 2005.05.18 21:29.46
Ответить с цитатой
Мда попроще чем:
$res=mysql_query("select * from BAZA login='$name'");
$num=mysql_num_rows($res);
if ($num==false)
{
echo "Такого имени нет";
}
else
{
echo "Такой name уже существует";
}
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2005.05.18 21:31.46
Ответить с цитатой
не просто проще. а надёжней. есть момент, что после селекта и перед инсертом будет еще один инсерт, который нарушит уникальность. легко. софт сглючит или посещаемость в данный момент будет больше. вот.
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Brain
Писатель


Пол: Пол:Муж.
Зарегистрирован: 01.12.2004
Сообщения: 357


Статус: Offline
СообщениеДобавлено: 2005.09.13 10:24.12
Ответить с цитатой
Кстати воспользовался этим в программировании новой гамы.
Нужно было создать таблицу онлайн пользователей с идентификатором md5($pass.time().$REMOTE_ADDR);
получаеться сессия.. вожможность совпадения конечно же очень мала, но во избежании повтора перекрестился левой пяткой и обьявил как Уникум ИД!
Посмотреть профиль Отправить личное сообщение
gloom
Начинающий



Зарегистрирован: 12.12.2004
Сообщения: 19
Откуда: Бродяга я

Статус: Offline
СообщениеДобавлено: 2005.09.28 00:00.15
Ответить с цитатой
andy ice писал(а):
> Задача состоит в следующем - недопустить одинаковых логинов в базе MySQL.

Объявите поле `login` уникальным индексом, и задача решится сама собой.
Запускаете запрос:

INSERT IGNORE INTO `company` SET `login` = 'name'

Потом вызываете mysql_affected_rows(). Если возвращает 1, все в порядке, новый логин добавлен. Если возвращает 0, то такой логин уже существует.


Гм, я сколько учебников читал, везде так добавление записии и осуществляется, вы все по мануэлу учили пхп?
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2005.09.28 07:30.01
Ответить с цитатой
а мы учебников не читаем. ибо обычно все учебники переводы мануала.
а те учебники, которые всё таки читали - в тех нет таких конструкций sql, ибо всё таки не стандарт, хотя хз
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Brain
Писатель


Пол: Пол:Муж.
Зарегистрирован: 01.12.2004
Сообщения: 357


Статус: Offline
СообщениеДобавлено: 2008.11.24 19:40.43
Ответить с цитатой
вопросик по теме...

возможно ли уникальное поле обьединить с другим полем?


напрмер в таблице может быть множество одинаковых `login` уникальных по группам
-------------------
login | group |
-------------------
name1| 1 |
-------------------
name2| 1 |
-------------------
name3| 1 |

--------------------
name1| 2 |
-------------------
name2| 2 |

-------------------
name1| 3 |
-------------------
name3| 3 |
-------------------
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.11.24 19:43.12
Ответить с цитатой
лучше бы написал что есть и что надо.

select concat(login, ' ', group) login_group from ...

приходит в голову, может что-то другое надо, не очень ясно
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Brain
Писатель


Пол: Пол:Муж.
Зарегистрирован: 01.12.2004
Сообщения: 357


Статус: Offline
СообщениеДобавлено: 2008.11.24 19:50.26
Ответить с цитатой
нужно чтобы при инсерте имена не дублировались..

к примеру так:

-------------------
login | group |
-------------------
name1| 1 |
-------------------
name2| 1 |
-------------------
name2| 1 |
-------------------
name3| 1 |

2 и 3тья запись продублировалась(name2), ни есть гуд(

Добавлено спустя 4 минуты 23 секунды:

поправил пример
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.11.24 20:37.54
Ответить с цитатой
добавь уникальный составной индекс по двум полям и смотри самый первый пост Wink
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Brain
Писатель


Пол: Пол:Муж.
Зарегистрирован: 01.12.2004
Сообщения: 357


Статус: Offline
СообщениеДобавлено: 2008.11.24 21:25.55
Ответить с цитатой
andy ice писал(а):
добавь уникальный составной индекс по двум полям и смотри самый первый пост Wink

спасибо, помогло!

добавил к таблице индекс

UNIQUE `index1` (`group`, `login`)

и никакого дублирования
Посмотреть профиль Отправить личное сообщение
Brain
Писатель


Пол: Пол:Муж.
Зарегистрирован: 01.12.2004
Сообщения: 357


Статус: Offline
СообщениеДобавлено: 2008.12.19 22:10.51
Ответить с цитатой
Еще вопрос,

-------------------
login | group |
-------------------
name1| 1 |
-------------------
name2| 2 |
-------------------
name2| 1 |
-------------------
name2| 1|

нужно чтобы name1,name2,name3.. и.т.д неповторялись при group = '1'
с другим значение group, повторы могут быть
Интересно можно такой индекс заманьячить?
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.12.20 08:58.18
Ответить с цитатой
аналогично предыдущему не катит чтоли?
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Brain
Писатель


Пол: Пол:Муж.
Зарегистрирован: 01.12.2004
Сообщения: 357


Статус: Offline
СообщениеДобавлено: 2008.12.20 19:12.10
Ответить с цитатой
andy ice писал(а):
аналогично предыдущему не катит чтоли?

нет, при group = '2' group = '3' имена тоже уникальные становятся
их уникальность нужна только при group = '1'

Добавлено спустя 1 час 57 минут 44 секунды:

any help please
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.12.20 19:16.47
Ответить с цитатой
а. не понял значит. наверно что-то в логике или постановке не так, не понятные условия. влёт не могу предложить решение
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Brain
Писатель


Пол: Пол:Муж.
Зарегистрирован: 01.12.2004
Сообщения: 357


Статус: Offline
СообщениеДобавлено: 2008.12.22 13:39.48
Ответить с цитатой
м.б. триггерами...
эт. реально?
грузить базу не сильно будет?
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2008.12.22 13:47.30
Ответить с цитатой
дык а что такое триггер, то же самое фактически что и предварительное выяснение наличия дубля, только прозрачное и на стороне сервера. т.е. по идее быстрее будет, чем предварительная проверка
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Konst
Писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 682


Статус: Offline
СообщениеДобавлено: 2008.12.22 15:47.59
Ответить с цитатой
Brain
Вынеси group=1 в отдельную таблицу.
Посмотреть профиль Отправить личное сообщение
Pulse
Писатель


Пол: Пол:Муж.
Зарегистрирован: 23.12.2008
Сообщения: 352


Статус: Offline
СообщениеДобавлено: 2009.01.16 04:46.49
Ответить с цитатой
Хм.. а в чем дело?
уникальность первичных ключей???

CREATE TABLE name
...
...
PRIMARY KEY (name1, name2));

З.Ы.
Прочитал, подробнее, что задача несколько иная....
Но в любом случае вы сможете построить эффективный индекс, тем более зная условия своей задачи
Это будут частные случаи..
Посмотреть профиль Отправить личное сообщение
Страница 1 из 1
Начать новую тему   Ответить на тему   вывод темы на печать
Показать сообщения:   
Список форумов Шадринский форум -> Программирование -> PHP, PERL, HTML, CSS etc -> Полезные вещички

 
Перейти: 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы