1. Fabrik 3.8.1 has been released. It is mostly bug fixes and feature enhancements, but does include two new plugins (push notifications, and the sequence element). As usual we strongly recommend testing the new release on a sandbox if your application is mission critical, and always do an Akeeba backup before updating.
    Dismiss Notice

Date element validation rule

Discussion in 'Standard Support' started by jo-ka, Jul 13, 2018.

  1. jo-ka

    jo-ka Member

    Level: Standard
    Hello,

    Can you please help me find the best way to set a validation rule where the date shouldn't be greater that "today"?

    Thank's in advance.
     
  2. jo-ka

    jo-ka Member

    Level: Standard
    Friendly bump...
     
  3. troester

    troester Administrator Staff Member

    Level: Community
    php validation
    return $data <= date('Y-m-d 00:00:00');
     
    jo-ka and dimoss like this.
  4. dimoss

    dimoss Well-Known Member

    Level: Community
    Hi

    This is what I use in a date element to check the date against a predefined one in another table.

    PHP:
    date_default_timezone_set('UTC');
    $db = & JFactory::getDBO();
    $tour = (int)'{table___tournament_raw}';
    $current = strtotime(gmdate('Y-m-d H:i:s'));
    $query = "SELECT deadline FROM table WHERE id = $tour";
    $db->setQuery( $query );
    $dt = $db->loadResult();
    $deadline = strtotime($dt);
    return $deadline > $current;
    I think it can help u to start or modify it to get what u want.
     
    jo-ka likes this.
  5. dimoss

    dimoss Well-Known Member

    Level: Community
    But this one is direct to the point.
     
    jo-ka likes this.
  6. jo-ka

    jo-ka Member

    Level: Standard
    Well, thanks guys.
    I need to have the today's system date and not a fixed date.

    So, shall something like this would work? I've tried but all I've got is a blank page...

    return $data <= CURDATE();
     
  7. troester

    troester Administrator Staff Member

    Level: Community
    date('Y-m-d 00:00:00') is the current date.
    CURDATE() is SQL not php
     
    jo-ka likes this.
  8. jo-ka

    jo-ka Member

    Level: Standard
    Oh God! What a dummy.

    OK, thank's. It's working now.
     
  9. troester

    troester Administrator Staff Member

    Level: Community
    I'm not sure about timezones, nor of $data nor of date()...
    If it's relevant do some var_dump
     
  10. jo-ka

    jo-ka Member

    Level: Standard
    OK, in that case, couldn't we use also dimoss suggestion?

    date_default_timezone_set('UTC');
    (or the needed time zone)

    before

    return $data <= date('Y-m-d 00:00:00')

    Thanks in advance.
     
  11. cheesegrits

    cheesegrits Support Gopher Staff Member

    Level: Community
    Well, first make sure it's an issue before trying to solve it. Dump your $data ...

    var_dump($data, date('Y-m-d 00:00:00');exit;

    ... and see if it looks like you need to figure TZ's out.

    -- hugh
     

Share This Page