Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
Watched Topics
FAQ
Поиск
Пользователи
Группы
Регистрация
Профиль
Войти и проверить личные сообщения
Вход
Список форумов Cake-PHP.ru
->
Общий
Ответить
Имя
Тема
Сообщение
Смайлики
Дополнительные смайлики
Цвет шрифта:
По умолчанию
Тёмно-красный
Красный
Оранжевый
Коричневый
Жёлтый
Зелёный
Оливковый
Голубой
Синий
Тёмно-синий
Индиго
Фиолетовый
Белый
Чёрный
Размер шрифта:
Размер шрифта
Очень маленький
Маленький
Обычный
Большой
Огромный
Закрыть теги
[quote="Kondrat"]сделал табличку Tag. сохранил таг 'name' 99ru, 'id' 10. потом сохраняю таг 99 (ищу если ли такой findByName), но... PHP приводит типы, находит, что 99 уже есть, 'id' 10. Пробовал устанавливать тип, не помогает. Что делать?[/quote]
Настройки
HTML
ВЫКЛЮЧЕН
BBCode
ВКЛЮЧЕН
Смайлики
ВКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Отключить в этом сообщении смайлики
Если у вас плохое зрение или вы не можете прочесть этот код по какой-то другой причине, то обратитесь за помощью к
Администратору
.
Код подтверждения: *
Введите код в точности так, как вы его видите. Код является регистро-зависимым, а символ нуля имеет косую линию внутри цифры.
Часовой пояс: GMT + 3
Перейти:
Выберите форум
CakePHP Форум
----------------
Общий
Установка и настройка
Творчество
Вопросы и пожелания
Комментарии к главам руководства по CakePHP 1.1
Обзор темы
Автор
Сообщение
kondrat
Добавлено: 14 Май 2008 12:02:27
Заголовок сообщения:
Если кому интересно, я по этому поводу сделел тикет (кривенько правда, но меня поправили)
https://trac.cakephp.org/ticket/4589
Думаю, что про это теперь можно забыть.
Vlad
Добавлено: 09 Май 2008 00:26:29
Заголовок сообщения:
Если в изначальном примере вводить цифры, то запрос идёт
= 99
Если вводить 99r
то запрос будет
... = '99r'
Если цифры на входе - нет кавычек в запросе. Отсюда и "элемент в базе присутствует уже".
nws
Добавлено: 07 Май 2008 23:47:22
Заголовок сообщения:
Попробуй это
Код:
function register()
{
$this->set('username_error', false);
if (!empty($this->data)) {
if ($this->User->validates($this->data)) {
if ($this->User->findByUsername($this->data['User']['username'])) {
$this->User->invalidate('username');
$this->set('username_error', __('User already exist', true));
} else {
$this->data['User']['password'] = $this->data['User']['password'];
$this->User->save($this->data);
$this->Session->write('user', $this->data['User']['username']);
$this->redirect('somewhere');
}
} else {
$this->validateErrors($this->User);
}
}
}
Код:
<form action="<?php echo $html->url('/users/register'); ?>" method="post">
<table>
<tr>
<td colspan="2"><h2><?echo __('Register', true)?></td>
</tr>
<tr>
<td>
<label for="username"><?echo __('Login', true)?>:</label>
</td>
</tr>
<tr>
<td>
<input type="text" size="20" name=data[User][username] />
<?
if ($username_error){
echo $username_error;
}else{
echo $form->error('User/username');
}
?>
</td>
</tr>
<tr>
<td><label for="password"><?echo __('Password', true)?>:</label></td>
</tr>
<tr>
<td>
<input type="password" size="20" name=data[User][password] />
<?echo $form->error('User/password');?>
</td>
</tr>
<tr>
<td>
<label for="email">E-mail:</label>
</td>
</tr>
<tr>
<td>
<input type="text" size="20" name=data[User][email] />
<?echo $form->error('User/email');?>
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="<?echo __('GO', true)?>" /></td>
</tr>
</table>
</form>
DeeperMD
Добавлено: 07 Май 2008 22:25:13
Заголовок сообщения:
ну значит это не проблема Пирожка.. а MySQL походу
Если Пирожок в запрос вставляет то что вы указали то он здесь непричем.
Kondrat
Добавлено: 07 Май 2008 22:18:12
Заголовок сообщения:
999 берется, потому что я ввожу '999'.
мне кажется вы не совсем поняли.
я хочу такой логин: '999'. число это мое любимое скажем. Оно и идет в модель без проблем, но оно integr, а не string несмотря ни на что.
Но до меня другой человек зарегился как '999иван'. это string.
И тут cake вместо того, чтобы создать запись с username '999'. сравнивает с '999' c '999иван', приводит типы и говорит, что такой уже есть.
если порядок обратный, '999иван' c '999' то трабла нет.
На всех сайтах, где я попробовал зарегистр эта проблема есть.
DeeperMD
Добавлено: 07 Май 2008 21:25:52
Заголовок сообщения:
интересно откуда береться 999..
это невозможно.. посморите.. где-то баг.. отследите переменную от ввода до подачи запроса в модель Пирожка.. Дуумаю там меняется значение до ввода в запрос.
Гость
Добавлено: 07 Май 2008 20:29:31
Заголовок сообщения:
nws
Цитата:
CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(40) collate utf8_unicode_ci NOT NULL,
`password` varchar(40) collate utf8_unicode_ci NOT NULL,
`email` varchar(255) collate utf8_unicode_ci NOT NULL,
`last_login` datetime NOT NULL,
`is_moder` tinyint(4) NOT NULL default '0',
`is_admin` tinyint(4) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`,`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=16 ;
естественно, на UNIQUE KEY внимание обрати. убери email оттуда.
Kondrat
Добавлено: 07 Май 2008 20:16:20
Заголовок сообщения:
debug конечно цифру показывает. '999'. эту цифру находит в записи с такой же цифрой '999пример' , которая до того уже была.
если вначале записать цифру , а потом цифру с буквой, то все ок.
Kondrat
Добавлено: 07 Май 2008 20:09:30
Заголовок сообщения:
http://scratch.mit.edu/signup
к примеру щас попробовал, тоже самое.
Как у вас работает?
мой кусок кода тоже баг показывает.
DeeperMD
Добавлено: 07 Май 2008 20:08:43
Заголовок сообщения:
Debug проверили?
Igor-san
Добавлено: 07 Май 2008 19:49:57
Заголовок сообщения:
Я решил сразу начать с 1.2.0.6311 beta, правда, пришлось помучаться пока изучал статьи на IBM.com, но так лучше учится.
DeeperMD
Добавлено: 07 Май 2008 19:30:48
Заголовок сообщения:
Какую версию используете?
Igor-san
Добавлено: 07 Май 2008 19:28:10
Заголовок сообщения:
Что-то похожее и у меня, пока изучаю пекарню, и убрал проверку на валидность email. Так вот, есть допустим юзер 123 с емайлом
123@test.ru
Завожу юзера 345 с емайлом 123, и Саке выдает, что такой юзер уже есть. Пока допер,откуда ноги растут, ну в реальной ситуации с проверкой валидности это не страшно. Но, видно и с именем такая же петрушка. Вывод - писать собственную проверку.
DeeperMD
Добавлено: 07 Май 2008 19:28:07
Заголовок сообщения:
На первый взгляд бредовый результат..
Включи debug 2 и посмотри какой запрос уходит в базу, на которые он отвечает что такая запись есть.
У меня лично не было такого..
nws
Добавлено: 07 Май 2008 19:25:45
Заголовок сообщения:
Цитата:
к примеру хочу зарегистрироваться.
1. выбираю ник 007agent.
2 Регистрируюсь.
3. другой юзер хочет ник 007.
4 регистрируется. Получает message, что такой уже есть.
У меня все регистрирует, это ты что-то забуровил...
Вот мой дамп таблицы
Цитата:
--
-- Структура таблицы `users`
--
CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(40) collate utf8_unicode_ci NOT NULL,
`password` varchar(40) collate utf8_unicode_ci NOT NULL,
`email` varchar(255) collate utf8_unicode_ci NOT NULL,
`last_login` datetime NOT NULL,
`is_moder` tinyint(4) NOT NULL default '0',
`is_admin` tinyint(4) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`,`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=16 ;
Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB
Если ничего интересного не нашли, можно рекламу почитать, а рекламируется у нас сегодня «».