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

C++ JAVA
3AKOHA
Нов
Нов
Posts: 21
Joined: Sat Sep 15, 2012 9:28 am

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

Post by 3AKOHA » Tue Sep 25, 2012 4:26 pm

Здавейте,
Бихте ли ми помогнали, каво е нужно да се промени за да се изтрива автоматично всеки запис в базата данни след пет дни.
Ето 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 "";
?>[/php]

Благодаря за помоща!

Radko
Потребител
Потребител
Posts: 651
Joined: Mon Jun 18, 2007 2:22 pm
Answers: 87
Location: София

Post by Radko » Tue Sep 25, 2012 7:03 pm

Използвай Cron jobs.

User avatar
eros
Потребител
Потребител
Posts: 760
Joined: Fri Jun 26, 2009 11:34 am
Contact:

Post by eros » Tue Sep 25, 2012 10:06 pm

http://web-tourist.net/forum/viewtopic.php?t=115407

Който търси намира :oops:

3AKOHA
Нов
Нов
Posts: 21
Joined: Sat Sep 15, 2012 9:28 am

Post by 3AKOHA » Wed Sep 26, 2012 2:10 pm

Съжалявам но не ми е ясно.

Radko
Потребител
Потребител
Posts: 651
Joined: Mon Jun 18, 2007 2:22 pm
Answers: 87
Location: София

Post by Radko » Wed Sep 26, 2012 2:17 pm

Кое по-точно? Обясни конкретно, за да ти обясним ние...

3AKOHA
Нов
Нов
Posts: 21
Joined: Sat Sep 15, 2012 9:28 am

Post by 3AKOHA » Wed Sep 26, 2012 4:30 pm

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

Radko
Потребител
Потребител
Posts: 651
Joined: Mon Jun 18, 2007 2:22 pm
Answers: 87
Location: София

Post by Radko » Wed Sep 26, 2012 6:44 pm

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

С крон джобс просто задаваш през колко време да ти стартира тоя файл.
Last edited by Radko on Fri Sep 28, 2012 3:31 am, edited 1 time in total.

3AKOHA
Нов
Нов
Posts: 21
Joined: Sat Sep 15, 2012 9:28 am

Post by 3AKOHA » Wed Sep 26, 2012 8:38 pm

Според вас как би изглеждал файла след обхождащия код и след разликата от датите между сегашната дата и датата на добавяне е 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]

Radko
Потребител
Потребител
Posts: 651
Joined: Mon Jun 18, 2007 2:22 pm
Answers: 87
Location: София

Post by Radko » Thu Sep 27, 2012 3:38 am

Ама чакай сега, на готово ли искаш да ти го направим?

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

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

[sql]DELETE * FROM `tablicata` WHERE (DATE(NOW()) - DATE(dobavqne)) > 5[/sql]

3AKOHA
Нов
Нов
Posts: 21
Joined: Sat Sep 15, 2012 9:28 am

Post by 3AKOHA » Thu Sep 27, 2012 4:17 pm

Не намирам ясна помощ отностно молбата ми.
ОК направих колона в базата данни
[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 />"; }
}
}
}
?>[/php]
Благодаря!

Post Reply