2017-10-17 3 views
-1

J'ai créé une table mysql comme indiqué ci-dessous.Comment comparer les dates de la base de données php avec la date du jour

Je voudrais comparer les dates de la table avec la date actuelle en utilisant instruction if else, et envoyer des notifications à l'utilisateur un jour avant, un jour après et un à la même date

Par exemple, nous allons La date d'aujourd'hui est 18/10, et la date d'expiration pour le lait est 20/10, donc je veux envoyer des notifications les 19, 20 et 21. Donc, si vous pouvez m'aider avec le code de comparaison et le code pour l'envoi de la notification (tel que l'email) qui devrait être sous la déclaration if je l'apprécierais vraiment :).

Ma question peut sembler facile mais je suis nouveau sur php Je n'ai pas beaucoup d'informations à ce sujet.

Voici mon code php que je suis en train de faire

<?php 


$first= new Carbon; 

//$second= here I want the date to be collected from date column in the database 

//X= The name of the item that will be collected from database (Item_Name) column 


if ($second=eq($first+1)) 

    {echo"X is going to expire tomorrow"} 

// instade of dispaying the above sentence, i want it to be sent as email 


if ($first=eq($second)) 

    {echo"X is going to expire today!!"} 


if ($first>eq($second)) 

    {echo"X has EXPIRED already"} 

?> 

Ma table:

ID Item_Name Expiry_Date 
1 Milk  2017-10-20 
2 Chicken 2017-10-22 
3 Meat  2017-10-25 

Répondre

1

Vous pouvez utiliser la fonction DATE_ADD pour déterminer l'intervalle.

SELECT 
    col1, 
    col2, 
    ... 
FROM 
    table 
WHERE 
    `date_column` BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 DAY); 

Vous avez mentionné PHP, et je tiens à préciser que c'est MySQL, et je suppose que vous avez un travail de cron ou la configuration comme pour exécuter un script PHP.

MISE À JOUR: En fonction de votre question mise à jour, vous avez deux choix principaux, soit faire le traitement dans la base de données ou en PHP. La décision dépend de la façon dont vous envisagez de l'utiliser, mais il est possible de le faire dans les deux sens.

- MySQL -

SELECT 
    ID, 
    Item_Name, 
    Expiry_Date, 
    CASE 
     WHEN `Expiry_Date` < CURDATE() THEN CONCAT(`Item_Name`,' has EXPIRED already.') 
     WHEN `Expiry_Date` = CURDATE() THEN CONCAT(`Item_Name`,' will expire today.') 
     WHEN `Expiry_Date` BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 DAY) THEN CONCAT(`Item_Name`,' will expire tomorrow.') 
     WHEN `Expiry_Date` > DATE_ADD(CURDATE(), INTERVAL 1 DAY) THEN CONCAT(`Item_Name`,' will expire after tomorrow.') 
     ELSE 'Error processing expiration date.' 
    END AS `Expiration_Message` 
FROM 
    table; 

qui produirait ID ITEM_NAME EXPIRY_DATE Expiration_Message 1 Lait 20/10/2017 Le lait prendra fin après-demain. 2 Poulet 2017-10-22 Le poulet expirera après-demain. 3 Viande 2017-10-25 La viande expirera après-demain.

Vous pouvez également faire l'analyse de chaîne et l'ajout de date en PHP sur lequel vous avez semblé commencer. En termes d'envoi d'un e-mail, PHP a une fonction mail, qui How to send an email using PHP? pourrait vous donner quelques conseils sur. Maintenant, je suppose que vous voulez que cela fonctionne sur un calendrier, donc je voudrais regarder dans Execute PHP script in cron job.

Espérons que cela aide à plus de clarification.

+0

Thnaks pour votre commentaire. Si je ne me trompe pas, je pense que la fonction DATE_ADD est pour ajouter des dates, mais celle que j'essaie de faire est de comparer deux dates et d'agir si la condition est vraie, j'ai inclus le code sur lequel je travaille dans le question, et je pense que cela pourrait vous aider à avoir une idée claire de ce dont je parle. – Monzer

+0

Désolé, mais je n'ai pas compris votre point, où exactement devrais-je placer ce code, est-ce dans la requête sql ou? Comme j'utilise phpmyadmin comme hôte local. Je n'ai pas créé de base de données avant ou appris sur php mais mon projet est arrivé à avoir une base de données et j'essaie d'obtenir des informations d'ici et là. – Monzer