Follow along with the video below to see how to install our site as a web app on your home screen.
Бележка: This feature may not be available in some browsers.
lamerko каза:В mysql имаш събития (events). В таблицата ти с обявите слагаш три полета - флаг за архивиране (не е добре да триеш данни - по-доброто решение е да ги маркираш като изтрити, но те да и стоят в базата), дата на публикуване и дата на валидност (според това колко дена ще е активна конкертната обява - 10, 30 или 120 дена). Създаваш ново събитие, зацикляш го да речем на един час и в тялото правиш един ъдейт на всички обяви, които датата им на валидност е изтекла към текущия момент, като им вдигаш архивния флаг за да не се показват повече.
Това май се получава. Мисля, че OLX-а работи точно на този принцип? Можеш да си архивираш обявата.. съответно по - късно да я ъпдейтнеш и да махнеш флага за архив, като и се задава и ново време на активност.Fakeheal каза:lamerko каза:....
Защо е по-добре да седят в базата данни?
Не се ли получават така зомби записи?
Fakeheal каза:lamerko каза:В mysql имаш събития (events). В таблицата ти с обявите слагаш три полета - флаг за архивиране (не е добре да триеш данни - по-доброто решение е да ги маркираш като изтрити, но те да и стоят в базата), дата на публикуване и дата на валидност (според това колко дена ще е активна конкертната обява - 10, 30 или 120 дена). Създаваш ново събитие, зацикляш го да речем на един час и в тялото правиш един ъдейт на всички обяви, които датата им на валидност е изтекла към текущия момент, като им вдигаш архивния флаг за да не се показват повече.
Защо е по-добре да седят в базата данни?
Не се ли получават така зомби записи?
<?php
include("conf.php");
if(isset($_POST['izprati'])){
$data = date("j/n/Y G:i:s");
$ime = $_POST['ime'];
$ime = htmlspecialchars($ime);
$ime = addslashes($ime);
$opisanie = $_POST['opisanie'];
$opisanie = htmlspecialchars($opisanie);
$valdata = $_POST['valdata'];
$valdata = htmlspecialchars($valdata);
$valdata = addslashes($valdata);
$sql = ("INSERT INTO obqvi(ime, opisanie, data, valdata) VALUES('$ime','$opisanie','$data', '$valdata' )");
if ($conn->query($sql) === TRUE) {
echo "добавена!";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
}
?>
CREATE TABLE `obqvi` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ime` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`opisanie` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`data` int(11) NOT NULL,
`valdata` int(11) NOT NULL,
PRIMARY KEY (`id`)
Не става дава ми това #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 7lamerko каза:Като за начало ползвай date/datetime тип за дати, а не int.
За самото събитие ти трябва нещо от рода (при положение, че нямаш флаг за триене и работиш с таймстамп):
[sql]CREATE EVENT `delete_ad` ON SCHEDULE
EVERY 10 MINUTE STARTS '2015-09-28 01:01:01'
ON COMPLETION PRESERVE
ENABLE
COMMENT ''
DO BEGIN
DELETE FROM `obqvi` WHERE UNIX_TIMESTAMP(NOW()) >= `valdata`;
END[/sql]
Ако имаш подчинени таблици без външен ключ - трябва и тях да обработиш в този случай...