Изтриване на запис след определено време

3AKOHA

Registered
Здавейте,
Бихте ли ми помогнали, каво е нужно да се промени за да се изтрива автоматично всеки запис в базата данни след пет дни.
Ето mysql

[sql]CREATE TABLE IF NOT EXISTS `servers` (
`id` bigint(255) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`ip` varchar(255) NOT NULL,
`port` text NOT NULL,
`cheat` text NOT NULL,
`type` text NOT NULL,
`author` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=6 ;[/sql]

PHP:
<?php 
//server connfigure 
$server = "localhost"; 
$dbusername = "name"; 
$dbpassword = "pass"; 
$db_name = "db"; 
$table_name = "servers"; 
//server connfigure 
//колко резултата на страница 
$pp = "10"; 
//колко резултата на страница 

$page=$_GET['page']; //присвояваме стойността на page 

if(!$_GET['page']) //ако не е взета page да върне 1-ца 
{ 
$page="1"; 
} 

$limit = ($pp*$page)-$pp; //определяме лимитирането 

mysql_connect($server, $dbusername, $dbpassword)or die("1111"); 
@mysql_select_db($db_name) or die("2222"); 
$redove=mysql_query("SELECT * FROM $table_name"); 

$max=mysql_numrows($redove); //преброяваме редовете 
$total=ceil($max/$pp); //пресмятаме броя на страниците 

mysql_connect($server, $dbusername, $dbpassword)or die("3333"); 
@mysql_select_db($db_name) or die("4444"); 
$query="SELECT * FROM $table_name ORDER BY `id` DESC LIMIT $limit,$pp"; 
$result=mysql_query($query); 

$num=mysql_numrows($result); 

mysql_close(); 

$i=0; 
while($row = mysql_fetch_array($result)) { 
$id = $row['id']; 
$name = $row['name']; 
$ip = $row['ip']; 
$port = $row['port']; 
$cheat = $row['cheat']; 
$type = $row['type']; 
$author = $row['author']; 

echo "<div id='hoverman'><table width='100%'border='0'> 
<tr> 
<td width='350px'><b>$name</b><br /><font color='black'>$ip:</font><font color='black'>$port</font></td>
<td width='125px'><font color='black'>$type</font></td>
<td width='75px'><a href='info_servers.php?id=$id'>Информация</a></td>
</tr> 
</table><center></div>"; 

$i++; 
} 

echo ""; 
?>

Благодаря за помоща!
 
Ако, направя това с Cron jobs как трябва да изглежда php кода, който трябва да въведа в тоя файл delete и в базата данни нужно ли е да се променя нещо.
Искам да кажа че това което изпълнява кода, който съм дал е за каталог на сървъри и просто искам всеки сървър след адването му да се вижда в списъка 5 дена след което да се трие информацията за него.
 
Ами няма нищо сложно, просто си правиш един нов файл. В него обхождаш съответната таблица (предполагам имаш колона в таблицата, в която отбелязваш датата на добавяне на съответния елемент), след което триеш всички чиято разлика от датите между сегашната дата и датата на добавяне е 5 дена.

С крон джобс просто задаваш през колко време да ти стартира тоя файл.
 
Според вас как би изглеждал файла след обхождащия код и след разликата от датите между сегашната дата и датата на добавяне е 5 дена. Ето mysql
[sql]CREATE TABLE IF NOT EXISTS `servers` (

`id` bigint(255) NOT NULL AUTO_INCREMENT,

`name` varchar(255) NOT NULL,

`ip` varchar(255) NOT NULL,

`port` text NOT NULL,

`cheat` text NOT NULL,

`type` text NOT NULL,

`author` text NOT NULL,

PRIMARY KEY (`id`),

UNIQUE KEY `id` (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=6 ;
[/sql]
 
Ама чакай сега, на готово ли искаш да ти го направим?

Първо си добави колона, в която ще записваш датата на добавяне, защото като сега гледам нямаш такава, как ще разбираш кога е добавена? Полето да е от типа DATE.

После просто си правиш една семпла заявка в която сравняваш времето, както ти казах по - горе...

[sql]DELETE * FROM `tablicata` WHERE (DATE(NOW()) - DATE(dobavqne)) > 5[/sql]
 
Не намирам ясна помощ отностно молбата ми.
ОК направих колона в базата данни
[sql] `time` date NOT NULL,[/sql]
Къде да вкарам този код който ми даде:
[sql]DELETE * FROM `tablicata` WHERE (DATE(NOW()) - DATE(dobavqne)) > 5[/sql]
Казвате ми да направя една семпла заявка в която да сравнявам времето.
Не разбирам какво друго да има към този код дето ми го даде горе и къде да го поставя дали в отделен файл или в формата за аддване на сървъри.
ще прикача и формата с цел да ми помогнете още малко.
PHP:
<?php 
@session_start(); 
if (!isset($_SESSION['dostap'])) { 
}
?> <font color="black"><b>
<div id="addserver1"><form method="post" action=""> 
Име (name)<br /><input name="name" type="text" size="30" /><br /> 
Ип (ip-address)<br /><input name="ip" type="text" size="30" /><br /> 
Порт (port)<br /><input name="port" type="text" size="30" /><br> 


Вид (type)<br /> 

<select name="type"> 
<option value="" selected="selected">Choose</option> 
      <option value="Classic">Classic</option> 
      <option value="Hide N Seek">Hide N Seek</option> 
      <option value="Kreedz">Kreedz</option> 
                <option value="Warcraft 3 / FT">Warcraft 3 / FT</option> 
      <option value="Zombie">Zombie</option> 
      <option value="Deathmatch">Deathmatch</option> 
      <option value="Cups">Cups</option> 
      <option value="5on5">5on5</option> 
      <option value="Massive">Massive</option> 
                <option value="Aim">Aim</option> 
      <option value="SuperHero">SuperHero</option> 
      <option value="GunGame">GunGame</option> 
      <option value="Deathrun">Deathrun</option> 
      <option value="PaintBall">PaintBall</option> 
      <option value="Respawn">Respawn</option> 
	   <option value="Base Builder">Base Builder</option> 
	    <option value="Jail Break">Jail Break</option> 
		 <option value="Other">Other</option> 
  
   </select><br> 

Автор (author)<br /><input name="author" type="text" size="30" /> 
<br /><br /> 
<input name="submit" type="submit" value="Добави" /> 
</form></div></font></b>
<?php 
include("config.php"); 
if($_POST['submit']) 
{ 
$name = htmlspecialchars(addslashes($_POST['name'])); 
$ip = htmlspecialchars(addslashes($_POST['ip'])); 
$port = htmlspecialchars(addslashes($_POST['port'])); 
$cheat = htmlspecialchars(addslashes($_POST['cheat'])); 
$type = htmlspecialchars(addslashes($_POST['type'])); 
$author = htmlspecialchars(addslashes($_POST['author'])); 
if(empty($name) || empty($ip) || empty($port)) 
{ 
echo '<br /><hr />Не сте попълни ли правилно полетата за <b>Името</b>, <b>Ип-адреса</b> или <b>Порта</b> на сървъра, който искате да добавите! Моля, редактирайте грешката си.<hr />'; 
} 
else 
{ 
$exist_query = mysql_query("SELECT `id` FROM `servers` where `ip` = '$ip' and `port` = '$port'");
$does_exist = mysql_num_rows($exist_query);

if($does_exist > 0)
{
echo '<br /><hr />Вече съществува, такъв сървъра в каталог! <hr />';
}
else
{

$sql = mysql_query("INSERT into `servers` (`id`,`name`,`ip`,`port`,`cheat`,`type`,`author`) VALUES ('','$name','$ip','$port','$cheat','$type','$author')") or die(mysql_error()); 
if($sql) { echo " <br /><hr />Сървърът е успешно добавен! Благодарим ви че добавихте своя сървър.</b><hr />"; } 
} 
} 
}
?>
Благодаря!
 
Вкарай го веднага след като се свържеш към ДБ.


include("config.php");



$sql = "DELETE FROM `servers` WHERE (DATE(NOW()) - DATE(time)) > 5";

$q = mysql_query($sql) or die(mysql_error());







if($_POST['submit'])
{


-----------------------

Не е най-доброто решение, но ще свърши работа.
 
Е това се получи:
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 '* FROM `servers` WHERE (DATE(NOW()) - DATE(time)) > 5' at line 1
 
madmax3_ каза:
Вкарай го веднага след като се свържеш към ДБ.


include("config.php");



$sql = "DELETE FROM `servers` WHERE (DATE(NOW()) - DATE(time)) > 5";

$q = mysql_query($sql) or die(mysql_error());







if($_POST['submit'])
{


-----------------------

Не е най-доброто решение, но ще свърши работа.
 

Горе