|
|
|
| Привет. Проблема такая. Нужно генерировать числа(человек их может видеть), но как только он нажмёт на это число, то оно добавлялось в бд на срок, допустим, 10 минут, а после этого чтобы запись сама удалялась. Как это реализовать? Заранее спасибо.
p.s. Может быть это будет являться тонкостью - сгенерированное число видно в ссылке(и отправляется именно туда), на которую нужно жать. | |
|
|
|
|
|
|
|
для: slonik
(13.10.2006 в 01:41)
| | Я вот не пойму, почему мои темы остаются без внимания? Я задаю слишком глупые вопросы, или они наоборот неподъёмные? Или всем просто лень помогать? | |
|
|
|
|
|
|
|
для: 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) Цель этого скрипта отвечающим не известна, неопределённых факторов очень много, писать кода и пояснений потребуется много, а в результате решение с большой долей вероятности вам не подойдёт - поэтому тот кто отвечат просто потеряет время. Отсюда и малое количество отвечающих. Чтобы получить больше ответов, лучше разбить задачу на отдельные блоки, на каждый из которых можно с лёгкостью получить ответ, а потом собрать их в единое целое. Чем больший объём кода и текста требуется для ответа - тем меньше желающих будет отвечать, так как все тоже заняты делом и не могут посвятить одному ответу несколько часов, а по несколько минут уделить каждый может. | |
|
|
|
|
|
|
|
для: cheops
(13.10.2006 в 12:57)
| | Просто пытался скомпонавать,ч тоыб много времени на чтение не тратили..думал, что задача всем вполне известна..
Генерировать числа я умею. Вот есть страница, на ней отображается ссылка. Эта страница состоит из кода, который генерирует числа. Я это число переменной передаю в ссылку. Тоесть человек обновляет страницу и у него генерируется новая ссылка(не файла, а на самой странице отображается)... Хоть 1000 раз обновит, ничего не должно произойти, кроме как видимое изменение ссылки.
Но как только человек нажмёт на эту ссылку, то должно произойти добавление этого сгенерированного числа в бд. Можно в этом добавлении ссылки, добавить что-то такое, чтобы потом было понятно, что удалить запсись нужно через 10 минут. Версия mysql 3 с чем-то.. а cron не хотелось бы использовать, т.к. хостеры могут не поддерживать.. и вся идея к чёрту. | |
|
|
|
|
|
|
|
для: 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 каждый раз, когда в базу данных помещается новая запись или посетитель обновляет страницу. | |
|
|
|
|
|
|
|
для: cheops
(13.10.2006 в 13:46)
| | Спасибо, сейчас буду пробовать. | |
|
|
|
|
|
|
|
для: slonik
(13.10.2006 в 13:55)
| | cheops, чё то бред какой-то с этим INTERVAL'ом.
Удаляться - удаляется, но нипойми как..никакой логики..
Где можно найти инфу про эту функцию, а то чё то не видать её нигде :(
Вычитал на форуме, что поле с датой и временем должно быть либо DATE, либо TIMESTAMP, либо DATETIME. Но чё-то не удаётся записать данные..Одни нули получаются.. | |
|
|
|
|
|
|
|
для: slonik
(15.10.2006 в 02:44)
| | Да поле должно быть календарным, текстовое поле не подойдёт. Вы каким запросом вставляете запись? Для добавления текущей даты удобно воспользоваться встроенной функцией NOW(). | |
|
|
|
|
|
|
|
для: cheops
(15.10.2006 в 13:18)
| | Добавляю так:
$date = date("Y.m.d H:i:s");
|
Но если там не текстовое поле, то нифига не добавляется :(
Можешь показать краткий пример, как добавить праивльно и чтобы удалялось праивльно.. а то у меня удаляется, в независимости от интервала.. Удаляю - обновлением страницы. | |
|
|
|
|
|
|
|
для: slonik
(15.10.2006 в 13:42)
| | Как у вас выглядит SQL-запрос? Должен выглядеть примерно так
INSERT INTO tbl VALUES(NULL, $random, NOW())
|
| |
|
|
|
|
|
|
|
для: cheops
(15.10.2006 в 19:36)
| | У меня выглядит так:
INSERT into table VALUES('$random', '$time')
|
| |
|
|
|
|
|
|
|
для: slonik
(15.10.2006 в 20:53)
| | Измените его следующим образом
INSERT into table VALUES('$random', NOW())
|
| |
|
|
|
|
|
|
|
для: cheops
(15.10.2006 в 21:16)
| | Всё! Огромное спасибо. Знал, что это легко, но у меня не получалось - и меня это убивало. Ещё раз спасибо, оч помог! | |
|
|
|