Avatar billede hmmhelpinghmm Nybegynder
25. juni 2004 - 22:28 Der er 13 kommentarer og
1 løsning

Slette række hvis datoen er 30 dage bagud

Hej

JEg vil gerne have at hvis fx. en mail i mit system er 30 dage gammel, bliver den slettet. Hvordan laver jeg en fil der sletter dem. I PHP! I min database er der indsat en dato for oprettelse så hvordan fortæller jeg at den skal det, jeg kan jo ikke bare sige 30 bagud i dage, for så hvis man opretter den sidst i en måned, så slettes den jo allerede næste dag!

På forhånd tak! :)

P.S.: JEg vil godt have nogen at bytte banner med, skriv lige hvis i vil!
Avatar billede pgm Nybegynder
25. juni 2004 - 22:51 #1
hvilket format ligger din dato i ? DATETIME ? UNIX TIMESTAMP eller?
Avatar billede dennismp Nybegynder
25. juni 2004 - 23:43 #2
SELECT something FROM tbl_name WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;

banner; Hvad type site har du?
Avatar billede hmmhelpinghmm Nybegynder
26. juni 2004 - 10:17 #3
pgm >> Den ligger bare som Varchar!

dennismp >> skal jeg skrivee det med <= date_col;?
ER det eneste jeg skal rette something og tbl_name

www.friendsavisen.1go.dk
Avatar billede pgm Nybegynder
26. juni 2004 - 11:56 #4
hvis du nu laver dit dato felt om til formålet... altså datetime, så vil du kunne benytte dennismp's eksempelt... og date_col er din datokollone...
Avatar billede dennismp Nybegynder
26. juni 2004 - 13:40 #5
som pgm siger, så kræver mit forslag at det er et dato-kolonne. Nogen speciel grund til at du gemmer det som VARCHAR? Det gør bare livet for dig mere surt - for så kan mysql ikke selv finde de rækker der opfylder din betingelse.
Avatar billede hmmhelpinghmm Nybegynder
30. juni 2004 - 00:25 #6
ok, jeg prøver en anden dag, det er ikke så vigtigt lige nu!
Avatar billede thedeathart Nybegynder
01. juli 2004 - 08:03 #7
det nemmeste ville helt klart være at gemme et timestamp som et id (et id er altid godt)
som så laves med time(); så kan du bare sige

$30dag = $dintidsvabialbe -  2592000;

2592000 er antal sek. på 30 dage.
Avatar billede thedeathart Nybegynder
01. juli 2004 - 08:04 #8
og så en anden ting, der er forbudt at linke til sit eget spørsmål i andres spørsmål hvis det ikke har relevans.
Avatar billede hmmhelpinghmm Nybegynder
01. juli 2004 - 13:32 #9
Hvor har jeg da gjort det thedeathart?
og hvad skal jeg gøre med det time, hvordan sætter jeg det med 30dag ind. forstår det ikke helt
Avatar billede hmmhelpinghmm Nybegynder
01. juli 2004 - 13:35 #10
Ja okay i norton personal firewall!
sry :)
men hvad med det 30dag
Avatar billede thedeathart Nybegynder
02. juli 2004 - 02:05 #11
$30dag er bare en variable.

alt med $ er variabler.
Avatar billede dennismp Nybegynder
02. juli 2004 - 12:26 #12
gemme timestamp som et id .

Man plejer at sige at et id ikke må være informationsbærende. Og det er jo ikke sikkert at det er unikt.

Hvis du gemmer som datetime, date eller timestamp, så burde min sql virke fint.
Avatar billede hmmhelpinghmm Nybegynder
04. juli 2004 - 19:21 #13
HVad er galt her;
virker ikke:

<?

include("acces.php");
$s = mysql_query("SELECT date FROM login WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= ddate_col");
while($d = mysql_fetch_array($s)or die("MySQL fejl: " . mysql_error())) {
echo $d;
}

echo "<font color=\"red\">bla</font>";
?>

Den melder fejlen:
MySQL fejl: Unknown column 'ddate_col' in 'where clause'
Avatar billede hmmhelpinghmm Nybegynder
04. juli 2004 - 20:26 #14
HAr oprettet nyt spørgsmål da dette ikke virker!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester