Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]plan pracy
Forum PHP.pl > Forum > Przedszkole
skabszo
witam chcę stworzyć skrypt który polega na tym iż użytkownik wyznacza godziny w których chce pracować. Jest siedem dni tygodnia i do każdego są dwa pola rozwijane:
  1. <form action="" method="post" name="worklog">
  2. <p>monday</p>
  3. <select name="monday_start">
  4. <option>6:00</option>
  5. <option>7:00</option>
  6. <option>8:00</option>
  7. <option>9:00</option>
  8. <option>10:00</option>
  9. <option>11:00</option>
  10. <option>12:00</option>
  11. <option>13:00</option>
  12. <option>14:00</option>
  13. <option>15:00</option>
  14. <option>16:00</option>
  15. <option>17:00</option>
  16. <option>18:00</option>
  17. <option>19:00</option>
  18. <option>20:00</option>
  19. <option>21:00</option>
  20. <option>22:00</option>
  21. <option>OFF</option>
  22. <select name="monday_stop">
  23. <option>6:00</option>
  24. <option>7:00</option>
  25. <option>8:00</option>
  26. <option>9:00</option>
  27. <option>10:00</option>
  28. <option>11:00</option>
  29. <option>12:00</option>
  30. <option>13:00</option>
  31. <option>14:00</option>
  32. <option>15:00</option>
  33. <option>16:00</option>
  34. <option>17:00</option>
  35. <option>18:00</option>
  36. <option>19:00</option>
  37. <option>20:00</option>
  38. <option>21:00</option>
  39. <option>22:00</option>
  40. <option>OFF</option>
  41. <p>tuesday</p>
  42. <select name="tuesday_start">
  43. <option>6:00</option>
  44. <option>7:00</option>
  45. <option>8:00</option>
  46. <option>9:00</option>
  47. <option>10:00</option>
  48. <option>11:00</option>
  49. <option>12:00</option>
  50. <option>13:00</option>
  51. <option>14:00</option>
  52. <option>15:00</option>
  53. <option>16:00</option>
  54. <option>17:00</option>
  55. <option>18:00</option>
  56. <option>19:00</option>
  57. <option>20:00</option>
  58. <option>21:00</option>
  59. <option>22:00</option>
  60. <option>OFF</option>
  61. <select name="tuesday_stop">
  62. <option>6:00</option>
  63. <option>7:00</option>
  64. <option>8:00</option>
  65. <option>9:00</option>
  66. <option>10:00</option>
  67. <option>11:00</option>
  68. <option>12:00</option>
  69. <option>13:00</option>
  70. <option>14:00</option>
  71. <option>15:00</option>
  72. <option>16:00</option>
  73. <option>17:00</option>
  74. <option>18:00</option>
  75. <option>19:00</option>
  76. <option>20:00</option>
  77. <option>21:00</option>
  78. <option>22:00</option>
  79. <option>OFF</option>
  80. <p>wednesday</p>
  81. <select name="wednesday_start">
  82. <option>6:00</option>
  83. <option>7:00</option>
  84. <option>8:00</option>
  85. <option>9:00</option>
  86. <option>10:00</option>
  87. <option>11:00</option>
  88. <option>12:00</option>
  89. <option>13:00</option>
  90. <option>14:00</option>
  91. <option>15:00</option>
  92. <option>16:00</option>
  93. <option>17:00</option>
  94. <option>18:00</option>
  95. <option>19:00</option>
  96. <option>20:00</option>
  97. <option>21:00</option>
  98. <option>22:00</option>
  99. <option>OFF</option>
  100. <select name="wednesday_stop">
  101. <option>6:00</option>
  102. <option>7:00</option>
  103. <option>8:00</option>
  104. <option>9:00</option>
  105. <option>10:00</option>
  106. <option>11:00</option>
  107. <option>12:00</option>
  108. <option>13:00</option>
  109. <option>14:00</option>
  110. <option>15:00</option>
  111. <option>16:00</option>
  112. <option>17:00</option>
  113. <option>18:00</option>
  114. <option>19:00</option>
  115. <option>20:00</option>
  116. <option>21:00</option>
  117. <option>22:00</option>
  118. <option>OFF</option>
  119. <p>thursday</p>
  120. <select name="thursday_start">
  121. <option>6:00</option>
  122. <option>7:00</option>
  123. <option>8:00</option>
  124. <option>9:00</option>
  125. <option>10:00</option>
  126. <option>11:00</option>
  127. <option>12:00</option>
  128. <option>13:00</option>
  129. <option>14:00</option>
  130. <option>15:00</option>
  131. <option>16:00</option>
  132. <option>17:00</option>
  133. <option>18:00</option>
  134. <option>19:00</option>
  135. <option>20:00</option>
  136. <option>21:00</option>
  137. <option>22:00</option>
  138. <option>OFF</option>
  139. <select name="thursday_stop">
  140. <option>6:00</option>
  141. <option>7:00</option>
  142. <option>8:00</option>
  143. <option>9:00</option>
  144. <option>10:00</option>
  145. <option>11:00</option>
  146. <option>12:00</option>
  147. <option>13:00</option>
  148. <option>14:00</option>
  149. <option>15:00</option>
  150. <option>16:00</option>
  151. <option>17:00</option>
  152. <option>18:00</option>
  153. <option>19:00</option>
  154. <option>20:00</option>
  155. <option>21:00</option>
  156. <option>22:00</option>
  157. <option>OFF</option>
  158. <p>friday</p>
  159. <select name="friday_start">
  160. <option>6:00</option>
  161. <option>7:00</option>
  162. <option>8:00</option>
  163. <option>9:00</option>
  164. <option>10:00</option>
  165. <option>11:00</option>
  166. <option>12:00</option>
  167. <option>13:00</option>
  168. <option>14:00</option>
  169. <option>15:00</option>
  170. <option>16:00</option>
  171. <option>17:00</option>
  172. <option>18:00</option>
  173. <option>19:00</option>
  174. <option>20:00</option>
  175. <option>21:00</option>
  176. <option>22:00</option>
  177. <option>OFF</option>
  178. <select name="friday_stop">
  179. <option>6:00</option>
  180. <option>7:00</option>
  181. <option>8:00</option>
  182. <option>9:00</option>
  183. <option>10:00</option>
  184. <option>11:00</option>
  185. <option>12:00</option>
  186. <option>13:00</option>
  187. <option>14:00</option>
  188. <option>15:00</option>
  189. <option>16:00</option>
  190. <option>17:00</option>
  191. <option>18:00</option>
  192. <option>19:00</option>
  193. <option>20:00</option>
  194. <option>21:00</option>
  195. <option>22:00</option>
  196. <option>OFF</option>
  197. <p>saturday</p>
  198. <select name="saturday_start">
  199. <option>6:00</option>
  200. <option>7:00</option>
  201. <option>8:00</option>
  202. <option>9:00</option>
  203. <option>10:00</option>
  204. <option>11:00</option>
  205. <option>12:00</option>
  206. <option>13:00</option>
  207. <option>14:00</option>
  208. <option>15:00</option>
  209. <option>16:00</option>
  210. <option>17:00</option>
  211. <option>18:00</option>
  212. <option>19:00</option>
  213. <option>20:00</option>
  214. <option>21:00</option>
  215. <option>22:00</option>
  216. <option>OFF</option>
  217. <select name="saturday_stop">
  218. <option>6:00</option>
  219. <option>7:00</option>
  220. <option>8:00</option>
  221. <option>9:00</option>
  222. <option>10:00</option>
  223. <option>11:00</option>
  224. <option>12:00</option>
  225. <option>13:00</option>
  226. <option>14:00</option>
  227. <option>15:00</option>
  228. <option>16:00</option>
  229. <option>17:00</option>
  230. <option>18:00</option>
  231. <option>19:00</option>
  232. <option>20:00</option>
  233. <option>21:00</option>
  234. <option>22:00</option>
  235. <option>OFF</option>
  236. <p>sunday</p>
  237. <select name="sunday_start">
  238. <option>6:00</option>
  239. <option>7:00</option>
  240. <option>8:00</option>
  241. <option>9:00</option>
  242. <option>10:00</option>
  243. <option>11:00</option>
  244. <option>12:00</option>
  245. <option>13:00</option>
  246. <option>14:00</option>
  247. <option>15:00</option>
  248. <option>16:00</option>
  249. <option>17:00</option>
  250. <option>18:00</option>
  251. <option>19:00</option>
  252. <option>20:00</option>
  253. <option>21:00</option>
  254. <option>22:00</option>
  255. <option>OFF</option>
  256. <select name="sunday_stop">
  257. <option>6:00</option>
  258. <option>7:00</option>
  259. <option>8:00</option>
  260. <option>9:00</option>
  261. <option>10:00</option>
  262. <option>11:00</option>
  263. <option>12:00</option>
  264. <option>13:00</option>
  265. <option>14:00</option>
  266. <option>15:00</option>
  267. <option>16:00</option>
  268. <option>17:00</option>
  269. <option>18:00</option>
  270. <option>19:00</option>
  271. <option>20:00</option>
  272. <option>21:00</option>
  273. <option>22:00</option>
  274. <option>OFF</option>
  275. <input type="submit" name="wyslij" value="wyslij_dane">
  276. </form>
