За последние 24 часа нас посетили 18352 программиста и 1605 роботов. Сейчас ищут 934 программиста ...

Ошибка в цикле календаря

Тема в разделе "PHP для новичков", создана пользователем admyx, 30 апр 2008.

  1. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Парни, прошу помощи - а то меня скоро начальник съест с потрохами за неисполнение.

    Где-то я ошибся с календарем.
    Значит, задача такая - требуется построить календарь и при этом к каждому дню из БД взять кол-во задач на этот день.
    Собственно, календарь выводится, но список задач только на один день.
    Все остальное не работает. ВЫводит только первую задачу из БД и все((((((
    где и что я направильно делаю?

    Огромная просьба - не давать ссылки на сторонние календари, а объяснить мою ошибку!

    ХЕЕЕЛП!

    Вот как я делал

    PHP:
    1. if($_SESSION['valid_user'])
    2.  {
    3.  // kol-vo dney v tekushem mesyace
    4.  $dayofmonth = date('t');
    5.  $day_count = 1;
    6.  $num = 0;
    7.  for($i = 0; $i < 7; $i++)
    8.  {
    9.      $dayofweek = date('w', mktime(0, 0, 0, date('m'), $day_count, date('Y')));
    10.      // privodim r formatu 0-poned, 6-voskr
    11.      $dayofweek = $dayofweek - 1;
    12.      if($dayofweek == -1) $dayofweek = 6;
    13.      
    14.      if($dayofweek == $i)
    15.      {
    16.      $week[$num][$i] = $day_count;
    17.      $day_count++;
    18.      }
    19.      else
    20.      {
    21.      $week[$num][$i] = "";
    22.      }
    23.  }
    24.  // vse ostalnue nedeli ssuka mesatsa
    25.  while(true)
    26.  {
    27.      $num++;
    28.      for($i = 0; $i < 7; $i++)
    29.      {
    30.      $week[$num][$i] = $day_count;
    31.      $day_count++;
    32.      // ersli dostigli kontsa mesyaca, to vuchodim
    33.      if($day_count > $dayofmonth) break;
    34.      }
    35.      // to she blya't samoe
    36.      if($day_count > $dayofmonth) break;
    37.  }
    38.  
    39.  $id = $_SESSION['id'];
    40.  
    41.  //polychaem tekushii mesyac
    42.  $getmon = getdate();
    43.  $mon = $getmon['mon'];
    44.  
    45. //vuvodim blyat kalendar
    46.  echo '<table border="1" width="60%" height="60%">';
    47.  echo '<tr><td>ПН</td><td>ВТ</td><td>СР</td><td>ЧТ</td><td>ПТ</td><td>СБ</td><td>ВС</td>';
    48.  
    49.  for($i = 0; $i < count($week); $i++)
    50.  {
    51.  echo "<tr>";
    52.  
    53. ##############################################
    54. #############  НАЧАЛО  ПРОБЛЕМЫ ############
    55. ##############################################
    56.  
    57.  for($j = 0; $j < 7; $j++)
    58.  {
    59.  if(!empty($week[$i][$j]))
    60.  {
    61.  $sd = $week[$i][$j];
    62.  
    63.  //polychaem spisok zadach na mesyac
    64.  $gettasks = "SELECT COUNT(tmessage) FROM of_tasks WHERE tby='$id' AND tday='$sd' AND tmonth='$mon'";
    65.  $restasks = $connect->query($gettasks);
    66.  if(!$restasks) exit('no result!');
    67.  $numrows = $restasks->num_rows;   
    68.      
    69.      //esli suturday\sunday, pokazuvaem krasnui. eshe mozhno bulo bu vudelyat' mesyachnue, no yvu - tut xui ugadaesh...
    70.      echo '<td><br />';
    71.      echo $sd.'<br />';
    72.      echo 'Tasks:';
    73.      $show = $restasks->fetch_row();
    74.      echo $show[0];
    75.  
    76.      echo '<br /><a href="index.php?act=calendar&do=addtask&d='.$sd.'&m='.$mon.'">Add task...</a>';
    77.      echo '</td>';
    78.  
    79. ##############################################
    80. #############  КОНЕЦ  ПРОБЛЕМЫ##############
    81. ##############################################
    82.  
    83.  }
    84.  else echo "<td> </td>";
    85.  }
    86.  echo "</tr>";
    87.  }
    88.  echo "</table>";  
    89.  }
    90.  else
    91.  {
    92.  exit();
    93.  }
    Php 5, MySQL 5
    p.s. Прошу прощения за столько большой кусок кода.
     
  2. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Все, проблема закрыта.
    Как ни странно, сделал repair table и все заработало.