Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kasowanie po pewnym czasie
Forum PHP.pl > Forum > PHP
tumeks
Witam!
Mam pytanie jak zrobic żeby dane ktore wysyłamam do mysql zostawały usuwane po 2 minutach gdzie usuwa te dane ktore sa przypisane z danego adresu IP, acha i ejsszce w mysql czy musze dać timestamp czy varchar??

Npsiałęm taki kod ale nie działa:(
[php:1:6f31040dd7]<?php
$ip = $REMOTE_ADDR;
$klik = mysql_query("INSERT INTO klik VALUES ('".$ip."', '')");

// pole czas_aktywnosci to te wczesniejsze time()+120
mysql_query("delete from klik where czas < ".time()+120);
?>[/php:1:6f31040dd7]

Pozdrawiam
Tomek
djpeterek
sproboj tak[php:1:347e0ff8e7]mysql_query("DELETE FROM klik WHERE czas<'".(time()-120)."'");[/php:1:347e0ff8e7]i jeszcze drobna uwaga przy usuwaniu rekordow ma byc - a nie plus bo on ma sobie odejmowac czas i go porownac a nie dodac do niego
party
W MySQL wartości liczbowych nie pisze się w ''...

Cytat
czy musze dać timestamp czy varchar??

Daj int(10) a wypełniaj w ten sposób:
[php:1:b431fee825]<?php
mysql_query( 'INSERT INTO klik VALUES('tutaj_ip', UNIX_TIMESTAMP())' );
?>[/php:1:b431fee825]
A usuwaj w ten sposób:
[php:1:b431fee825]<?php
mysql_query( 'DELETE FROM klik WHERE czas < '. time() + 120 .' AND ip = '. $_SERVER['REMOTE_ADDR'] .'' );
?>[/php:1:b431fee825]
djpeterek
partyzant a czemu on ma sprawdzac po IP skoro usuwa po pewnym czasie questionmark.gif
tumeks
No partyzant nic sie nie usuwa z mysql sad.gif w mysql pisze cos takiego
192.168.1.2 1085233007
192.168.1.2 1085232972
192.168.1.2 1085232971 itp. smile.gif
i po 2 minutach nic nie usuwa :/
Ludvik
[sql:1:0fa32fbea1]...WHERE czas < '. time() + 120 .'...[/sql:1:0fa32fbea1]

Hmm...ja tu czegoś nie rozumiem. Ten warunek chyba jest prawdziwy w momencie dodania wpisu... Np. dodajesz wpis o czasie powiedzmy 1000 (żeby było prosciej). I w momencie dodania masz taką sytuację:
1000 < 1000+120. Jak dla mnie to powinno być czas < time() - 120. Wtedy po dwóch minutach warunek jest nieprawdziwy:
1000 < 1120 - 120, bo 1000 = 1120 - 120. A dlaczego nie znika? Przy tym warunku powinno wszystko działać. Jak chcesz sprawdzić czy usuwa, najlepiej usuń (weź ją w komentarz) na chwilę linię dodającą wpis.
tumeks
no patrz mam taki kod:
[php:1:ba24927a01]<?php
$dburl = "localhost";
$dblogin = "login";
$dbpasswd= "haslo";
$dbname = "nazwa";

mySQL_connect($dburl, $dblogin, $dbpasswd);
mySQL_select_db($dbname);

$strona = $_GET['strona'];
echo "1 punkt zaliczony dla $strona <br><br>";
$ip = $REMOTE_ADDR;
mysql_query( 'INSERT INTO klik VALUES("'.$ip.'", UNIX_TIMESTAMP())' );

mysql_query( 'DELETE FROM klik WHERE czas < '. time() - 120 .' AND ip = '. $_SERVER['REMOTE_ADDR'] .'' );



echo "Strony bior&sup1;ce udzia&sup3; w konkursie www:<br>";
$querykonkurswww = "select * from strony ORDER by ID DESC ";
$resultkonkurswww = mySQL_query($querykonkurswww);
while($rowkonkurswww = mysql_fetch_array($resultkonkurswww))
{
echo "<a href=".$rowkonkurswww['adres'].">".$rowkonkurswww['adres']."</a><br>";
}
?>[/php:1:ba24927a01]

No i jakoś nie działa ;/
party
Ludvik masz rację - powinien być '-'...

A co do skryptu to daj time() - 120 do zmiennej a potem w zapytaniu nazwe zmiennej...
tumeks
Nie działa(nic nie usuwa z mysql sad.gif) oto kod sad.gif

[php:1:cc61e9b0ac]<?php
$dburl = "localhost";
$dblogin = "";
$dbpasswd= "";
$dbname = "";

mySQL_connect($dburl, $dblogin, $dbpasswd);
mySQL_select_db($dbname);

$strona = $_GET['strona'];
echo "1 punkt zaliczony dla $strona <br><br>";
$ip = $REMOTE_ADDR;
mysql_query( 'INSERT INTO klik VALUES("'.$ip.'", UNIX_TIMESTAMP())' );


$konkurstime = time() - 120;
mysql_query( 'DELETE FROM klik WHERE czas < '. $konkurstime .' AND ip = '. $_SERVER['REMOTE_ADDR'] .'' );

echo "Strony bior&sup1;ce udzia&sup3; w konkursie www:<br>";
$querykonkurswww = "select * from strony ORDER by ID DESC ";
$resultkonkurswww = mySQL_query($querykonkurswww);
while($rowkonkurswww = mysql_fetch_array($resultkonkurswww))
{
echo "<a href=".$rowkonkurswww['adres'].">".$rowkonkurswww['adres']."</a><br>";
}
?>[/php:1:cc61e9b0ac]
pearl1985
[php:1:0de01a5b24]<?php
$dburl = "localhost";
$dblogin = "";
$dbpasswd= "";
$dbname = "";

mySQL_connect($dburl, $dblogin, $dbpasswd);
mySQL_select_db($dbname);

$strona = $_GET['strona'];
echo "1 punkt zaliczony dla $strona <br><br>";
// tytaj pole które masz jako czas zdefiniuj je na datetime i w pole default daj now ()
mysql_query("INSERT INTO klik (ip, czas) VALUES('$_SERVER[REMOTE_ADDR]', now() )");

// tutaj wyliczam czas w połączeniu komend mktime i date
$konkurstime = date ("Y-m-d H:i:s", mktime(date("H"), date("i")-2, date("s"), date("m"), date("d"), date("Y") ) );

mysql_query("DELETE FROM klik WHERE czas<'$konkurstime'");

echo "Strony bior&sup1;ce udzia&sup3; w konkursie www:<br>";
$querykonkurswww = "select * from strony ORDER by ID DESC ";
$resultkonkurswww = mySQL_query($querykonkurswww);
while($rowkonkurswww = mysql_fetch_array($resultkonkurswww))
{
echo "<a href=".$rowkonkurswww['adres'].">".$rowkonkurswww['adres']."</a><br>";
}
?>
[/php:1:0de01a5b24]

Pamiętaj tumeks o tym, że ten kod napisałem do bazy mysql która w twojej tabelce ma pole czas o typie datetime i defaultowo wpisane now()

Jeśli nie zadziała nadal to pisz do mnie na priv to Ci pomogę.
rze-X-nik
Propozycja: ustal odpowiedni timelimit i ignoreuserabort na 1 i sleepem manipuluj.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.