Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Kalendarz z organizerem
Forum PHP.pl > Forum > Przedszkole
Focuss
Witam
Kilka dni temu na podstawie książki PHP i MySQL. Projekty do wykorzystania napisałem krypt (przepisany skrypt) i prawie wszystko działa ok. Poprzerabiałem go oczywiście wyglądowo pod własne potrzeby ale mam kilka problemów:

1) w orginalnym skrypcie z książki nie mogę ani w kalendarzu dziennym ani w miesięczym za pomocą znaków "<" i ">" zminić na kolejny dzień lib miesiąc, pozostaje jedynie klikanie na poszczegolne daty (niestety nie mogę sobie poradzić by to naprawić"

2) dodałem możliwość pokazywania 10 najbliższych wydażeń niestety wyświela mi wszystkie a nie najbliższe

Poniżej podaje cały skypcik:

  1. <?php
  2. include 'lib/common.php';
  3. include 'lib/db.php';
  4.  
  5. setlocale(LC_ALL, 'pl_PL', 'polish_pol');
  6.  
  7. define('DAY_HR_START', 8);
  8. define('DAY_HR_END', 18);
  9.  
  10. $timestamp = (isset($_GET['t'])) ? $_GET['t'] : time();
  11.  
  12. list($month, $day, $year) = explode('/', date('m/d/Y', $timestamp));
  13. $first_day_of_month = date('w', mktime(0, 0, 0, $month, 1, $year));
  14. $total_days = date('t', $timestamp);
  15.  
  16. if (isset($_POST['submitted']))
  17. {
  18. $evt_name = (isset($_POST['evt_name'])) ? $_POST['evt_name'] : '';
  19. $evt_name = trim($evt_name);
  20. if (!$evt_name)
  21. {
  22. $evt_name = 'Nieznane';
  23. }
  24. $evt_pm = (isset($_POST['evt_pm']) && $_POST['evt_pm'] == 'yes');
  25. $evt_hour = (isset($_POST['evt_hour'])) ? (int)$_POST['evt_hour'] : 0;
  26. if ($evt_pm)
  27. {
  28. $evt_hour += 12;
  29. }
  30. if ($evt_hour == 24)
  31. {
  32. $evt_hour = 12;
  33. }
  34. else if ($evt_hour == 12)
  35. {
  36. $evt_hour = 0;
  37. }
  38. $evt_min = (isset($_POST['evt_min'])) ? (int)$_POST['evt_min'] : 0;
  39. $evt_notify = (isset($_POST['evt_notify']) &&
  40. $_POST['evt_notify'] == 'yes');
  41.  
  42.  
  43.  
  44. $query = sprintf('INSERT INTO %sCALENDAR (EVENT_NAME, EVENT_TSTAMP, ' .
  45. 'NOTIFY) VALUES ("%s", "%04d-%02d-%02d %02d:00", %d)',
  46. DB_TBL_PREFIX,
  47. mysql_real_escape_string($evt_name, $GLOBALS['DB']),
  48. $year, $month, $day,
  49. $evt_hour, $evt_min,
  50. $evt_notify);
  51. mysql_query($query, $GLOBALS['DB']);
  52. }
  53.  
  54. ?>
  55.  
  56. <table bgcolor="#ffffff" width="100%" cellpadding="0" cellspacing="0">
  57. <tr>
  58. <td width="40%" valign="top">
  59.  
  60. <?php
  61. // uklad dnia
  62. echo '<center><h2>Plan dnia</h2></center>';
  63. echo '<hr />';
  64. echo '<table width="100%" id="day_calendar">';
  65. echo '<tr id="day_calendar_header"><th width="10%"colspan="2">';
  66. echo '<a href="'. htmlspecialchars($_SERVER['PHP_SELF']) . '?t=' .
  67. strtotime('-l day', $timestamp) . '">&lt;</a> &nbsp;';
  68. echo strtoupper(strftime('%A, %d %b', $timestamp)) . ' ' . $year;
  69. echo '&nbsp; <a href="'. htmlspecialchars($_SERVER['PHP_SELF']) . '?t=' .
  70. strtotime('+l day', $timestamp) . '">&gt;</a>';
  71. echo '</th></tr>';
  72.  
  73. // wygenerowanie komorek
  74. for ($i = DAY_HR_START; $i <= DAY_HR_END; $i++)
  75. {
  76. for ($j = 0; $j < 60; $j += 30)
  77. {
  78. echo '<tr>';
  79.  
  80. if ($i < 12)
  81. {
  82. printf('<td class="time">%d:%02d %s</td>', $i, $j, 'AM');
  83. }
  84. else if ($i > 12)
  85. {
  86. printf('<td class="time">%d:%02d %s</td>', $i - 12,
  87. $j, 'PM');
  88. }
  89. else
  90. {
  91. printf('<td class="time">%d:%02d %s</td>', $i, $j, 'PM');
  92. }
  93. echo '<td width="90%" class="event">';
  94.  
  95. $query = sprintf('SELECT EVENT_NAME FROM %sCALENDAR WHERE ' .
  96. 'EVENT_TSTAMP = "%04d-%02d-%02d %02d:%02d:00"',
  97. DB_TBL_PREFIX,
  98. $year, $month, $day,
  99. $i, $j);
  100. $result = mysql_query($query, $GLOBALS['DB']);
  101.  
  102. if (mysql_num_rows($result))
  103. {
  104. while ($row = mysql_fetch_assoc($result))
  105. {
  106. echo '<div>' . htmlspecialchars($row['EVENT_NAME']) .
  107. '</div>';
  108. }
  109. }
  110. else
  111. {
  112. echo '&nbsp;';
  113. }
  114. echo '</td>';
  115. echo '</tr>';
  116. }
  117. }
  118. echo '</table>';
  119. ?>
  120. </td>
  121. <td width="35%" valign="top">
  122. <center><h2>10 najbliższych zdarzeń</h2></center>
  123. <hr />
  124.  
  125. <table width="100%" valign="top">
  126. <tr>
  127. <td align="center"><b>Data i godzina</b></td>
  128. <td align="center"><b>Zaplanowane zdarzenie</b></td>
  129. <td align="center"><b>Edycja</b></td>
  130. </tr>
  131. <tr>
  132.  
  133. <?php
  134. $sortuj="EVENT_TSTAMP";
  135. $sortujjak="ASC";
  136.  
  137. $data = "2010-12-27";
  138.  
  139.  
  140. $result = mysql_query("SELECT * FROM `xxx`.`HELION_CALENDAR` WHERE EVENT_TSTAMP > $timestamp ORDER BY $sortuj $sortujjak LIMIT 10");
  141. if(mysql_numrows($result) > 0) {
  142. while ($row=mysql_fetch_array($result)) {
  143. if($row[6] == "rezygnacja") echo"<tr style=\"text-align:center;border:1px solid #999999;background-color:#ffff00;height:30px;\">";
  144. else echo"<tr style=\"text-align:center;border:1px solid #999999;background:white;height:30px;\" onMouseOver=\"this.style.background='#8ee992'\" onMouseOut=\"this.style.background='white'\" width=\"100%\" bgcolor=\"white\">";
  145.  
  146. <td align=\"center\">$row[2]</td>
  147. <td align=\"left\">$row[1]</td>
  148. <td align=\"center\">Edytuj / <a href=\"panel_termin_usun.php?id=$row[0]\"><font color=\"#af1e2d\" size=\"1\"><b>Usuń</b></font></a></td>
  149.  
  150. </tr>
  151. ");
  152. }
  153. }
  154. ?>
  155.  
  156.  
  157.  
  158. </table>
  159. <p align="right"><a href="termin.php"><font color="#af1e2d" size="1"><b>zobacz wszystkie zdarzenia </b></font></a></p>
  160.  
  161.  
  162. </td>
  163. <td width="20%" valign="top">
  164.  
  165. <?php
  166.  
  167. // wyswietlenie kalendarza w ukladzie miesiaca
  168. echo '<center><h2>Kalendarz</h2></center>';
  169. echo '<hr />';
  170. echo '<table align="center" width="25%" id="calendar">';
  171. echo '<tr id="calendar_header"><th colspan="7">';
  172. echo '<a href="' . htmlspecialchars($_SERVER['PHP_SELF']) . '?t=' .
  173. strtotime('-l month', $timestamp) . '">&lt;</a> &nbsp;';
  174. echo strtoupper(strftime('%B', $timestamp)) . ' ' . $year;
  175. echo '&nbsp; <a href="' . htmlspecialchars($_SERVER['PHP_SELF']) . '?t=' .
  176. strtotime('+l month', $timestamp) . '">&gt;</a>';
  177. echo '</th></tr>';
  178. echo '<tr><th>Pon</th><th>Wto</th><th>Śro</th><th>Czw</th>' .
  179. '<th>Pią</th><th>Sob</th><th>Nie</th></tr>';
  180. $current = 1;
  181. while ($current <= $total_days)
  182. {
  183. echo '<tr class="calendar_dates">';
  184. for ($i = 1; $i < 8; $i++)
  185. {
  186. if (($current == 1 && $i < $first_day_of_month) ||
  187. ($current > $total_days))
  188. {
  189. echo '<td class="empty">&nbsp</td>';
  190. continue;
  191. }
  192. echo '<td><a href="' . htmlspecialchars($_SERVER['PHP_SELF']) .
  193. '?t=' . mktime(0, 0, 0, $month, $current, $year) . '">' .
  194. $current . '</a></td>';
  195. $current++;
  196. }
  197. echo '</tr>';
  198. }
  199. echo '</table>';
  200.  
  201.  
  202. //formularz dodawania zdarzeń
  203. ?>
  204. <center><h2>Dodanie zdarzenia</h2></center>
  205. <hr />
  206. <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) . '?t=' .
  207. $timestamp; ?>" method="post">
  208. <table align="center">
  209. <tr>
  210. <td class="label"><label for="evt_name">Zdarzenie:</label></td>
  211. <td><input type="text" id="evt_name" name="evt_name"></td>
  212. </tr><tr>
  213. <td class="label"><label for="evt_hour">Godzina:</label></td>
  214. <td>
  215. <select name="evt_hour" id="evt_hour">
  216. <option value="12">12</option>
  217. <?php
  218.  
  219. for ($i = 1; $i < 12; $i++)
  220. {
  221. printf('<option value="%d">%02d</option>', $i, $i);
  222. }
  223. ?>
  224. </select> : <select name="evt min">
  225. <?php
  226. for ($i = 0; $i < 59; $i += 30)
  227. {
  228. printf('<option value="%d">%02d</option>', $i, $i);
  229. }
  230. ?>
  231. </select>
  232. <select name="evt_pm">
  233. <option value="no">AM</option>
  234. <option value="yes">PM</option>
  235. </select>
  236. </td>
  237. </tr><tr>
  238. <td class="label">Powiadomienie</td>
  239. <td>
  240. <input type="radio" name="evt_notify" id="evt_notify_yes" value="yes" checked="checked"/>
  241. <label for="evt_notify_yes">Tak</label>
  242. <input type="radio" name="evt_notify" id="evt_notify_no" value="no" />
  243. <label for="evt_notify_no">Nie</label>
  244. </td>
  245. </tr><tr>
  246. <td></td>
  247. <td>
  248. <input type="hidden" name="submitted" value="true"/>
  249. <input type="submit" value="Dodaj zdarzenie">
  250. </td>
  251. </tr>
  252. </table>
  253. </form>
  254. <center><h2>Pozostałe zdarzenia</h2></center>
  255. <hr />
  256. <?php
  257.  
  258. //odczytanie i wyswietlenie zdarzen, ktore wykraczają poza godziny w widoku dnia
  259. $query = sprintf( 'SELECT EVENT_NAME, UNIX_TIMESTAMP(EVENT_TSTAMP) AS ' .
  260. 'EVENT_TSTAMP FROM %sCALENDAR WHERE EVENT_TSTAMP NOT BETWEEN ' .
  261. '"%4d-%02d-%02d %02d:00:00" AND "%4d-%02d-%02d %02d:59:59" ORDER BY ' .
  262. 'EVENT_TSTAMP ASC, EVENT_NAME ASC',
  263. DB_TBL_PREFIX,
  264. $year, $month, $day, DAY_HR_START,
  265. $year, Smonth, $day, DAY_HR_END);
  266. $result = mysql_query($query, $GLOBALS['DB']);
  267.  
  268. echo '<ul>';
  269. if (mysql_num_rows(Sresult))
  270. {
  271. while ($row = mysql_fetch_assoc($result))
  272. {
  273. echo '<li>' . date('h:i A - ', $row['EVENT_TSTAMP']) .
  274. htmlspecialchars($row['EVENTJAME']) . '</li>';
  275. }
  276. } else
  277. {
  278. echo '<p><i>Nie zaplanowano innych zdarzeń</i></p>';
  279. }
  280. echo '</ul>';
  281.  
  282. ?>
  283. </td>
  284. </tr>
  285. </table>
  286.  
  287.  


Proszę o pomoc jak rozwiązać w/w problemy,
Dziekuje i przepraszam za bałagan w kodzie

punkt 2 udało mi się już rozwiązać, jeżeli ktoś by mi pomógł z punktem 1 to byłbym wdzięczny
tehaha
opisz dokładnie problem, co chcesz uzyskać, co zrobiłeś, czym się objawia nie działanie, czy jakiś błąd wywala?? i w których linijkach jest ten fragment, bo nikomu się nie chce siedzieć i analizować 300 linijek, jak masz możliwość to pokaż online
Focuss
  1. echo '<table width="100%" id="day_calendar">';
  2. echo '<tr id="day_calendar_header"><th width="10%"colspan="2">';
  3. echo '<a href="'. htmlspecialchars($_SERVER['PHP_SELF']) . '?t=' .
  4. strtotime('-l day', $timestamp) . '">&lt;</a> &nbsp;';
  5. echo strtoupper(strftime('%A, %d %b', $timestamp)) . ' ' . $year;
  6. echo '&nbsp; <a href="'. htmlspecialchars($_SERVER['PHP_SELF']) . '?t=' .
  7. strtotime('+l day', $timestamp) . '">&gt;</a>';
  8. echo '</th></tr>';


Mam nagłówek kalendarza który wygląda tak: < Środa 29, GRU 2010 >
i teraz chciałbym by te ptaszki przerzucały mnie na następny dzień natomiast po kliknięciu na nie pokazuje mi sie < > i nie a już żadnego dnia ani nic sie nie da zrobić.
Kod skrypt calego kalendarza dziala wszystko jest ok procz tego.
To samo jest bo obok jest kalendarz miesieczny:

  1.  
  2. echo '<center><h2>Kalendarz</h2></center>';
  3. echo '<hr />';
  4. echo '<table align="center" width="25%" id="calendar">';
  5. echo '<tr id="calendar_header"><th colspan="7">';
  6. echo '<a href="' . htmlspecialchars($_SERVER['PHP_SELF']) . '?t=' .
  7. strtotime('-l month', $timestamp) . '">&lt;</a> &nbsp;';
  8. echo strtoupper(strftime('%B', $timestamp)) . ' ' . $year;
  9. echo '&nbsp; <a href="' . htmlspecialchars($_SERVER['PHP_SELF']) . '?t=' .
  10. strtotime('+l month', $timestamp) . '">&gt;</a>';
  11. echo '</th></tr>';
  12. echo '<tr><th>Pon</th><th>Wto</th><th>Śro</th><th>Czw</th>' .
  13. '<th>Pią</th><th>Sob</th><th>Nie</th></tr>';
  14. $current = 1;
  15. while ($current <= $total_days)
  16. {
  17. echo '<tr class="calendar_dates">';
  18. for ($i = 1; $i < 8; $i++)
  19. {
  20. if (($current == 1 && $i < $first_day_of_month) ||
  21. ($current > $total_days))
  22. {
  23. echo '<td class="empty">&nbsp</td>';
  24. continue;
  25. }
  26. echo '<td><a href="' . htmlspecialchars($_SERVER['PHP_SELF']) .
  27. '?t=' . mktime(0, 0, 0, $month, $current, $year) . '">' .
  28. $current . '</a></td>';
  29. $current++;
  30. }
  31. echo '</tr>';
  32. }
  33. echo '</table>';


i tu również w/w ptaszki nie przerzucają na kolejny dzień. jedyna nawigacja po kalendarzach jest poprzez klikanie na poszczegolna date na kalendarzu miesiecznym

Czy ktoś może pomoc
dziekuje
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.