timestamp проверка

scinetic

Registered
Здравейте, вече пусках такава тема, но по-късно след като ми отговорихте ми стана ясно, че не съм довидял какво трябва да направя.

Имам timestamp колонка с date_expire

Аз искам да сложа скрипт на всяка страница на сайта, така че когато някой потребител(независимо дали е регнат или т.н.), дори и да е БОТ, когато презареди (изпрати се заявка някаква) тази страница, тя да праща проверка към базата данни за всичките timestamps, които са в нея и дали са изтекли и ако са изтекли да задава active 0. Благодаря предварително!
 
PHP:
<?php
$result = mysql_query("SELECT * FROM table") 
or die(mysql_error());  

while($row = mysql_fetch_array( $result )) {


$timeNow = time();

if($row['date_expire '] < $timeNow) {

echo "Запис с ID ".$row['id']." е изтекъл.";

}

} 
?>
 
Да, но искам вместо да ми казва, че е изтекъл да задава active 0 на колонката до него..
 
$result = mysql_query("SELECT * FROM subscribtions")
or die(mysql_error());
while($row = mysql_fetch_array( $result ))
{
$timeNow = time();
if($row['date_expire'] < $timeNow)
{
$sql = mysql_query("UPDATE `subscribtions` SET `active` = '1'") or die(mysql_error());
}
}

Сложих този код и ги слага всички на 0.. :X
 
Не съм го тествал, но мисля, че това искаш.
Код:
<?php
$result = mysql_query("SELECT * FROM table") 
or die(mysql_error());  

while($row = mysql_fetch_array( $result )) {


$timeNow = time();

if($row['date_expire '] < $timeNow) {

        $id= $row['id'];
	$update = mysql_query("UPDATE table SET active='0' WHERE id='$id'") or die('ерр!'); 
if (!$update) {
    die('Invalid query: ' . mysql_error());
}
else {
echo "ok.";

}


}

} 
?>
 
Запази следния код като bla.php
PHP:
<?php

error_reporting(0);
$link=mysql_connect('host','username','password') or exit;
mysql_query('UPDATE My_Table_Name
SET active=0
WHERE date_expire<CURRENT_TIMESTAMP',
$link);
mysql_close($link);
Сега може да го включиш във всички желани страници с:
PHP:
include 'bla.php';
:)
 
При горното, което windoll ми даде ми прави всичките 0...

koko5 каза:
Запази следния код като bla.php
PHP:
<?php

error_reporting(0);
$link=mysql_connect('host','username','password') or exit;
mysql_query('UPDATE My_Table_Name
SET active=0
WHERE date_expire<CURRENT_TIMESTAMP',
$link);
mysql_close($link);
Сега може да го включиш във всички желани страници с:
PHP:
include 'bla.php';
:)
А това, което ти ми даваш не прави това, което искам.. То не сравнява timestamp със сегашното време :|
 
Всъщност може да съм в грешка за кода на koko, но ми дава тази грешка
Access denied for user ''@'localhost' (using password: NO)
 
за да ъпдейтнеш само едно поле ти трябва отправна точка .
най-добре е по полето което е уникално .
така че това което Widoll ти даде - това е .
само полетата си орпави ако не са тези ..
 
Предлагам ти вместо time() да използваш date().
Примерно в базата данни записваш датата по този начин: date("Y-m-d"); и кода е следния:
Код:
 <?PHP

$date = date("Y-m-d");
	$update = mysql_query("UPDATE subscribtions SET active='0' WHERE date_expire<'$date'") or die('ерр!');
		if (!$update) {
		die('Invalid query: ' . mysql_error());
		}
		else {
		echo "ok.";
		}

?>
 
Да но аз вече го запазвам в timestamp и кода е написан.. Ако трябва да променям запазването трябва целия код да сменям..
 
scinetic каза:
Всъщност може да съм в грешка за кода на koko, но ми дава тази грешка
Access denied for user ''@'localhost' (using password: NO)
Не си сложил правилните host, user u password за mysql_connect -> трябва да ги замениш с твоите, опитай пак :)
п.п. Всъщност от грешката се вижда, че user-a ти е празен стринг,password също –using password: NO
 
Добре за да не стават проблеми направих само отделен php файл и него отварям. Отварям го и не променя нищо в таблицата.. Направих една изтекла услуга на active 1, отворих скрипта, но не ми я направи на 0, а е минало времето.. ;X :cry:

ПП: В кода не трябва ли някъде да селектирам база данни :?
 
scinetic каза:
ПП: В кода не трябва ли някъде да селектирам база данни :?
Трябва, но преди това още при свързването ти дава грешка.
 
Грешката със свързването я оправих, сега трябва да селектирам база данни за да стане работата..
 
scinetic каза:
Грешката със свързването я оправих, сега трябва да селектирам база данни за да стане работата..
Може да пробваш без mysql_select_db() .Опитай:

PHP:
mysql_query('UPDATE Име_На_Базата_Данни.Име_На_Таблицата
SET active=0
WHERE date_expire<CURRENT_TIMESTAMP',
 
scinetic каза:
Направи ми ги всичките на active 0 :X :X :X
Дай скрипта ( CREATE TABLE ...) и малко данни за тест-т.е. дай dump. Вчера, когато писах, го тествах и работи...
 

Back
Горе