Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проверить есть ли запись 
:(
    Опции темы
andreyka
Дата 5.10.2008, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 4.11.2006

Репутация: нет
Всего: нет



ПРошу прощения. Но  из за ошибки создалось 2  темы. Удалите темму   которая ниже в категори.

У меня такой вопрос возник. Если  кто может помогите пожалуйста.

У меня есть   новость 
например вставляю новость запросом

Код

$query =
"INSERT INTO $userstable  VALUES ('', 4, 1223214780, 0, 0, '', '$title', '$textshort', '$textmore', '', '', '', '', '', 'right', '', '', 0, 'yes', 'all', 0, 0)";


интересуют  поля $title', '$textshort', '$textmore'

$title =   "название новости";
$textshort=  "коротка новость"  ;
$textmore ="полная новость" ;
 
как мне в запросе проверить , есть  ли уже  запись  в базе данных, из поля  $title 
тоесть  мне нужно  чтоб   добавляемая запись  а именно название новости
было уникальным. Как сделать  это. Извините что спрашиваю  начал учить  sql
так как понадобилось а понять не могу.

Я могу конечно проверять  с помощью IF оператора   но делать  двойную работу  не хочу.

и так если $title =   "название новости";   не равно. То добавляем  новость.
если равно. то просто ее пропускаем  

Это сообщение отредактировал(а) andreyka - 5.10.2008, 15:00
PM MAIL   Вверх
Sunvas
Дата 5.10.2008, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 2
Всего: 89



Можно просто назначить полю title индекс unique. А можно еще почитать тут: http://forum.vingrad.ru/forum/topic-230774.html


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
andreyka
Дата 5.10.2008, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 4.11.2006

Репутация: нет
Всего: нет



Цитата(Sunvas @ 5.10.2008,  15:28)
Можно просто назначить полю title индекс unique. А можно еще почитать тут: http://forum.vingrad.ru/forum/topic-230774.html

Благодарю вас за овет.  

insert ... on duplicate key update
А не обновляя запись просто пропустить возможно. Если не сложно пример
покажите пожалуйста

Так как стоит задача. Проверить последние  записи за  день  по полю  title и  если
запись есть то просто пропустить ее и все. Если  ее нет тогда  добавить.

если сделать так 
Код

$query =
"INSERT INTO $userstable  VALUES ('', 4, 1223214780, 0, 0, '', '$title', '$textshort', '$textmore', '', '', '', '', '', 'right', '', '', 0, 'yes', 'all', 0, 0)ON DUPLICATE KEY UPDATE title='$title'";

 не работает 

Это сообщение отредактировал(а) andreyka - 5.10.2008, 15:55
PM MAIL   Вверх
teroni
Дата 5.10.2008, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 15.5.2007
Где: Днепропетровск

Репутация: 3
Всего: 22



Можно сделать поле title уникальным и вставлять данные с помощью
Код

INSERT IGNORE `table` (`title`, `pole2`, ....) VALUES('value1', 'value2', ....)

Тогда если запись с таким title уже есть в базе - то она просто не вставится второй раз.
Если же надо учитывать еще и дату - то тут сложнее.
Есть 2 варианта:
1) Делать 2 запроса... Первый
Код

SELECT * FROM `table` WHERE `title`='$title' AND `date` > ADDDATE(NOW(), INTERVAL 1 DAY)

Если ничего не найдено - то добавлять новость.
2) Сделать уникальное поле `unik` в которое вставлять некоторую функцию от даты и названия новости.
Например $unik = md5($title . date("d.m.Y"));
Делать 1 запрос с INSERT IGNORE:
Код

INSERT IGNORE `table` (`title`, `pole2`, ...., `unik`) VALUES('value1', 'value2', ...., '$unik')


PM MAIL   Вверх
andreyka
Дата 5.10.2008, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 4.11.2006

Репутация: нет
Всего: нет



Цитата(Sunvas @ 5.10.2008,  15:28)
Можно просто назначить полю title индекс unique. А можно еще почитать тут: http://forum.vingrad.ru/forum/topic-230774.html

  UNIQUE  добавил теперь надо добавить  поле  date 
и  делать чтоб  датабыла  не меньше одного дня
или 24 часов.
Как проще  это сделать?
Спасибо всем за помощь.


PM MAIL   Вверх
Sunvas
Дата 5.10.2008, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 2
Всего: 89



Цитата(teroni @  5.10.2008,  15:54 Найти цитируемый пост)
Например $unik = md5($title . date("d.m.Y"));

Для таких случаев рекомендую использовать crc32 т.е. мускулу проще сравнить число, чем 32значную строку.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0499 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.