OFF oznacza wolne. Po wypełnieniu całości i kliknięcu na wyslij chcę by dane zostały zapisane do bazy mysql. Baza ta składa się z 2 tabel:
+ users - gdzie są pola id,username,password
+ worklog - z polami id,user_id,data,start_time,end_time
Nie wiem czy ta druga tabela jest dobrze skonstruowana - generalnie mam prosty system logowania który korzysta z tabeli users i chcę by po zalogowaniu użytkownik mógł własnie wypełnić i wysłać do bazy te dane. Problemem dla mnie jest kilka kwestii:
1. Czynność wypełniania formularza powtarzać się będzie co tydzień więc jak zrobić by w bazie trzymane były tylko dane ze ściśle określonego tygodnia np 10.01.2010-16.01.2010?
2. czy w związku z pytaniem nr 1 okresy tych tygodni muszę ustalać na sztywno w pliku czy za pomocą jakieś funkcji mogę po prostu określić sobie interwał?
3. Znalazłem sobie w internecie bibliotekę simpleXML za pomocą której chciałbym dane zapisywać sobie do pliku - by po odpaleniu plik.xml byliby wyszczególnieni wszyscy z bazy z podziałem na dni tygodnia i godziny w których mogą pracować. Czy ta biblioteka jest dobra to tego celu czy istnieje jakieś lepsze rozwiazanie?

prosiłbym o wszelkie wskazówki smile.gif
sunpietro
Mam nadzieję, że te selecty masz w jakiejś klasie je generującej.
Bo takie kopiowanie tych selectów jest po prostu nienajlepszą techniką kodowania.
skabszo
no tak oczywiście że będzie klasa generująca. Generalnie bardziej mi chodzi o pozostałe kwestie..
reaktor
Dlaczego w bazie musza byc dane tylko z ostatniego tygodnia? Po prostu dodawaj kolejne rekordy, ale zostaw historie -pobieranie danych tylko za aktualny tydzien nie bedzie wcale trudne, za to bedzie widac kto kiedy pracowal smile.gif
Ale jesli tak byc musi, to mozesz stworzyc skrypt kasujacy zeszly tydzien, ktory bedzie uruchamiany np w poniedzialek o godz 00.01

Do zorientowania sie w calym tym tygodniowym balaganie moga Ci przydac takie konstrukcje:
  1.  
  2. echo "Data poczatku ostatniego tygodnia: " . date("Y-m-d", strtotime("last week")) . "\n";
  3. echo "Data najblizszej srody: " . date("Y-m-d", strtotime("next wednesday"));

skabszo
a do historii w takim razie musiałbym stworzyć pewnei nową tabelę worklog_history tak? smile.gif
reaktor
Ależ skąd, wszystko będzie w worklog; musisz tylko dbac o to, aby wstawiajac dane np za czwartek prawidlowo wyliczyc wartosc do wstawienia w kolumnie `date`. Zeby zobaczyc aktualny plan pobieral bedziesz sobie tylko najswiezszy tydzien.
O "performans" bym sie na Twoim miejscu nie martwil winksmiley.jpg, zaloz tylko indeksy na `user_id` oraz `date`.
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.