Как вводить события на каждую третью пятницу каждого месяца в php/mysql

Я пытаюсь код ниже, чтобы ввести события в MySQL использование таблицы PHP, Когда я запускаю его, он не выдает ошибку и строка не вставляется в MySQL Таблица. Где я иду не так в коде?

Также, когда я изменяюсь

$date = strtotime("third friday of $month[$j] $year[$i]");

в

$date = mktime(0,0,0,$month[$j],$k,$year[$i]);

это работает на все дни, но я ищу только третью пятницу каждого месяца..

<?php 
if(isset($_POST['myform'])){

         $day   =   array('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31');
         $month =   array('1','2','3','4','5','6','7','8','9','10','11','12');              
         $year  =   array('2011', '2012','2013', '2014', '2015', '2016');   

         $startday   = $_POST['day'];
         $eventplace = $_POST['eventplace'];
         $eventname  = $_POST['eventname'];
         $eventtime  = $_POST['eventtime'];

        for($i=0; $i<count($year); $i++){

            for($j=0; $j<count($month); $j++){

                for($k=$startday; $k<count($day); $k = $k + 7){

                        $date = strtotime("third friday of $month[$j] $year[$i]");

                        $week = date('W', $date) ;

  $query = mysql_query(" INSERT INTO caldemo(day, month, year, eventname, eventtime, eventplace, eventweek)
                         VALUES ('".$k."', '".$month[$j]."', '".$year[$i]."', '".$eventname."', '".$eventtime."', '".$eventplace."', '".$week."' )")or die(mysql_error()) ;
              }
            }
         } 
      }
?>   


<form name="theform" method="post" action="caldemo.php">
<table>
<tr>
<tr>
<td>Event Venue:</td>
<td><input type="text" name="eventplace" size="50"></td>
</tr>
<tr>
<td>Event Name:</td>
<td><input type="text" name="eventname" size="50"></td>
</tr>
<tr>
<td>Event Time:</td>
<td><input type="text" name="eventtime" size="50"></td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="Send" name="myform">
</form>

3 ответа

Решение

Пытаться

for($j=0; $j<count($month); $j++){

  $date = strtotime("+2 week friday $month[$j] $year[$i]");
  $week = date('W', $date) ;
  $k = date('d', $date) ;

  $query = mysql_query(" INSERT INTO caldemo 
    (day, month, year, eventname, eventtime, eventplace, eventweek)
    VALUES 
    ('".$k."', '".$month[$j]."', '".$year[$i]."', '".$eventname."', 
    '".$eventtime."', '".$eventplace."', '".$week."' )")
  or die(mysql_error()) ;
}

Убрал третий for петля. Изменил аргумент на strtotime и использовал day возвращается как $k в запросе.

Пожалуйста, используйте

strtotime("$month[$j] $year[$i] third friday");

куда $month[$j] должно быть название месяца как decemberа также $year[$i] должен быть год как 2012,

Спасибо

//showDay('январь', 2017, 'пятница', 3);
showDay ("январь", 2017, "пятница", "третий", "текст");

function showDay ($ month, $ year, $ day, $ count, $ type = '') {

      $ list = array (1 => 'first', 2 => 'second', 3 => 'third', 4 => 'четвертый',5=>'пятый');
      $dayname = $list[$count];
      if($type=='text') $dayname = $count;

      дата возврата ('d', strtotime($month . ' ' . $year . ' ' . $dayname .' '.$day));
    }
Другие вопросы по тегам