Avatar billede BTEngineer Novice
17. februar 2006 - 18:26 Der er 6 kommentarer og
1 løsning

Nedtælling

Hej,

Jeg har lavet et system, hvor man køber f.eks. for 4 måneder (højest 6 og mindst 1), men jeg kan ikke hitte ud af hvordan man laver sådan, at hvis man køber for de 4 måneder, så har man en nedtælling på deromkring 120 dage.

Systemet er lavet således, at når man har oprettet sig, får man tilsendt en email med et aktiveringslink, som man skal trykke på. Når man har gjort det, skal man indbetale beløbet for de 4 måneder. Når det er registeret i banken, skal admin kunne aktiverer kontoen, således at brugeren kan logge ind. Og fra den dag, kontoen bliver aktiveret, skal den tælle ned fra de 120 dage. Men nu er det jo sådan, at der ikke er lige mange dage i hver måned, hvordan laver man det?

Jeg har lavet alt det med aktivering af konto osv. Men kan ikke hitte ud af det med nedtællingen.

Håber nogen kan hjælpe.

- Henrik.
Avatar billede whatever Nybegynder
17. februar 2006 - 19:32 #1
Hvis brugeren har købt 4 måneder gemmer du udløbsdatoen når kontoen aktiveres.

F.eks.:

$expire_date = date("Y-m-d",strtotime("+4 months"));

$expire_date gemmes i feltet user_expire_date i din tabel med brugerne. Feltet skal være af typen date.

Når du skal tjekke om brugeren er gyldig skriver du f.eks.:

$res = mysql_query("SELECT * FROM users WHERE user_id = x AND user_expire_date < DATE_FORMAT(NOW(),'%Y-%m-%d')");
if (mysql_num_rows($res) > 0)
// ok
else
// udløbet

Ovenstående er kun ment som et eksempel.
Avatar billede BTEngineer Novice
17. februar 2006 - 22:18 #2
Jeg har det jo sådan, at hver gang jeg spørger om noget her inde på eksperten, og for udleveret koder, vil jeg gerne have at man forklarer dem :)

aktsp funktionen strtotime ved jeg ikke hvad er. og det der DATE_FORMAT(NOW()m'' bla bla.. forstår jeg heller ikke :)

kan du ikke forklarer det?
Avatar billede whatever Nybegynder
17. februar 2006 - 23:53 #3
Okay, jeg vil kort prøve at forklare det.

strtotime() funktionen laver en streng om til unix timestamp. I det aktuelle tilfælde ligger den 4 måneder til den aktuelle dato. Da jeg skal bruge datoen i formatet YYYY-MM-DD, og ikke som en unix timestamp, formaterer jeg datoen med date() funktionen. Arbejder man meget med datoer i php, bliver man meget hurtigt glad for strtotime(). Du kan se mere om den her http://dk.php.net/manual/da/function.strtotime.php.

MySQL har indbygget en del funktioner til f.eks. manipulation af datoer. NOW() returnerer den aktuelle tid dato fra MySQL-serveren i formatet YYYY-MM-DD HH:MM:SS. Da jeg kun ønsker datoen og ikke tidspunktet, formaterer jeg datoen med funktionen DATE_FORMAT(). '%Y-%m-%d' fortæller DATE_FORMAT() at den skal returnere datoen i formatet YYYY-MM-DD. Du kan læse mere om dato-funktioner i MySQL på http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html. Og generelt om funktioner o MySQL på http://dev.mysql.com/doc/refman/4.1/en/functions.html.

Håber det giver lidt mening, ellers skal du endelig spørge igen.
Avatar billede BTEngineer Novice
18. februar 2006 - 09:16 #4
Det gav mening :)
Hvordan laver jeg så sådan at brugeren kan se hvor mange dage han eller hun har tilbage?
Avatar billede BTEngineer Novice
18. februar 2006 - 10:19 #5
Hmm..
Det virker ikke rigtig..
jeg har købt for en måned, og i udato feltet som jeg har kaldt det istedet for expire_date står der godt nok 18-3-2006, men når jeg logger ind og ser min konto siger den: Din konto er udløbet.

Har gjort følgende:

$tjek_udato = mysql_query("SELECT * FROM annoncering WHERE id = $_SESSION[id] AND udato < DATE_FORMAT(NOW(),'%Y-%m-%d')");
if(mysql_num_rows($tjek_udato) > 0) {
echo("Din konto er stadig ikke udløbet..");
} else {
echo("<font color='red'><b>Din konto er udløbet</b></font>");
}

Forstår ikke.
Avatar billede BTEngineer Novice
27. februar 2006 - 17:02 #6
kan du hjælpe..?
Avatar billede BTEngineer Novice
29. juli 2006 - 15:29 #7
Åbenbart ikke.
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