Autor | Zpráva | ||
---|---|---|---|
sheep Profil * |
#1 · Zasláno: 6. 6. 2007, 11:31:26
Chtel jsem se zeptat jestli nekdo zna jak napsat script,nebo nastavit databazi aby kdyz pridam odkaz(zaznamenavam do databaze datum),po uplynuti treba 10 dnu se odkaz z databaze sam auto vymazal.Diky predem za odpoved.
|
||
kiflik Profil |
#2 · Zasláno: 6. 6. 2007, 12:33:57 · Upravil/a: kiflik
$konec = date("Y-m-d",mktime (0,0,0,date("m") ,date("d")-10,date("Y")));
$smazat = MySQL_Query("DELETE FROM xxxx WHERE datum>'$konec'"); a Cron nebo na začátek stránky nebo každý den kliknout |
||
sheep Profil * |
#3 · Zasláno: 6. 6. 2007, 14:24:53
Diky to je presne co potrebuji,jen jeste mala otazecka.Pres cron bzch to nedelal,je mi privetivejsi rovnou do stranky.Je nutny kliknout kazdy den?Pokud to budu mit umisteno jako prvni v pozici.A az po tomhle zasahu budu nacitat aktualni data,z databaze tak je jedno jestli kliknu az treti den.Je to tak?Protoze skript porovnava aktualni datum s datumem u jednotliveho odkazu..
|
||
Časová prodleva: 6 dní
|
|||
sheep Profil * |
#4 · Zasláno: 12. 6. 2007, 16:39:49
Tak mam smutnou zpravu ze to nefunguje jak jsem ocekaval,pokud je datum v danem mesici tak vsechno bezi jak ma.Ovsem pokud je datum treba 8.6. a ja chci mazat po deseti dnech,bohuzel z predchazejiciho mesice to nejak nefunguje.Takze ten kdo udela zapis do databze na prelomu mesice,tak tento zapis je ignorovan.Nevim co stim.
|
||
sheep Profil * |
#5 · Zasláno: 12. 6. 2007, 17:10:27
Tak ted jsem z toho trochu mimo.muze mi nekdo vysvetlit jak je mozny ze prikaz
$smazat = MySQL_Query("DELETE FROM xxxx WHERE datum<'$konec'"); se neprovede v databazi korektne. V databazi je datum 25-05-2007 a ja zadam rucne na zkousku $konec = "12-06-2007"; Tak se zaznam nesmaze?? Odjakziva 12.6 je vetsi nez 25.5 tomu trochu nerozumim a databaze asi taky ne. Diky za pripadne rady. |
||
Kajman_ Profil * |
#6 · Zasláno: 12. 6. 2007, 17:36:24
Použijte sloupeček typu date, kde je pak zápis 2007-06-12.
|
||
sheep Profil * |
#7 · Zasláno: 13. 6. 2007, 01:05:03
Koukam ze si asi nerozumime.Ja sloupec kde se zaznamenava datum pouzivam a jak pisi o trochu nahore,ze vsechno funguje.Ale pokud je datum z jineho mesice tak bohuzel ne.A nevim jestli chybu delam nekde ja.Ze by delala chybu databaze to se mi nezda.
|
||
Aleš Janda Profil |
#8 · Zasláno: 13. 6. 2007, 07:36:39
sheep: protože kiflik ti špatně poradil s tím datumem. Správně to má být
$konec = date("Y-m-d",Time()-10*24*60*60); |
||
sheep Profil * |
#9 · Zasláno: 13. 6. 2007, 08:27:42
aha,zkusim to,jestli se muzu zeptat jestli by jsi me trochu nerozebral tenhle prikaz.Nechci jen davat neco kdyz nevim co to dela.Jen tak pro zajimavost.Co dela TIME a proc tech*24*60*60
|
||
sheep Profil * |
#10 · Zasláno: 13. 6. 2007, 08:37:06
Tohle mi hlasi chybu
Parse error: syntax error, unexpected ',' in /domains1/do589700/public/www_root/demo/prod.php on line 40 |
||
Kajman_ Profil * |
#11 · Zasláno: 13. 6. 2007, 08:45:03
Koukam ze si asi nerozumime.Ja sloupec kde se zaznamenava datum pouzivam
Psal jsem, že ten sloupeček má být typu date, protože podle Vašeho příspěvku to vypadalo spíš na nějaký varchar. |
||
djlj Profil |
#12 · Zasláno: 13. 6. 2007, 09:53:30
|
||
sheep Profil * |
#13 · Zasláno: 13. 6. 2007, 10:01:27
To Kajman : varchar nedo date je to uplne jedno oboji se chova stejne..
Chybu mam ale v tom prikazu tak jak jsem jej zkopiroval tak tam je.Chyba je zrejme v syntaxi toho prikazu s TIME.Nevadi stejne diky. |
||
kiflik Profil |
#14 · Zasláno: 13. 6. 2007, 10:08:29 · Upravil/a: kiflik
Aleš Janda
můžu vědět co je špatně na date("Y-m-d",mktime (0,0,0,date("m"),date("d")-10,date("Y"))); |
||
Aleš Janda Profil |
#15 · Zasláno: 13. 6. 2007, 10:16:42
kiflik:
Myslel jsem, že když vytváříš datum ze záporného dne, je to chyba. Teď jsem to ale zkoušel a PHP je opravdu tak inteligentní, že samo posune i měsíc/rok. V tom případě se omlouvám, tvůj zápis se mi zdá jako velice dobrý. |
||
kiflik Profil |
#16 · Zasláno: 13. 6. 2007, 10:25:43
sheep
echo $konec = date("Y-m-d",mktime (0,0,0,date("m") ,date("d")-20,date("Y"))); echo $konec = date("Y-m-d",Time()-20*24*60*60); oboje vrátí stejné datum: 2007-06-13 - 20dnů = 2007-05-24 a jak psal Kajman_ při porovnávání je nutné mít v tabulce (xxx) sloupeček (datum) - typ date (rrrr-mm-dd) |
||
kiflik Profil |
#17 · Zasláno: 13. 6. 2007, 10:29:11
Aleš Janda ničevo :-)
$tomorrow = mktime (0,0,0,date("m") ,date("d")+1,date("Y")); $lastmonth = mktime (0,0,0,date("m")-1,date("d"), date("Y")); $nextyear = mktime (0,0,0,date("m"), date("d"), date("Y")+1); viz: PHP manuál |
||
Kajman_ Profil * |
#18 · Zasláno: 13. 6. 2007, 10:57:05
sheep
varchar nedo date je to uplne jedno oboji se chova stejne.. V tomhle nesprávném úsudku je zásadní chyba Vaší aplikace. |
||
sheep Profil * |
#19 · Zasláno: 13. 6. 2007, 12:39:47
Nechci zde rikat jaky je muj usudek.Ale vysvetluji zde veci ktere mi nefunguji.To znamena ze jsem je zkousel.A proto znova prikladam ze je jedno jestli jsem sloupec zmenil na VARCHAR nebo ho mam jako DATE.Obe varianty jsou stejne a je to divne funguji a chovaji se stejne.
Uvedeny priklad od kiflika je funkcni,vyzkousel jsem jaky datum generuje a opravdu posune i mesic. Ale problem ktery jsem resil ze to nefunguje korektne,je takovy jestli to nekdo zkousel v databazi. Protoze pokud provedu prikaz $smazat = MySQL_Query("DELETE FROM xxxx WHERE datum<'$konec'"); a budu mit v databazi v tabulce nekolik zaznamu ktere jsou z predesleho mesice nez je $konec se proste nesmazou,alespon me ne.Tak si myslim ze je to spis veci MYSQL nez PHP. Na vysvetlenou : V tabulce jsou tri zaznamy a to s datumem 8.6.2007,1.6.2007 a 25.5.2007 dnes je 13.6.2007 dostanu vygenerovany datum -10,coz znamena ze se ma smazat vse co je mensi nez 3.6.2007. Ted ale nastava ten problem ze se smaze jen zaznam s datumem 1.6.2007 ale zaznam 25.5.2007 NE.A ja resim proc.To jsem zde jiz o nekolik urovni ale psal. |
||
Aleš Janda Profil |
#20 · Zasláno: 13. 6. 2007, 13:08:16
A v jakém formátu zapisuješ to datum? RRRR-MM-DD?
|
||
sheep Profil * |
#21 · Zasláno: 13. 6. 2007, 13:13:05
Nejdrive jsem mel DD-MM-RRRR potom jsem si rekl ze to muze byt prave spatne a zapisuji ho jako RRRR-MM-DD.Take jsem opravdu mel datum jako VARCHAR a zmenil ho na DATE ale stejny.Bez vysledku.
|
||
kiflik Profil |
#22 · Zasláno: 13. 6. 2007, 13:17:13
když pustíš na tabulku dotaz select from xxx where datum='2007-5-25' vyleze Ti co?
|
||
Kajman_ Profil * |
#23 · Zasláno: 13. 6. 2007, 15:54:13
delete from tabulka where sloupecek_typu_date<date_sub(curdate(), interval 10 day)
|
||
Časová prodleva: 3 dny
|
|||
sheep Profil * |
#24 · Zasláno: 16. 6. 2007, 08:23:35
Tak jsem zkousel posledni prispevek od Kajmana a ten funguje perfektene.Prohledal jsem i diskuzi na Intervalu a tam mi jeden clen poradil to same co Kajman.Je lepsi to prenechat na Databazi cele,nez to delat pres PHP.
Kdo ma tedy zajem muze pouzivat,vyzkousel jsem.Timto dekuji vsem za podporu a cas nad stravenym problemem. |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0