Witam ponownie.
Czy da radę zrobić tak, aby wpis usuwany był z bazy automatycznie o określonej dacie? Gdy jednym z rekordów jest data na podstawie której wpis był by usuwany?
Witam ponownie.
Czy da radę zrobić tak, aby wpis usuwany był z bazy automatycznie o określonej dacie? Gdy jednym z rekordów jest data na podstawie której wpis był by usuwany?
hhhmm…
A może bało by się zrobić, aby wpis był w bazie ale nie był wyświetlany gdy obecna data będzie równa lub większa od tej zapisanej w bazie?
ps. Format daty zapisanej w bazie jest taki- 01 sty 2007 00:00:00
Oczywiście;]
Pobierasz wszystkie dane z bazy, potem w pętli wszystkie je “przebierasz” i wyświetlasz tylko te, które mają odpowiednią datę (za pomocą warunku IF);
Powiedzmy, że nie do końca rozumiem;p
Ale jak w IF’ie porównać takie coś:
Datę nalezy przekształcić do formatu timestamp. W twoim przypadku będzie to trochę zawiłe, ale wszystko się da zrobić. Powinien działać ten kod, choć nie testowałem go, może wywalać jakiś błąd:
<?
include ("data.php");
$daty=explode(' ',$data);
$godziny=explode(':',$daty[3]);
if($daty[1]=='sty') $daty[1]=1;
else if($daty[1]=='lut') $daty[1]=2;
else if($daty[1]=='mar') $daty[1]=3;
else if($daty[1]=='kwi') $daty[1]=4;
else if($daty[1]=='maj') $daty[1]=5;
else if($daty[1]=='cze') $daty[1]=6;
else if($daty[1]=='lip') $daty[1]=7;
else if($daty[1]=='sie') $daty[1]=8;
else if($daty[1]=='wrz') $daty[1]=9;
else if($daty[1]=='paź') $daty[1]=10;
else if($daty[1]=='lis') $daty[1]=11;
else if($daty[1]=='gru') $daty[1]=12;
$timestamp=mktime($godziny[0],$godziny[1],$godziny[2],$daty[1],$daty[0],$daty[2]);
mysql_connect ("localhost", "xxxxx", "xxxxx") or
die ("Error!");
mysql_select_db ("xxxxx") or
die ("Error!");
$wynik = mysql_query ("SELECT * FROM wpisy ORDER BY `nr` DESC");
while ($wynik && $rekord = mysql_fetch_array ($wynik)) {
if ($rekord[kategoria] == "Antyki i Sztuka") {
if ($rekord['data_koniec'] > $timestamp) echo "Xxxxxxxxx";
}
}
?>
include ("data.php");
kutar: podaj jeszcze zawartość pliku data.php
buahahahaha, a skąd ja mam go znać?! To chyba nie do mnie powinno być pytanie;p LOL
Swoją drogą to nic mi (nam) po tym kodzie data.php. Nie wiem po co kubar3k to chciał… Działa Ci ten mój kodzik?
Generalnie działa ale musiałem zmienić “<” na “>” w tym if’ie"
// edit
chyba jednak nie działa;p
// edit
Gdy jest “<” to nie wyswietla się nic, nawet jak $rekord[data_koniec] jest mniejsza. Przy “>” wyświetla się wszystko…
Powiedz w jakim formacie przechowujesz datę w bazie (czyli zmienna $rekord[‘data_koniec’] ) i w zmiennej $data
d n Y H:i:s
Przy czym “n” zamienione jest na język polski.
Zauważyłem, że datę aktualną generujesz w w pliku data.php i masz ją w zmiennej $data. I od razu w tej zmiennej można przecież dać timestamp. Bo w ten sposób jedziemy do Zakopanego przez Gdańsk… A mój błąd bo nie skojarzyłem że w bazie masz tą datę “po polsku”. OK, poprawiam kod:
<?
$data=time();
mysql_connect ("localhost", "xxxxx", "xxxxx") or
die ("Error!");
mysql_select_db ("xxxxx") or
die ("Error!");
$wynik = mysql_query ("SELECT * FROM wpisy ORDER BY `nr` DESC");
while ($wynik && $rekord = mysql_fetch_array ($wynik)) {
if ($rekord[kategoria] == "Antyki i Sztuka") {
$daty=explode(' ',$rekord['data_koniec']);
$godziny=explode(':',$daty[3]);
if($daty[1]=='sty') $daty[1]=1;
else if($daty[1]=='lut') $daty[1]=2;
else if($daty[1]=='mar') $daty[1]=3;
else if($daty[1]=='kwi') $daty[1]=4;
else if($daty[1]=='maj') $daty[1]=5;
else if($daty[1]=='cze') $daty[1]=6;
else if($daty[1]=='lip') $daty[1]=7;
else if($daty[1]=='sie') $daty[1]=8;
else if($daty[1]=='wrz') $daty[1]=9;
else if($daty[1]=='paź') $daty[1]=10;
else if($daty[1]=='lis') $daty[1]=11;
else if($daty[1]=='gru') $daty[1]=12;
$timestamp=mktime($godziny[0],$godziny[1],$godziny[2],$daty[1],$daty[0],$daty[2]);
if ($timestamp < $data) echo "Xxxxxxxxx";
}
}
?>
I wtedy niepotrzebny jest już plik data.php . Jak się nigdzie nie pomyliłem znowu to powinno działać;]
Dzięki! kutar :mrgreen:
Po wstępnych testach działa bez zarzutu.
Złączono Posta : 08.01.2007 (Pon) 20:50
Myślę, że dało by się zrobić coś takiego:
AA, czyli rozumiem, że jeśli data jest nieodpowiednia to ma usunąć wpis z bazy. Ale tu jest jedno “ale”. Dopóki skrypt ten (usuwanie) nie zostanie odpalony, to w bazie będą cały czas te nieaktualne dane. Nie wiem czy to będzie przeszkadzać Ci, ale w razie co zwracam uwagę.
i jeszcze jedno, popraw tutaj:
else mysql_query ("DELETE FROM wpisy WHERE `data_koniec` = '$rekord[data_koniec]'");