Изпращане на съобщение като изтече дадено време

pro12

Registered
Искам като изтече зададеното време на новината да изпраща съобщение на потребителя които е гласувал последен за нея. Има две тяблици.
[sql]CREATE TABLE `news` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ime` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`opisanie` text COLLATE utf8_unicode_ci NOT NULL,
`data` datetime NOT NULL,
PRIMARY KEY (`id`)
)[/sql]

[sql]CREATE TABLE `vote` (
`newid` int(11) NOT NULL AUTO_INCREMENT,
`id` int(11) NOT NULL,
`username` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`point` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`datapoint` datetime NOT NULL,
PRIMARY KEY (`newid`)
) [/sql]

И примерно като скока на активност на някоя новина е до 21.11.2015 13:00 ще трябва да се провери кои ден е и колко е часа, и ако има съвпадение на дата и час да търси в vote дали е гласувано за нея. И ако е гласувано примерно на 20.11.2015 да изпраща съобщение. Кода ще се изпълнява с Cron Jobs и трябва да проверява всички новини. Надявам се да ми помогнете!
 
Това ми е заявката. Как ще стане автоматичнода се изпълнява при 1000+ ид та?
[sql]select news.id, da, vote.voteid, username, datas from news, vote
where news.id=1 AND DATE_FORMAT(da, '%Y-%m-%d H:i') = DATE_FORMAT(NOW(), '%Y-%m-%d H:i') [/sql]
 
pro12 каза:
Това ми е заявката. Как ще стане автоматичнода се изпълнява при 1000+ ид та?
[sql]select news.id, da, vote.voteid, username, datas from news, vote
where news.id=1 AND DATE_FORMAT(da, '%Y-%m-%d H:i') = DATE_FORMAT(NOW(), '%Y-%m-%d H:i') [/sql]


1. Малко ме съмнява заявката ти да работи
2. Каква точно ти е идеята с тази заявка и нейното автоматично изпълнение ?
 
Идеята ми е следната. Зададено е някакво време на всички новин които са в таблицата новини, и когато изтече зададеното време да изпраща съобщение на потребитела които е гласувал последен за дадена новина.
И да се изпълнява автоматично. Но не знам как трябва да стане!!
 
В таблицата vote в полето id се записва idто на новината за която даден потребител е гласувал.
 
pro12 каза:
В таблицата vote в полето id се записва idто на новината за която даден потребител е гласувал.

[sql]
select news.id, da, va.voteid, username, datas from news LEFT JOIN vote as va ON news.id = va.id
LEFT JOIN vote as vb on va.id = vb.id AND va.datapoint < vb.datapoint
where news.id=1 AND DATE_FORMAT(da, '%Y-%m-%d H:i') = DATE_FORMAT(NOW(), '%Y-%m-%d H:i') AND vb.datapoint IS NULL
[/sql]

Прегледай малко заявката, че дали не съм объркал някое поле и позлвай JOIN-ове
 
Заявката работи, но я промених малко за да може да се изпълнява автоматично от крона.
[sql]select news.id, da, va.voteid, username, datas from news LEFT JOIN vote as va ON news.id = va.id
LEFT JOIN vote as vb on va.id = vb.id AND va.datapoint < vb.datapoint
where DATE_FORMAT(da, '%Y-%m-%d H:i') = DATE_FORMAT(NOW(), '%Y-%m-%d H:i') AND vb.datapoint IS NULL
[/sql]
Имам проблем с изпращане на съобщенията това ми е кода.
PHP:
<?php
include("autolog.php");
?>
<?php
$data = date('Y-m-d H:i:s');
$tema = gggg;
$id = (int)$_GET['id'];
$sql  = "select news.id, da, va.voteid, username, datas from news LEFT JOIN vote as va ON news.id = va.id
LEFT JOIN vote as vb on va.id = vb.id AND va.datapoint < vb.datapoint 
where  DATE_FORMAT(da, '%Y-%m-%d H:i') = DATE_FORMAT(NOW(), '%Y-%m-%d H:i') AND vb.datapoint IS NULL


";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // outp
   while($row = $result->fetch_assoc()) {
 
echo  "</br>".$row['ime']."<br>";
echo  "</br>".$row['username']."<br>";
echo  "</br>".$row['datas']."<br>";



 }
} 

  

$sql = ("INSERT INTO message(do, tema, opisanie,  data) VALUES('$row[username]', '$tema', '$row[ime]', '$data'  )"); 
if ($conn->query($sql) === TRUE) {
    echo "добавена!";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
?>
Как трябва да го направя да изпраща съобщения на потребителите които последни са гласували за новините?
 
всички полета от votes ги селектвай с va.*
А и не разбрах много какъв ти е проблема

$sql = ("INSERT INTO message(do, tema, opisanie, data) VALUES('$row[username]', '$tema', '$row[ime]', '$data' )");

това не е валидно, няма как да съ обърнеш към $row[] извън while цикъла.
добави я в него
 

Back
Горе