За последние 24 часа нас посетили 17686 программистов и 1617 роботов. Сейчас ищут 1922 программиста ...

Определение кол-ва цифр в числе

Тема в разделе "PHP и базы данных", создана пользователем InVeX, 29 июл 2008.

  1. InVeX

    InVeX Активный пользователь

    С нами с:
    26 июл 2008
    Сообщения:
    10
    Симпатии:
    0
    Проблема связана с тем, что выбирая из базы поле с датой она выглядит так: 2008-07-29
    А при вводе даты в поля формы она может быть записана как 2008-07-29, так и 2008-7-29
    Поэтому при сравнении дат они не совпадают

    Чтобы всё работало мне нужно узнать количество цифр в числе. Как это сделать?
     
  2. dAllonE

    dAllonE Guest

    Если не заморачиваясь то:

    PHP:
    1. <?php
    2. //////////////////// Давным-давно в далеком-далеком методе
    3.     $number_array  =  explode('-', $number);    
    4.    
    5.     if(!empty($number_array[1]) && (count($number_array) == 3)){
    6.          return strlen($number_array) // if utf-8 => mb_strlen
    7.     }
    8.    
    9.     return  'не не не Дэвид Блейн о_О ';
    10. ?>
    А если чуть серьезнее:

    1. ИМХО что бы не париться нужно или прикрутить JS календарь, кот. будет выдавать в инпут только то что нужно, либо сделать в инпуте ГГГГ-MM-ДД и опять же дать вставлять туда только циферки и только в нужном кол-ве.
    2. Дату хранить либо в TIMSTAMP либо DATE TIME, а не в CHAR
     
  3. InVeX

    InVeX Активный пользователь

    С нами с:
    26 июл 2008
    Сообщения:
    10
    Симпатии:
    0
    Я храню просто в DATE, в этом наверн всё дело
     
  4. dAllonE

    dAllonE Guest

    Хм я описАлся... Имелось в виду как раз DATE.

    А ты как сравниваешь?

    Быть может стоит сравнивать просто TIMESTAMP'ы ? (Функция UNIX_TIMESTAMP(`date_field`) ).

    Или планируется наличие дат до 1970?
     
  5. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
  6. InVeX

    InVeX Активный пользователь

    С нами с:
    26 июл 2008
    Сообщения:
    10
    Симпатии:
    0
    Всегда уважал эльфов)
     
  7. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    DarkElf, и что будет на выходе? intval от 2008-7-29 это 2008.
     
  8. host

    host Активный пользователь

    С нами с:
    20 июн 2007
    Сообщения:
    733
    Симпатии:
    3
    PHP:
    1. <?php
    2.  
    3. $date = "2008-7-29";
    4. $data = explode("-", $date);
    5.  
    6. echo date("Y-m-d", mktime(0,0,0,$data['1'], $data['2'], $data['0']));
    7. ?>
     
  9. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    InVeX, а не проще дату делать с ведущими нулями?
     
  10. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    шоб жизнь медом не казалась
    $date = call_user_func_array('sprintf', array_merge(array('%04d-%02d-%02d'), explode('-', $POST, 3)));
     
  11. host

    host Активный пользователь

    С нами с:
    20 июн 2007
    Сообщения:
    733
    Симпатии:
    3
    :D
    :D :?
     
  12. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    host, ну некогда сайтом заняться... вот получу денюжку с заказчика, сделаю нормальный дизайн и займусь :)
     
  13. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0