Ik wil een script maken met dat je credits verlopen na enkele maanden.

Hoe moet ik het aanpakken?
wat bedoel je met credits?
iets duidelijker uitleggen
Ik neem aan dat credits een getal is dat in jouw database in een leden of members tabel staat. Zo niet, zeg het dan even.
een cron maken die de tabel credits leegt als er een bepaalde tijd niet ingelogd is
Als het is wat Computer zegt doe je het volgende

Je haalt aantal credits uit de database met de datum wanneer ze in gezet zijn.
Dan haal je de huidige datum op en ga je ze vergelijken...
Stel de vorgie datum is precies een week geleden.
Dan heb je een update query die aantal credits weer op 0 zet..

EDIT:
zoiets?

<?php
$sql = mysql_query("
				  SELECT
					*
				  FROM
					members
				  WHERE
					datum = CURRENT_DATE - INTERVAL 7 DAY
				  AND
					id = '".$_SESSION['member_id']."'
				  ";
if($sql)
{
// Hier ga je dan updaten
}
else
{
// Hier is de query fout gegaan
}
?>



Gr,
Daar gaan veel mensen dus de mist in. Jij maakt hier een variabel aan voor een query die je gaat controleren.
<?php
$sql = mysql_query("
                  SELECT
                    *
                  FROM
                    members
                  WHERE
                    datum = CURRENT_DATE - INTERVAL 7 DAY
                  AND
                    id = '".$_SESSION['member_id']."'
                  ";
if($sql)
{
// Hier ga je dan updaten
}
else
{
// Hier is de query fout gegaan
}
?>


Ik doe het liever zo, scheelt geheugen:

<?php
if (mysql_query("SELECT * FROM members WHERE datum = CURRENT_DATE - INTERVAL 7 DAY AND id = ".$_SESSION['member_id'])) {
    echo 'Goed!';
} else {
    echo 'Fout!';
}

Je hoeft je code niet af te sluiten met ?> (hoewel ik dat zelf ook altijd doe, maar het is niet nodig). Het veld id is een integer neem ik aan en gaat daarom niet tussen quotes. En ja, zoals ik al zei: niet onnodig variabelen aanmaken, is zeer zonde van je geheugen.
Zie ook eens dit topic.
Nathaniel, zeg zelf a.u.b. ook weer eens iets, dat is wel zo beleefd. Als je niet weet wat je moet zeggen, doe dan zo iets:
Nathaniel
@Karl: Dat heeft me goed geholpen!

of
Nathaniel
Ik bedoelde eigenlijk dat elke maand 1 credit verloopt.
De vraagstelling mag wel iets duidelijker, maar het is in ieder geval zeker dat je voor dit probleem geen cron jobs gebruikt. Zie ook de link die Karl gaf, het is nergens voor nodig aangezien je niets met de data doet als er niemand online is.

Aan de hand waarvan wordt de maand die hier als termijn genoemd wordt gemeten? Je zult er in ieder geval voor moeten zorgen dat je het referentie tijdstip (ie. toevoegen credits, laatst actief zijn) opslaat in de database. Als betreffende gebruiker vervolgens online komt, controleer je aan de hand van dat tijdstip of zijn credits nog geldig zijn en voer vervolgens de benodigde actie uit.

ps. @Hoithebest: wat betreft die query eerst in een variabele zetten, houd ook rekening met overzichtelijkheid van je code. Jouw manier wordt, zeker bij lange queries, snel onoverzichtelijk en dan weegt dat miniscule beetje geheugen dat je bespaart daar echt niet tegenop.
Blanche schreef op 18.12.2009 23:32

ps. @Hoithebest: wat betreft die query eerst in een variabele zetten, houd ook rekening met overzichtelijkheid van je code. Jouw manier wordt, zeker bij lange queries, snel onoverzichtelijk en dan weegt dat miniscule beetje geheugen dat je bespaart daar echt niet tegenop.


Indeed, met de huidige servers zal dat kleine beetje geheugen niet gek veel schelen. En ik verwacht niet dat de TS-er een site zo groot als google heeft draaien waarin de queries in de miljoenen lopen.....

Reageren