Mulighed for at lave en udløbsmetode?

Tags:    php

<< < 12 > >>
Ville høre om der er en mulighed for at lave en udløbsmetode? Har et community hvor man kan bestille VIP profil, også når de bestiller det poster den "bestillingsdato", så tænkte jeg på om man kunne lave en "udløbsdato" Der er på 1 mdr? Også når de logger ind og der er gået 1 måned eller over så bliver deres level skiftet fra 4 til 0?
Ville høre om det var en mulighed

Har også tænkt mig at lave en shop hvor man kan købe html koder, men ved ikke hvordan jeg skal lave sådan at de ikke kan lave de andre html koder? Fks hvis en kun har adgang til <b></b>
Nogle idér?



13 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Jeg kan lige forklare det hurtigt, men en god idé er, hvis du lærer php.net-stedet at kende, for der kommer du ofte til at søge efter dokumentation :-)

http://dk.php.net/time:
Det er en funktion, der returnerer antallet af sekunder siden Unix Epoch 1/1-1970 00:00:00 og til nu.

http://dk.php.net/mktime
Med denne funktion kan du udfra et tidspunkt (dato og tid) generere et timestamp (dvs. antallet af sekunder siden Unix Epoch og til det givne tidspunkt).

Eksempel ved betaling:
@mysql_query("UPDATE users SET lastPaymentTime=" . time() . " WHERE id = 1");

Og hvor du så tjekker om brugeren har betalt, bruger du fx:
@mysql_query("SELECT lastPaymentTime FROM users WHERE id=1");
Så kan du enten tjekke feltet der, eller du kan gøre det i queryen (for efterfølgende at tjekke antallet af returnerede rækker) - her tjekkes om der er betalt indenfor de seneste 30 dage:
$query = @mysql_query("SELECT lastPaymentTime FROM users WHERE id=1 AND lastPaymentTime > " . (time() - (60 * 60 * 24 * 30)));

if (@mysql_num_rows($query) > 0)
{
// brugeren har betalt inden for de seneste 30 dage
}

else
{
// brugeren har IKKE betalt inden for de seneste 30 dage
}

Der findes også tidsfunktioner i MySQL, men jeg gør det her med PHPs egen for nemhedens skyld - og det kan du også sagtens gøre i dit script.

Du behøves ikke bruge mktime medmindre du, så at sige, vil simulere tidspunkter.

mikl-dk | udv@mikl.dk



Ville høre om der er en mulighed for at lave en udløbsmetode? Har et community hvor man kan bestille VIP profil, også når de bestiller det poster den "bestillingsdato", så tænkte jeg på om man kunne lave en "udløbsdato" Der er på 1 mdr? Også når de logger ind og der er gået 1 måned eller over så bliver deres level skiftet fra 4 til 0?
Ville høre om det var en mulighed

Har også tænkt mig at lave en shop hvor man kan købe html koder, men ved ikke hvordan jeg skal lave sådan at de ikke kan lave de andre html koder? Fks hvis en kun har adgang til
Nogle idér?


Du kan gemme start tidspunktet for bestillingen, og lægge et måned til, se evt. php.net/strtotime

Du kan lege med muligheden for at registrere om de har betalt, og give dem en wyciwyg editor, eller en bbcode editor evt.

mvh bob



Nogle der har en bedre forklaring, hvis jeg bruger $betalingsdato = date('d-m); til at registrerer købs datoen? Hvordan gør jeg sådan den ligge 1 mdr til? Og det der ang. html koder fatter jeg heller ikke :S



Nogle der kan komme med kode hvis det her er
$betalingsdato = date('d-m');
Hvad skal
$udloebningsdato = ????;


så være, når det skal være 1 mdr frem fra Betalingsdatoen!



Jeg synes, at du skal benytte timestamps - se:
http://php.net/time
og
http://php.net/mktime

mikl-dk | udv@mikl.dk



Jeg synes, at du skal benytte timestamps - se:
http://php.net/time
og
http://php.net/mktime

mikl-dk | udv@mikl.dk

Kan du ikke finde det til mig ? :S For fatter sku ikke så meget af de der php.net sider :S



Jeg kan lige forklare det hurtigt, men en god idé er, hvis du lærer php.net-stedet at kende, for der kommer du ofte til at søge efter dokumentation :-)

