За последние 24 часа нас посетили 60455 программистов и 1808 роботов. Сейчас ищут 817 программистов ...

Если сегодня - вывожу зеленым, если вчера - красным

Тема в разделе "PHP для новичков", создана пользователем viktor72, 7 июл 2017.

Метки:
  1. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Вывожу дату из базы - если сегодняшняя дата то зеленым цветом, если вчерашняя то красным.

    PHP:
    1. $select_date = "SELECT  date FROM vakans";
    2.             $query_date = mysqli_query($dsd, $select_date);
    3.             $row_date = mysqli_fetch_array($query_date);
    4.      
    5.         if($row_date[date] = ??? сегодня){
    6. echo '<td bgcolor="green">';}
    7.                     echo $row_date[date]. '</td>';
    8.                
    9. else {
    10.            $row_date[date] = ??? вчера
    11.      echo  '<td bgcolor="grey">';}
    12.                     echo $row_date[date]. '</td>';
    Если можете подскжите
     
  2. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    PHP:
    1. if($row_date['date'] == date("Y-m-d"))
    2. {
    3. //сегодня
    4. } elseif($row_date['date'] == date("Y-m-d", time() - 86400)) {
    5. //вчера
    6. }
    P.S.: date - зарезервированное слово в SQL. Если используется в имени атрибута - желательно брать в кавычки в SQL-запросе
     
    viktor72 нравится это.
  3. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Смотря как ты хранишь дату в бд, покажи какой формат.
     
    viktor72 нравится это.
  4. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Почему то не получается. не выводите ничего ни сегодня ни вчера. В чем причина?
    В базе храниться дата в формате date , в базе записоно вот так - 2017-06-30
    --- Добавлено ---
    Может метод изначально не правильный? может есть более правильный ?
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    var_dump() всех переменных, чтобы поглядеть, что там в них
     
    viktor72 и Maputo нравится это.
  6. username

    username Новичок

    С нами с:
    6 июл 2017
    Сообщения:
    223
    Симпатии:
    17
    PHP:
    1. $select_date = "SELECT `date` FROM `vakans`";
    2. $query_date = mysqli_query($dsd, $select_date);
    3. $row_date = mysqli_fetch_array($query_date);
    4.  
    5. if ($row_date['date'] == date("Y-m-d")) {
    6.     echo '<td bgcolor="green">'.$row_date['date']. '</td>';
    7. }
    8. else {
    9.     echo '<td bgcolor="grey">'.$row_date['date']. '</td>';
    10. }
     
    viktor72 нравится это.
  7. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    Нельзя так сравнивать даты, вы чего хоть парни???

    Для корректного сравнения надо юзать strtotime либо DateTime
     
    viktor72 нравится это.
  8. zahermaher

    zahermaher Новичок

    С нами с:
    27 сен 2014
    Сообщения:
    169
    Симпатии:
    14
    Для сокращения кода, бы сделал подстановку green grey немного по другому.

    PHP:
    1. $select_date = "SELECT `date` FROM `vakans`";
    2. $query_date = mysqli_query($dsd, $select_date);
    3. $row_date = mysqli_fetch_array($query_date);
    4.  
    5. $color =  (  $row_date['date'] == date("Y-m-d")  )   ?  'green' : 'grey';
    6. echo '<td bgcolor=" ' . $color . ' ">'.$row_date['date']. '</td>';
    или так:

    PHP:
    1. $select_date = "SELECT `date` FROM `vakans`";
    2. $query_date = mysqli_query($dsd, $select_date);
    3. $row_date = mysqli_fetch_array($query_date);
    4.  
    5. echo '<td bgcolor=" ' .(  (  $row_date["date"] == date("Y-m-d")  )   ?  green : grey ). ' ">'.$row_date['date']. '</td>';
     
    viktor72 и easy-phpc нравится это.
  9. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Хороший совет.
    Что выведет
    PHP:
    1. var_dump($row_date);
    Может запрос не выводит ничего.
    И что-то мне кажется, что надо сравнивать с этим:
    $row_date[номер строки]['date']
    PHP:
    1. foreach($row_date as $one_date)
    2. {
    3.     if($one_date['date'] == ...
    4. }

    Можно, конечно, написать отдельную функцию, где все преобразовать в секунды, но тут и в таком виде должно норм сравнивать.
     
    #9 Maputo, 8 июл 2017
    Последнее редактирование: 8 июл 2017
    viktor72 нравится это.
  10. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Сделал так:

    PHP:
    1. $rt = $row_date['date'];
    2.         $dt = date("Y-m-d");
    3.         if($ro['date']){
    4.            
    5.         if(strtotime($rt) == strtotime($dt)){
    6.                  
    7.                     echo '<td id="color_skrin">';
    8.                     //echo date("d.F.y", strtotime($row_date['date'])). '</td>';
    9.                   echo  rus_date("j M  ", strtotime($row_date['date'])). '</td>';
    10.                     }
    11.                     else
    12.                     {
    13.                 //вчера    elseif($row_date['date'])     id="color_skrin2"
    14.                 echo '<td id="color_skrin2">';
    15.                     echo  rus_date("j M  ", strtotime($row_date['date'])). '</td>';
    16.                 }
    17.                 }  
    Работает.

    Вот это выглядит очень красиво, но как не пытался что то не смог прикрутить
    --- Добавлено ---
    --- Добавлено ---
    Всем спасибо !