За последние 24 часа нас посетили 94269 программистов и 5689 роботов. Сейчас ищут 1786 программистов ...

Timetable with date & time

Тема в разделе "PHP для новичков", создана пользователем dan4ik, 4 ноя 2016.

  1. dan4ik

    dan4ik Новичок

    С нами с:
    4 ноя 2016
    Сообщения:
    3
    Симпатии:
    0
    Всем привет!!!!!

    PHP:
    1. <?php
    2.  
    3. defined('_JEXEC') or die;
    4.  
    5.  
    6. abstract class ModTiming2Helper
    7. {
    8.     public static function getList()
    9.     {
    10.         if (date('Y-m-d',strtotime("0 day")) == date('Y-m-d',strtotime("Monday"))) :
    11.             $lm = strtotime("Monday");
    12.         else :
    13.             $lm = strtotime("Last Monday");
    14.         endif;
    15.         if(isset($_GET["date"])){
    16.             $cdate = date('Y-m-d',strtotime($_GET["date"]." day",$lm));
    17.         } else {
    18.             $cdate = date("Y-m-d");
    19.         }
    20.         $db = JFactory::getDbo();
    21.         $query = $db->getQuery(true);
    22.         $query->select(array('title','time','date','category'));
    23.         $query->from('timing');
    24.         $query->where('date = \''.$cdate.'\'');
    25. //        $query->order('date ASC');
    26.         $query->order('time ASC');
    27.         $db->setQuery($query);
    28.         $results = $db->loadObjectList();
    29.         $before6 = array();
    30.         $after6 = array();
    31.         foreach($results as $val){
    32.             $time = explode(":",$val->time);
    33.             $time = (int)$time[0];
    34.             if($time<6){
    35.                 $before6[] = $val;
    36.             } else {
    37.                 $after6[] = $val;
    38.             }
    39.         }
    40.         $results = array_merge($after6,$before6);
    41.         return $results;
    42.     }
    43. }


    PHP:
    1. <?php
    2.  
    3. defined('_JEXEC') or die;
    4.  
    5. function getMounth($time)
    6. {
    7.     if (date('M',$time)=='Jan') {$month='.01';}
    8.     if (date('M',$time)=='Feb') {$month='.02';}
    9.     if (date('M',$time)=='Mar') {$month='.03';}
    10.     if (date('M',$time)=='Apr') {$month='.04';}
    11.     if (date('M',$time)=='May') {$month='.05';}
    12.     if (date('M',$time)=='Jun') {$month='.06';}
    13.     if (date('M',$time)=='Jul') {$month='.07';}
    14.     if (date('M',$time)=='Aug') {$month='.08';}
    15.     if (date('M',$time)=='Sep') {$month='.09';}
    16.     if (date('M',$time)=='Oct') {$month='.10';}
    17.     if (date('M',$time)=='Nov') {$month='.11';}
    18.     if (date('M',$time)=='Dec') {$month='.12';}
    19.     return $month;
    20. }
    21.  
    22. function getWeek($time)
    23. {
    24.     if (date('D',$time)=='Wed') {$wday=JText::_('SREDA');}
    25.     if (date('D',$time)=='Mon') {$wday=JText::_('PON');}
    26.     if (date('D',$time)=='Sun') {$wday=JText::_('BOS');}
    27.     if (date('D',$time)=='Tue') {$wday=JText::_('VTOR');}
    28.     if (date('D',$time)=='Fri') {$wday=JText::_('PYAT');}
    29.     if (date('D',$time)=='Sat') {$wday=JText::_('SUBB');}
    30.     if (date('D',$time)=='Thu') {$wday=JText::_('CHET');}
    31.     return $wday;
    32. }
    33.  
    34.  
    35.  
    36.  
    37.  
    38. ?>
    39.  
    40. <div id="timetable_data" style="clear: both;">
    41.     <section class="timetable_all">
    42.         <table style="width:100%; background-color:#FFFFFF;border: 3px solid #cfcfcf;font-size: 14px;">
    43.             <tbody>
    44.             <tr class="tptimetable">
    45.                 <?php
    46.                
    47.    
    48.                     if (date('Y-m-d',strtotime("0 day")) == date('Y-m-d',strtotime("Monday"))) :
    49.                         $lm = strtotime("Monday");
    50.                     else :
    51.                         $lm = strtotime("Last Monday");
    52.                     endif;
    53. //                    echo date("Y-m-d H:i:00",$lm);
    54.                         $month1 = getMounth($lm);
    55.                         $month = getMounth(strtotime("6 day",$lm));
    56.                         if ($month1 <> $month) :
    57.                             //echo '<th class="timetable_date">'.date('j',$lm).' '.$month1.'<br />'.date('j',strtotime("6 day",$lm)).' '.$month.'</th>';
    58.                         else :
    59.                             //echo '<th class="timetable_date">'.date('j',$lm).'-'.date('j',strtotime("6 day",$lm)).' '.$month.'</th>';
    60.                         endif;
    61.                         for ($q='0'; $q<7; $q++)
    62.                         {
    63.                             $wday = getWeek(strtotime("$q day",$lm));
    64.                             $month = getMounth(strtotime("$q day",$lm));
    65.                          
    66.                             $wdd=date('d',strtotime("$q day",$lm));
    67.                             $wdm=$month;
    68.                         if(isset($_GET["date"])){
    69.                             if (date('Y-m-d',strtotime("$q day",$lm)) == date('Y-m-d',strtotime($_GET["date"]." day",$lm)) && date("H:i:00",strtotime("$q day",$lm)) < date("H:i:00",strtotime($_GET["date"]." day 05:00:00",$lm))) :
    70.                                 echo '<th class="dn active">';
    71.                             else :
    72.                                 echo '<th class="dn">';
    73.                             endif;
    74.                         } else {
    75.                             if (date('Y-m-d',strtotime("$q day",$lm)) == date("Y-m-d") && date("H:i:00",strtotime("$q day",$lm)) < date("H:i:00", "05:00:00")) :
    76.                                 echo '<th class="dn active">';
    77.                             else :
    78.                                 echo '<th class="dn">';
    79.                             endif;
    80.                         }
    81.                         echo '<a class="getTimeTable" href="'.JURI::getInstance()->toString(array('scheme', 'user', 'pass', 'host', 'port', 'path', 'fragment')).'?date='.$q.'" data-date="'.date('Y-m-d',strtotime("$q day",$lm)).'"><div class="sss">'.$wday.'</div><div class="select_date">'.$wdd.''.$wdm.'</div></a>';
    82.                         echo '</th>';
    83.                         } ?>
    84.             </tr>
    85.  
    86.             <tr class="row">
    87.                 <td style="padding-top:10px;" class="timetable_title  beforeNow" colspan="8">
    88.                             <?php
    89.                             $time = date("H:i:00", "05:00:00");
    90.                             foreach ($list as $item) :
    91.                                 if (date("H:i:00") < $item->time & date("H:i:00") > $time) :
    92.                                     break;
    93.                                 endif;
    94.                                 $time = $item->time;
    95.                             endforeach;
    96.                             foreach ($list as $item) :
    97.                                 if ($item->time == $time and (!$_GET["date"])) :
    98.                              echo '<li class="actv"><img src="images/time-bg-activ.png"><span class="time_tele">'.date('H:i', strtotime($item->time)).'</span><span class="titletime_tele">'.$item->title.'</span>
    99.                            <div class="premer">'.$item->category.' </span></li>';
    100.                          else :
    101.                              echo '<li class="neactv"><img src="images/time-bg.png"><span class="time_tele">'.date('H:i', strtotime($item->time)).'</span><span class="titletime_tele">'.$item->title.'</span><span class="premer">'.$item->category.'</span> </li>';
    102.                          endif;
    103.                             endforeach; ?>
    104.                 </td>
    105.             </tr>
    106.             </tbody>
    107.         </table>
    108.     </section>
    109. </div>

    Это код от джумла модуля,надо подпилить в 1 файл.

    Таблица в базе
    timing
    id | time | date | title

    попробовал так************************

    PHP:
    1. <?php
    2. $host='localhost';
    3. $database='db';
    4. $user='user';
    5. $pswd='';
    6. $dbh = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
    7. mysql_set_charset('utf8',$dbh);
    8. mysql_select_db($database) or die("Не могу подключиться к базе.");
    9. $query = "Select * from timing order by date ASC, time ASC";
    10. $res = mysql_query($query);
    11. while($row = mysql_fetch_array($res))
    12. {
    13. echo $row['date']."<br>";
    14. echo $row['time']."<br>";
    15. echo $row['title']."<br>";
    16. }
    17. ?>
    Result:
    сортировка по дате и времени работает,но отображается все даты.

    2016.11.03 15:00 Title1
    2016.11.03 15:01 Title2
    2016.11.03 15:02 Title3
    2016.11.03 15:03 Title4
    2016.11.03 15:04 Title5
    2016.11.03 15:05 Title6
    2016.11.04 15:06 Title7
    2016.11.05 15:07 Title8


    А мне надо их делить на 7 дней,вот так
    1колонка
    2016.11.03 15:00 Title1
    2016.11.03 15:01 Title2
    2016.11.03 15:02 Title3
    2016.11.03 15:03 Title4
    2016.11.03 15:04 Title5
    2016.11.03 15:05 Title6

    2 колонка
    2016.11.04 15:06 Title7

    3 колонка
    2016.11.05 15:07 Title8

    Если добавить GROUP BY `date` то показывает только один результат

    2016.11.03 15:00 Title1

    2016.11.04 15:06 Title7

    2016.11.05 15:07 Title8
    итд
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    ну выводи в цикле, как пошёл следующий день пиши колонка
     
  3. dan4ik

    dan4ik Новичок

    С нами с:
    4 ноя 2016
    Сообщения:
    3
    Симпатии:
    0
    не понял,объясните кодом
     
  4. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    ты учишься или просто готовый код хочешь?
     
  5. dan4ik

    dan4ik Новичок

    С нами с:
    4 ноя 2016
    Сообщения:
    3
    Симпатии:
    0
    И то и другое))
    --- Добавлено ---
    просто 3 дня уже,без результатов
    --- Добавлено ---
    могу сюда sql готовый загрузить,если это вам экономить время
    --- Добавлено ---
    еще готовый код,правда не работает почему то

    PHP:
    1. <div id="timetable_data">
    2.     <section class="timetable_all">
    3.  
    4.         <table>
    5.             <tr class="tptimetable">
    6.                 <td class="timetable_date">
    7.                     CET <br>
    8.                     GMT +0
    9.                 </td>
    10.                 <td class="timetable_date">
    11.                     Moscow <br>
    12.                     GMT +2
    13.                 </td>
    14.              
    15.                 <?php
    16.                 $active_day = '';
    17.  
    18.                 for ($mon_num = 1; $mon_num < 8; $mon_num++) {
    19.                    
    20.                     if (date('Y-m-d', $monday) == $date) {
    21.                         $active_day = "class='active'";
    22.                     }
    23.                     ?>
    24.                     <td <?=$active_day?>>
    25.                         <a class="getTimeTable" href="?date=<?=date('Y-m-d', $monday);?>"
    26.                            data-date="<?=date('Y-m-d', $monday);?>"><?=Yii::app()->dateFormatter->format('EE', $monday)?>
    27.                             <div class="select_date">
    28.                                 <?=Yii::app()->dateFormatter->format('d', $monday)?> <?=Yii::app()->dateFormatter->format('MMMM', $monday)?></div>
    29.                         </a>
    30.                     </td>
    31.                     <?php
    32.                     $monday += 86400;
    33.                 }
    34.                 ?>
    35.             </tr>
    36.  
    37.  
    38. <!--            <tr>-->
    39. <!--                <th class="time_0">GMT +0</th>-->
    40. <!--                <th class="time_2">GMT +2</th>-->
    41. <!--                <th class="time_5">GMT +5</th>-->
    42. <!--                <th class="noborder" colspan="7">&nbsp;</th>-->
    43. <!--            </tr>-->
    44.  
    45.             <?php foreach ($programs as $program) {
    46.             $onAirClass = '';
    47.             if ($program->id == $onAirProgram->id) {
    48.                 $onAirClass = 'active';
    49.             }
    50.  
    51.             $beforeClass = '';
    52.             if (($program->time < $onAirProgram->time && $program->date <= $onAirProgram->date)) {
    53.                 $beforeClass = "beforeNow";
    54.             }
    55.             ?>
    56.             <tr class="row langId<?=$program->content->lang_id ?>">
    57.                 <td
    58.                     class="time_value"><div id="time_value"><?=Yii::app()->dateFormatter->format('H:mm', (strtotime($program->time) - 3600 * 4))?></div></td>
    59.                 <td
    60.                     class="time_value"><div id="time_value"><?=Yii::app()->dateFormatter->format('H:mm', (strtotime($program->time) - 3600 * 3))?></div></td>
    61.                 <td class="time_value"><div id="time_value3"><?=Yii::app()->dateFormatter->format('H:mm', strtotime($program->time))?></div></td>
    62.                 <td class="timetable_title <?=$onAirClass?> <?=$beforeClass?>" colspan="7">
    63.                     <?php if ($program->content !== null) {
    64.                         ?>
    65.                         <div class="program_content">
    66.                             <h2>
    67.                                 <a href="<?=Yii::app()->createUrl('/programms/default/program', array('sefname' => $program->content->sefname))?>"><?=$program->title?></a>
    68.                             </h2>
    69.  
    70.                             <div class="description">
    71.                                 <div class="img"> <?php
    72.                                     $image = ProgrammsContent::getAnounceImg($program->content->image, '104_');
    73.                                     ?>
    74.                                     <img src="<?=$image?>" width="130" alt="">
    75.                                 </div>
    76.                                 <div class="short_text"><?=$program->content->short_text?></div>
    77.                             </div>
    78.  
    79.                         </div>
    80.                     <?php
    81.                     } else {
    82.                         echo $program->title;
    83.                     }
    84.                     ?>
    85.                 </td>
    86.                 <?php } ?>
    87.             </tr>
    88.         </table>
    Это код от Yii
     
  6. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    с датами в php умеешь работать?
    https://secure.php.net/manual/ru/class.datetime.php
    вот например с datetime можно через format получить только день, в цикле писать день в временную переменную и если она различается от дня полученного через format значит день сменился и можно выводить что тебе надо при изменении дня.

    тогда задавай вопросы, или можешь открыть тему в free-lance и за деньги найти кто тебе сделает, ещё вариант в раздел "сделайте за меня" перенести тему
    --- Добавлено ---
    делай отладку
    http://phpfaq.ru/debug
    https://netbeans.org/kb/docs/php/debugging_ru.html
    https://php.ru/forum/threads/howto-...i-po-shagam-i-s-kartinkami.58974/#post-474550

    ну он не сильно нужен, только посмотреть на твой результаты,
    у тебя есть результат с датами из таблицы, отсортируй чтобы по дням и в цикле при их выводе как я писал, просто когда день сменился, выводи что тебе нужно