http://dk.php.net/time:
Det er en funktion, der returnerer antallet af sekunder siden Unix Epoch 1/1-1970 00:00:00 og til nu.

http://dk.php.net/mktime
Med denne funktion kan du udfra et tidspunkt (dato og tid) generere et timestamp (dvs. antallet af sekunder siden Unix Epoch og til det givne tidspunkt).

Eksempel ved betaling:
@mysql_query("UPDATE users SET lastPaymentTime=" . time() . " WHERE id = 1");

Og hvor du så tjekker om brugeren har betalt, bruger du fx:
@mysql_query("SELECT lastPaymentTime FROM users WHERE id=1");
Så kan du enten tjekke feltet der, eller du kan gøre det i queryen (for efterfølgende at tjekke antallet af returnerede rækker) - her tjekkes om der er betalt indenfor de seneste 30 dage:
$query = @mysql_query("SELECT lastPaymentTime FROM users WHERE id=1 AND lastPaymentTime > " . (time() - (60 * 60 * 24 * 30)));

if (@mysql_num_rows($query) > 0)
{
// brugeren har betalt inden for de seneste 30 dage
}

else
{
// brugeren har IKKE betalt inden for de seneste 30 dage
}

Der findes også tidsfunktioner i MySQL, men jeg gør det her med PHPs egen for nemhedens skyld - og det kan du også sagtens gøre i dit script.

Du behøves ikke bruge mktime medmindre du, så at sige, vil simulere tidspunkter.

mikl-dk | udv@mikl.dk


Kan man ikke lave sådan at hvis personen trykker "Betal points" Så smider den både en $betalingsdato også en $udloebnings dato = $betalingsdato + 1 månede ind i tabellen som hedder Community? også når de logger på gør den sådan her

if ($udloebnings dato == '$dato') {
Gør den personen til lvl 0, (KAN JEG GODT SELV FINDE UD AF AT LAVE)
} else {
echo "Du har betalt";
}



Husk at navne for variabler har nogle kriterier at skulle opfølge (de kan bl.a. ikke indeholde mellemrum).

Du kan fx hente en brugers level hver gang denne logger ind (eller i toppen af hver side).

Selve betalingen laver du så som jeg tidligere skrev med UPDATE.

Har jeg forstået det rigtigt, eller har jeg misforstået dig :-)?

mikl-dk | udv@mikl.dk



Husk at navne for variabler har nogle kriterier at skulle opfølge (de kan bl.a. ikke indeholde mellemrum).

Du kan fx hente en brugers level hver gang denne logger ind (eller i toppen af hver side).

Selve betalingen laver du så som jeg tidligere skrev med UPDATE.

Har jeg forstået det rigtigt, eller har jeg misforstået dig :-)?

mikl-dk | udv@mikl.dk

Altså har selve betal siderne, men mangler bare selve "$udloebsdato" som skal være en der pluser 1 måned til $kobsdato..

Den her bruger jeg til at registrere hvilken dag de har købt:
$kobsdato = date('H:i');

Også har jeg min query med UPDATE hvor den både trækker de xxx points det koster fra..




Det er udløbsdatoen, der opdateres med, så du kan få købsdatoen ved at trække en måned fra udløbsdatoen:
$udloebsdato = x; // hentes fra databasen
$koebsdato = $udloebsdato - (60 * 60 * 24 * 30);
$koebsdato = date("H:i", $koebsdato);

Se evt.:
http://php.net/date

Jeg er kommet til at skrive (time() - (...)) i opdateringsqueryes - det skal selvfølgelig være (time() + (...)) for at få udløbsdatoen, der jo ligger i fremtiden.

Alternativt kan du have to felter i databasen - et til købsdato og et til udløbsdato - hvis ud gør det sådan i stedet, har du mulighed for at have forskellige perioder (15 dage, 30 dage etc.) uden ret meget mere besvær.

mikl-dk | udv@mikl.dk



<< < 12 > >>
t