2011-11-12 3 views
0

Mon but est de voir si la publication autorise les commentaires et, le cas échéant, de vérifier que la date_comments_expires n'est PAS antérieure au jour passé. Je ne suis pas sûr de savoir comment terminer cette déclaration si. De l'aide?Comparaison des dates à l'instruction if if

if ($mainNews[0]['allow_comments'] == 'Yes' AND $mainNews[0]['date_comments_expire'] ==) { 

EDIT:

Voici mon code mis à jour dans lequel je reçois un appel à la fonction membre getTimestamp d'objet non

if ($mainNews[0]['allow_comments'] == 'Yes' AND $mainNews[0]['date_comments_expire']->getTimestamp() > time()) { 
        echo "<a href=\"#\"></a><span>".$mainNews[0]['number_of_comments']."</span>"; 
       }  
+0

vous manque quelque chose '] ==)'? –

+1

@Book: Je pense que c'est la partie "Je ne suis pas sûr de savoir comment terminer cette instruction if", il ne sait pas quoi mettre après le dernier '=='. –

+4

Que contient '$ mainNews [0] ['date_comments_expire']'? – str

Répondre

2

Cela dépend entièrement de ce qui est contenu dans l'index date_comments_expire de votre tableau. Je m'attendrais à ce que ce soit un horodatage unix indiquant quand les commentaires expirent, ou une interprétation textuelle raisonnable de ceux-ci.

Si vous utilisez un horodatage unix, alors vous vous en sortez bien. Si c'est du texte, alors vous devrez le convertir en un timestamp unix avant de continuer. La meilleure fonction pour cela est strtotime(). Il peut analyser une variété de représentations textuelles datetime, et retournera un horodatage unix en conséquence.

Une fois que vous avez représenté le point de terminaison comme horodatage, vous pouvez le comparer à l'heure actuelle. Pour cela, vous pouvez utiliser la fonction time(), qui renvoie l'heure actuelle sous la forme d'horodatages unix. Étant donné que les horodatages unix ne sont que des entiers (plus précisément le nombre de secondes écoulées depuis le 1er janvier 1970), il s'agit d'une simple comparaison.

En fin de compte, votre code ressemblera à ceci:

// convert to timestamp if necessary, remove if unneeded 
$commentExpiry == strtotime($mainNews[0]['date_comments_expire']); 

if ($mainNews[0]['allow_comments'] == 'Yes' AND 
    $commentExpiry > time()) { 
    //submit comments 
} else { 
    //error handling 
} 
+0

Que faire si le champ date_comments_expire est un format datetime? –

+0

@JeffDavidson Vous voulez dire que c'est un objet PHP DateTime? Dans ce cas, vous pouvez utiliser DateTime :: getTimestamp() pour obtenir l'horodatage Unix et le comparer comme ci-dessus. Fondamentalement, cette partie du conditionnel devient '$ mainNews [0] ['date_comments_expire'] -> getTimestamp()> time()' – AgentConundrum

+0

J'ai mis à jour mon code ci-dessus. –

Questions connexes