Avatar billede vodka101 Nybegynder
03. januar 2005 - 11:19 Der er 14 kommentarer og
1 løsning

Trække 4 dage fra tid i tabel

goddag

Jeg har en tabel med mine brugere i, brugerne skal aktivere deres profil før de kan logge ind.

Der er en oprettelses dato ved hver bruger.
Måden jeg er på om deres konto er aktiv, er ved 2 felter i tabellen. Indeholder de 2 felter ikke det samme er profilen ikke aktiv.

Nu til spørgsmålet:
Hvis en bruger ikke har aktiveret deres profil indefor 7 dage skal den slettes automatisk. Hvordan kan det gøres?
Avatar billede coderdk Praktikant
03. januar 2005 - 11:24 #1
DELETE FROM brugertabel WHERE felt1 <> felt2 AND DATE_SUB( NOW(), INTERVAL 7 DAYS ) > oprettelsesdato

:)
Avatar billede vodka101 Nybegynder
03. januar 2005 - 11:30 #2
Okay, men hvor ved den fra den skal gå ud fra det felt som hedder signup_date, og ikke last_login?
Avatar billede coderdk Praktikant
03. januar 2005 - 11:33 #3
Ja, du skal naturligvis tilpasse den query, eftersom du ikke gav os nogle detaljer :P

DELETE FROM brugertabel WHERE det_ene_felt_der_skal_matche_det_andet <> det_andet_felt_der_skal_matche_det_første AND DATE_SUB( NOW(), INTERVAL 7 DAYS ) > brugerens_oprettelsesdato

Så du skal ændre de tre feltnavne ;)
Avatar billede vodka101 Nybegynder
03. januar 2005 - 11:36 #4
Okay, du må meget undskylde. Men er det DATE_SUB du kalder et felt?
Så det erstatter jeg bare med signup_date?
Avatar billede coderdk Praktikant
03. januar 2005 - 11:47 #5
hehe nej du skal ændre:

  det_ene_felt_der_skal_matche_det_andet <> det_andet_felt_der_skal_matche_det_første
og
  brugerens_oprettelsesdato

Hvis jeg forstår dig ret skal den se sådan ud:

DELETE FROM brugertabel WHERE signup_date <> last_login AND DATE_SUB( NOW(), INTERVAL 7 DAYS ) > signup_date
Avatar billede coderdk Praktikant
03. januar 2005 - 11:49 #6
På den anden side, giver det ikke så meget mening, signup_date <> last_login skal nok være noget andet - altså de to felter der skal være ens hvis brugeren er aktiv!
Avatar billede vodka101 Nybegynder
03. januar 2005 - 11:50 #7
bah, tror jeg har fattet det nu.
Den kan sagtens se således ud ik?
$sql = "DELETE FROM users WHERE akt_kode <> kode AND DATE_SUB( NOW(), INTERVAL 7 DAYS ) > signup_date"
mysql_query($sql) or die(mysql_error());

nej nej, det er deres aktiveringskode der skal være forskellig. Altså det ene felt vil formentlig være tomt.
Avatar billede coderdk Praktikant
03. januar 2005 - 11:53 #8
Ja, det ser rigtigt ud! :)
Avatar billede vodka101 Nybegynder
03. januar 2005 - 11:54 #9
Okay :)

Du skal have tak. Ville bare gerne være sikker så jeg ikke slettede alle brugerne. Så ville de nok blive negative :P
Avatar billede coderdk Praktikant
03. januar 2005 - 11:56 #10
Det er altid en god idé at teste sine DELETEs hvis man bare er LIDT i tvivl!
Det gøres nemt ved at erstatte "DELETE FROM" med "SELECT * FROM" og resten bare det samme :)
Avatar billede vodka101 Nybegynder
03. januar 2005 - 11:57 #11
Men den siger sq godt nok jeg har en synta fejl.
$sql = "DELETE FROM users WHERE akt_kode <> kode AND DATE_SUB( NOW(), INTERVAL 7 DAYS ) > signup_date";
mysql_query($sql) or die(mysql_error());

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DAYS ) > signup_date' at line 1
Avatar billede coderdk Praktikant
03. januar 2005 - 12:53 #12
Hmm weird, prøv lige:

$sql = "DELETE FROM users WHERE akt_kode <> kode AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > signup_date";
mysql_query($sql) or die(mysql_error());
Avatar billede coderdk Praktikant
03. januar 2005 - 12:54 #13
Eller som sagt, når man tester er det godt at bruge selects ;)

SELECT * FROM users WHERE akt_kode <> kode AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > signup_date
Avatar billede coderdk Praktikant
03. januar 2005 - 13:08 #14
Mener også du kan bruge:

SELECT * FROM users WHERE akt_kode <> kode AND ( NOW() - INTERVAL 7 DAY ) > signup_date
Avatar billede vodka101 Nybegynder
03. januar 2005 - 13:15 #15
Nemli' ja :) Den første virkede.

Så venter jeg bare 7 dage og se hvad der sker :)

Tak igen.
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



IT-JOB

Metroselskabet og Hovedstadens Letbane

Cyber Security Konsulent

Politiets Efterretningstjeneste

Testere med flair for test management

Aller Leisure A/S

Erfaren .NET-udvikler

Cognizant Technology Solutions Denmark ApS

Test Manager