Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Временное добавление сгенерированного числа
 
 автор: slonik   (13.10.2006 в 01:41)   письмо автору
 
 

Привет. Проблема такая. Нужно генерировать числа(человек их может видеть), но как только он нажмёт на это число, то оно добавлялось в бд на срок, допустим, 10 минут, а после этого чтобы запись сама удалялась. Как это реализовать? Заранее спасибо.

p.s. Может быть это будет являться тонкостью - сгенерированное число видно в ссылке(и отправляется именно туда), на которую нужно жать.

   
 
 автор: slonik   (13.10.2006 в 12:12)   письмо автору
 
   для: slonik   (13.10.2006 в 01:41)
 

Я вот не пойму, почему мои темы остаются без внимания? Я задаю слишком глупые вопросы, или они наоборот неподъёмные? Или всем просто лень помогать?

   
 
 автор: cheops   (13.10.2006 в 12:57)   письмо автору
 
   для: slonik   (13.10.2006 в 12:12)
 

Непонятно просто, вы формулирует задачу, которая состоит из нескольких блоков:
1) Генерации случайного числа (это осуществляется при помощи функции rand() http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1675).
2) Добавления этого числа в базу данных при помощи оператора INSERT, однако ни структура, ни имя вашей таблицы не известны, здесь можно очень здорово ошибиться.
3) Удаление записи производится либо при помощи встроенного планировщика заданий MySQL, если у вас MySQL версии 5.1, либо при помощи cron, если он доступен. Если он не доступен нужно привязываться к какому-нибудь событию.
4) Цель этого скрипта отвечающим не известна, неопределённых факторов очень много, писать кода и пояснений потребуется много, а в результате решение с большой долей вероятности вам не подойдёт - поэтому тот кто отвечат просто потеряет время. Отсюда и малое количество отвечающих. Чтобы получить больше ответов, лучше разбить задачу на отдельные блоки, на каждый из которых можно с лёгкостью получить ответ, а потом собрать их в единое целое. Чем больший объём кода и текста требуется для ответа - тем меньше желающих будет отвечать, так как все тоже заняты делом и не могут посвятить одному ответу несколько часов, а по несколько минут уделить каждый может.

   
 
 автор: slonik   (13.10.2006 в 13:38)   письмо автору
 
   для: cheops   (13.10.2006 в 12:57)
 

Просто пытался скомпонавать,ч тоыб много времени на чтение не тратили..думал, что задача всем вполне известна..

Генерировать числа я умею. Вот есть страница, на ней отображается ссылка. Эта страница состоит из кода, который генерирует числа. Я это число переменной передаю в ссылку. Тоесть человек обновляет страницу и у него генерируется новая ссылка(не файла, а на самой странице отображается)... Хоть 1000 раз обновит, ничего не должно произойти, кроме как видимое изменение ссылки.
Но как только человек нажмёт на эту ссылку, то должно произойти добавление этого сгенерированного числа в бд. Можно в этом добавлении ссылки, добавить что-то такое, чтобы потом было понятно, что удалить запсись нужно через 10 минут. Версия mysql 3 с чем-то.. а cron не хотелось бы использовать, т.к. хостеры могут не поддерживать.. и вся идея к чёрту.

   
 
 автор: cheops   (13.10.2006 в 13:46)   письмо автору
 
   для: slonik   (13.10.2006 в 13:38)
 

Однозначно вместе с числом в базу данных должна ложиться дата добавления записи
INSERT INTO tbl VALUES(NULL, $random, NOW())

Функция NOW() - помещает в поле типа DATETIME (пусть оно называется putdate) текущую дату вплоть до секунд.

Удалить устаревшие записи можно при помощи запроса
DELETE FROM tbl WHERE putdate < NOW() - INTERVAL 10 MINUTE

К сожалению, MySQL версии 3, 4 и 5.0 не поддерживает планировщик заданий, только MySQL версии 5.1 и то там сейчас с ним чехорда, в каждой версии что-то меняется. Можно ориентироваться не на cron и планировщик, а на запросы, т.е. выполнять запрос DELETE каждый раз, когда в базу данных помещается новая запись или посетитель обновляет страницу.

   
 
 автор: slonik   (13.10.2006 в 13:55)   письмо автору
 
   для: cheops   (13.10.2006 в 13:46)
 

Спасибо, сейчас буду пробовать.

   
 
 автор: slonik   (15.10.2006 в 02:44)   письмо автору
 
   для: slonik   (13.10.2006 в 13:55)
 

cheops, чё то бред какой-то с этим INTERVAL'ом.

Удаляться - удаляется, но нипойми как..никакой логики..
Где можно найти инфу про эту функцию, а то чё то не видать её нигде :(

Вычитал на форуме, что поле с датой и временем должно быть либо DATE, либо TIMESTAMP, либо DATETIME. Но чё-то не удаётся записать данные..Одни нули получаются..

   
 
 автор: cheops   (15.10.2006 в 13:18)   письмо автору
 
   для: slonik   (15.10.2006 в 02:44)
 

Да поле должно быть календарным, текстовое поле не подойдёт. Вы каким запросом вставляете запись? Для добавления текущей даты удобно воспользоваться встроенной функцией NOW().

   
 
 автор: slonik   (15.10.2006 в 13:42)   письмо автору
 
   для: cheops   (15.10.2006 в 13:18)
 

Добавляю так:

$date = date("Y.m.d H:i:s");


Но если там не текстовое поле, то нифига не добавляется :(

Можешь показать краткий пример, как добавить праивльно и чтобы удалялось праивльно.. а то у меня удаляется, в независимости от интервала.. Удаляю - обновлением страницы.

   
 
 автор: cheops   (15.10.2006 в 19:36)   письмо автору
 
   для: slonik   (15.10.2006 в 13:42)
 

Как у вас выглядит SQL-запрос? Должен выглядеть примерно так
INSERT INTO tbl VALUES(NULL, $random, NOW())

   
 
 автор: slonik   (15.10.2006 в 20:53)   письмо автору
 
   для: cheops   (15.10.2006 в 19:36)
 

У меня выглядит так:

INSERT into table VALUES('$random', '$time')

   
 
 автор: cheops   (15.10.2006 в 21:16)   письмо автору
 
   для: slonik   (15.10.2006 в 20:53)
 

Измените его следующим образом
INSERT into table VALUES('$random', NOW())

   
 
 автор: slonik   (15.10.2006 в 21:53)   письмо автору
 
   для: cheops   (15.10.2006 в 21:16)
 

Всё! Огромное спасибо. Знал, что это легко, но у меня не получалось - и меня это убивало. Ещё раз спасибо, оч помог!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования