Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Kalendarz z organizerem, Proszę o pomoc
Focuss
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 27.12.2010

Ostrzeżenie: (0%)
-----


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

Ten post edytował Focuss 27.12.2010, 14:30:25
Go to the top of the page
+Quote Post
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Focuss
post
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 27.12.2010

Ostrzeżenie: (0%)
-----


  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

Ten post edytował Focuss 29.12.2010, 22:48:41
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 10:44