To tak, przy każdorazowym uruchomieniu skryptu do tabeli wprowadzana jest data obecna, gdy rekord jest nieaktualny to zwyczajnie zostaje stara data. Chciałbym usuwać takie rekordy w których data jest inna niż obecna, więc napisałem takie cudo:
$czas = http://www.php.net/date("H:i"); $sql = "SELECT aktualizacja FROM klan WHERE nick = '".$nick."';"; $result = $conn->query($sql); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { http://www.php.net/echo $row["aktualizacja"]; if($row["aktualizacja"] < $czas) { $sql = "DELETE FROM klan WHERE tag='$tag'"; $result = $conn->query($sql); if ($result->num_rows > 0) { http://www.php.net/echo "ok"; } } } } else { http://www.php.net/echo "0 results"; } }
A czemu nie kasujesz od razu po czasie?
Delete... where czas < now()
Mógłbyś rozwinąć? Bo zrozumiałem, to jako usuwanie odrazu po wprowadzeniu, więc raczej źle heh. Jeśli przed wprowadzeniem, to niestety odpada, bo mam skrypt podliczający inne części tabeli i bez danych z tabeli przed nie wyliczy mi obecnych. Więc ponowię prośbę, czy mógłbyś rozwinąć o co chodzi.
Wiem, że kiedyś jak zaczynałem, to nie formatowałem daty ("H:i" lub "Y-m-d") ale teraz gdy to usunałem to dostawałem błąd, że oczekiwali tego sformatowania.
Nie formatowałem daty, no i dostawałem tylko ciąg cyfr, więc to mogłbym porównać, o to mi chodziło.
Nie jestem wróżką. Jak nie opiszesz co robisz to skąd mam wiedzieć jak te dane wykorzystujesz i co tam za obliczenia są zawarte? Możesz jako trigger after insert jeśli oczywiście "wprowadzenie" to u ciebie oznacza.
$czas = http://www.php.net/date("H:i"); ... if($row["aktualizacja"] < $czas) ...
$dzis = http://www.php.net/date("Ymd"); $kontrola = http://www.php.net/str_replace(".","", row["aktualizacja"]); #usuwa kropkę lub kreskę między datami jeśli jest if ($kontrola < $dzis ) { delete; } else { ok; }
$dzis = http://www.php.net/date("Ymd"); $kontrola = http://www.php.net/str_replace(".","", row["aktualizacja"]); #usuwa kropkę lub kreskę między datami jeśli jest if ($kontrola < $dzis ) { delete; } else { ok; }
$sql = "SELECT aktualizacja FROM klan WHERE tag = '$tag'"; $result = $conn->query($sql); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { $dzis = http://www.php.net/date("Hi"); $kontrola = $row["aktualizacja"]; #usuwa kropkę lub kreskę między datami jeśli jest if ($kontrola === $dzis) { http://www.php.net/echo "ok"; } else { $dzis = http://www.php.net/date("H:i"); $sql = "INSERT INTO explayers (miejsce, liga, poziom, tag, nick , ranga, donated, received, roznica, puchary, aktualizacja, data, up) SELECT * FROM klan WHERE not aktualizacja = '$dzis'"; $result = $conn->query($sql); $sql = "DELETE FROM klan WHERE not aktualizacja = '$dzis'"; $result = $conn->query($sql); http://www.php.net/echo "kurwa mać"; } } } else { http://www.php.net/echo "0 results"; } }
Datę zapisuje w bazie jako timestamp i porównuj normalne liczby: usuwasz wszystko co mniejsze niż timestamp(now)
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)