2010-09-20 1 views
1

J'ai un formulaire que les utilisateurs remplissent pour publier leurs offres d'emploi et l'un des champs qu'ils saisissent est le nombre de jours pour garder le travail 'ouvert'.Définir l'état sur l'enregistrement automatiquement après certain datetime

Je veux être en mesure de changer automatiquement le statut du travail à 'fermé' après que les jours qu'ils ont entrés se sont écoulés.

La table des tâches est déjà configurée avec le statut et l'expiration, j'ai juste besoin de savoir comment changer automatiquement le statut de 'ouvert' à 'fermé'.

J'ai peu de connaissances sur MySQL et les requêtes que je devrais exécuter.

Répondre

5

Indiquez que vous ne conservez pas status comme champ dans la base de données, mais plutôt dérivez ce statut à partir de la date d'expiration de votre niveau métier ou présentation. Cela peut être fait dans votre code SQL ou dans le code client (PHP).

Certains pseudo-code:

INSERT INTO JobAd (Description, ExpiryDate) 
VALUES (@Description, @Today + DaysToLive) 

... 

SELECT * 
     , CASE WHEN ExpiryDate<@today 
     THEN 'Expired' 
     ELSE 'Good to go' 
     END AS JobStatus 
FROM JobAd ORDER BY JobStatus, ExpiryDate 

Lorsque vous tirez ces emplois là, utiliser PHP pour écrire le statut à l'utilisateur, en partie par la ExpiryDate. Encore une fois, cela pourrait être fait en SQL ou PHP. Si l'état est dérivé, vous n'aurez pas besoin de créer un processus/une tâche de maintenance pour mettre à jour un attribut dans la base de données.

Questions connexes